[HN Gopher] Go Developer Survey 2019 Results
       ___________________________________________________________________
        
       Go Developer Survey 2019 Results
        
       Author : ainar-g
       Score  : 98 points
       Date   : 2020-04-20 19:17 UTC (3 hours ago)
        
 (HTM) web link (blog.golang.org)
 (TXT) w3m dump (blog.golang.org)
        
       | ayoisaiah wrote:
       | Suprised to see Vim usage decreasing every year. Presumably most
       | are defecting to Goland
        
         | alrs wrote:
         | I doubt anyone is defecting in any numbers, but that the unix
         | die-hards are being diluted by an influx of developers who
         | prefer an IDE.
        
       | habosa wrote:
       | Soon Go will have both generics and package management, two
       | things the maintainers really didn't think it needed on Day One.
       | I don't say this to insult anyone, Go has always been a great and
       | unique language. I say this as a plea to any aspiring language
       | designers out there: please don't try to make a modern general
       | purpose language without these things. We really do need them.
        
       | wgyn wrote:
       | My hot takes...
       | 
       | 1) Fast adoption of GoLand/IntelliJ (and death of Sublime/Atom)
       | 
       | 2) Nearly complete adoption of modules (my company is behind!)
       | 
       | 3) "I feel welcome in the Go community" dipped from 82% to 75%.
       | Anecdotally most people in Go are really nice but some people are
       | aggressively pedantic (don't call it the Golang community!)
        
       | lawl wrote:
       | I feel like the answer to "what prevents you from better
       | debugging/profile" that's dominant, "lack of
       | knowledge/experience" may be more of a catch-all than actually
       | highlight a problem.
       | 
       | Like, there's always something you can do better, most people
       | don't want to claim they know everything. So in a survey I'd
       | probably check that box/type that answer even if I didn't have an
       | actual problem.
        
       | swagonomixxx wrote:
       | > Does your organization manage their own internal go
       | documentation server (similar to godoc.org)? > No (85%)
       | 
       | I would be very open to setting this up at my org - is there a
       | canonical way to do this?
       | 
       | > What is the biggest challenge you personally face using Go
       | today? > Working with modules / vendoring / pkg mgmt 12%
       | 
       | Go has come a long way since the solutions in the early days and
       | is now supremely better than it every was. However, vendoring is
       | still confusing, and it's unclear when one should commit vendor
       | files (we did that at one of the places I used to work) and when
       | one shouldn't. We kept getting afraid that one day some guy would
       | just delete that repo off GitHub, or somebody would end up
       | hacking it, then we can't get an important fix out into prod. I'm
       | not sure if the Go team has any advice regarding this.
       | 
       | > What is the biggest challenge you personally face using Go
       | today? > Issues with tooling 12%
       | 
       | I think Go in general has become very mature. From a tooling
       | standpoint it's almost feature complete. The only thing I would
       | like to see there is better autocomplete and tooling around
       | calling C from Go but I know that's kind of hard to achieve. I
       | frequently work with C libraries that I have to call from Go
       | because Go is simply easier to write than C, but I don't think
       | that Cgo has good integration with gopls at the moment (and I
       | don't think it did in any other tooling that I've used).
        
         | zachgersh wrote:
         | RE: modules and vendoring, you should no longer have to worry
         | about a package going away now that proxies have been
         | introduced (the default proxy right now being
         | proxy.golang.org).
         | 
         | You should be able to pull all your modules from a proxy, minus
         | any private repos you control (which you can either setup our
         | own proxy for OR set The GOPROXY var to go direct to vcs for
         | it).
         | 
         | Also, not vendoring should give you a smaller repo and build
         | speed shouldn't suffer too much (proxy caching and such).
        
           | swagonomixxx wrote:
           | Ah good point about GOPROXY.
           | 
           | So if I have a mix of private and public dependencies that I
           | pull in, can I specify a specific proxy for the private ones?
           | Is it the GOPRIVATE env var?
        
             | chairmanwow1 wrote:
             | The proxy should maintain a copy of all dependencies
             | (public and private), so only one should be necessary.
        
               | zachgersh wrote:
               | This should be clarified, if you setup YOUR OWN proxy it
               | can handle both public and private modules (side note I
               | haven't been able to verify this yet with artifactory).
               | 
               | You can also just let your GOPROXY fallback go "direct"
               | which will then go straight to vcs (you need to make sure
               | you have a gitconfig setup to redirect https to ssh).
        
       | xemdetia wrote:
       | I'm really hoping that gopls gets to 1.0 soon. I feel like gopls
       | is the elephant in the room that's taking a lot of air from some
       | of the smaller tools, and I'm glad it's being called out as a
       | priority in this report.
        
         | adonese wrote:
         | It has gotten more fixes in the last couple of releases. I now
         | in situation where it works in vscode as it used to with
         | gopath. But yeah that was very painful
        
       | kris-s wrote:
       | Between languages like Go, Rust, Swift, and others I feel pretty
       | optimistic about these new players (and I very much prefer more
       | language diversity).
       | 
       | No surprise to see generics being so strongly pined for again.
       | Very curious about how Go getting generics will change its
       | position in the landscape.
        
         | vardump wrote:
         | > ...how Go getting generics will change its position in the
         | landscape.
         | 
         | I think it'll have a minimal immediate effect. It'll quieten
         | the vocal ones, but being a pragmatic bunch of people, most
         | golang users just won't care much, at least at first. No doubt
         | libraries will adopt it over time. Other golang projects will
         | slowly follow.
        
           | jeremyjh wrote:
           | I think this is right. Few people will say "oh Go has
           | generics let me start using it now". But at the same time we
           | shouldn't underestimate the benefit improved libraries could
           | have on adoption in the long-run. I've heard several people
           | say they just are not happy with any ORM in the Go ecosystem,
           | for example and I think that situation would improve
           | significantly with generics.
        
             | c-cube wrote:
             | That's hard to measure. If Go had sum types and generics
             | I'd be more willing to give it a serious try , but in its
             | current state I don't see myself writing complex
             | algorithmic code in it. Maybe other people feel the same,
             | especially among the crowd already used to static typing.
        
         | swagonomixxx wrote:
         | If Go ends up getting generics it will be a serious competitor
         | to Java in the enterprise small-medium size application space,
         | and perhaps make it viable for larger applications.
         | 
         | So I think it will be a huge step up for Go. This is of course
         | if they do it in such a way that does not increase language
         | complexity by an order of magnitude (e.g C++ style templates).
         | I think Java style generics is not as complex and something
         | along those lines would be a huge win IMO.
        
           | haolez wrote:
           | What if "huge applications" is a bad pattern and Go is
           | pushing forward in the right direction? :)
        
           | hvs wrote:
           | I'm probably not representative, but when I last really tried
           | to use Go on a project seriously the lack of generics and the
           | way that errors were handled became a real blocker for me.
           | Which is unfortunate, because I really wanted to like the
           | language and did for the most part. But those two things made
           | development feel like a real chore.
           | 
           | Again, I don't expect my personal preferences to dictate
           | language development. Clearly many do not feel the way I do,
           | but I do find it telling that those were the top two
           | complaints. The pain is real, at least to a subset of us.
        
           | enitihas wrote:
           | Java is moving to complicated generics though, see project
           | Valhalla, although not like C++ templates, but more about
           | specialization for primitive types, which can be a huge
           | performance win.
        
             | swagonomixxx wrote:
             | Interesting, I haven't heard of Valhalla (I haven't really
             | used Java since around 2014). From their landing page it
             | seems like their priorities are value types (which Go
             | already has - you need to specify pointer types explicitly)
             | and support value types as generic type parameters, which
             | Go has to do, because it has value types.
             | 
             | I guess it will complicate things a bit, you're right. I'm
             | pretty happy I don't have to use Java anymore though :)
        
         | jeremyjh wrote:
         | > No surprise to see generics being so strongly pined for
         | again. Very curious about how Go getting generics will change
         | its position in the landscape.
         | 
         | Well, only 25% of respondents said there were _any_ features
         | blocking adoption; and of _that_ group yes the majority want
         | generics. Since this is a survey of Go developers, it is not
         | surprising to find out that a very solid majority find the
         | language usable as it is. I think this also limits what this
         | particular survey can tell us about the uptick in adoption you
         | might see if that feature ever lands.
        
       | rmdashrfstar wrote:
       | I only read the tl;dr, but I expected some questions centered
       | around most commonly identified missing features in Go (i.e.
       | first class support for enumerations, generics, naked return,
       | compiler generating similar code for named vs unnamed returns,
       | etc.)
        
       | throwawaygo wrote:
       | ~60% of respondents have <2 years experience with the language.
       | 
       | I'd really like to see this filtered to developers with >5 years
       | go experience. What do the experienced go devs want from the
       | language? How do they use it?
       | 
       | I've got a little over 9 years of almost daily use and I have
       | little in common with the devs in my org that are earlier in
       | their career and coming to go with a head full of some other
       | language.
        
         | swagonomixxx wrote:
         | Out of curiosity, at what point do you consider someone a
         | seasoned Go developer? Is it 5 years or is it more?
         | 
         | I've been using Go since 2015 and I still feel like I'm not as
         | seasoned as I perhaps should be (I'm not really an enthusiast
         | of the language, I just think it's the right tool to use for
         | 95%+ of the stuff I'm working on right now).
        
           | throwawaygo wrote:
           | Hard to quantify. Time in language should roughly track.
           | Maybe number of companies/projects developed.
           | 
           | Any of the dimensions you could imagine would be good
           | starting points.
        
       ___________________________________________________________________
       (page generated 2020-04-20 23:00 UTC)