12 ms·
Go Developer Survey 2019 Results
- rmdashrfstar 7y agoI 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.)
- cy_hauser 7y agoThey do touch on these issues but only barely. The survey is more about who's using Go the way it is now and how can we help with adoption with what Go is. The survey is not necessarily intended to be a how might we make the Go core language different or "better" sort of thing. Remember, for a lot of Go developers Go _is_ fine the way it is now. You may get a different set of developers if you add features but you also may lose those who like it the way it is now. There are a lot of applications coded that just don't have a need for the features you mention.
- xemdetia 7y agoI'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.
- atombender 6y agoI've been following it since the first public release. It's still, unfortunately, very buggy. I restart gopls perhaps 20-30 times a day, working in VSCode. I have to restart it every time I switch git branches or do other major file changes that completely break its mind. I try to report every bug I find, but bug-reporting is even more of a productivity killer than the bugs. It's often difficult to reproduce exactly when they depend on an exact order of events. Sometimes it's just seems infuriatingly like incompetence. After struggling for hours with gopls suddenly going insane the other day (i.e. even a restart wouldn't fix things), I realized gopls doesn't understand build tags, and will just fail in random ways on code that has a "// +build" comment. The gopls team knows perfectly well tags are not supported, but instead of warning you when you open the file, which would be the sensible option, they just let gopls mismanage it. I really hope gopls reaches maturity soon, or I'll have to consider GoLand instead, which seems to have gotten this right.
- adonese 7y agoIt 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 7y agoBetween 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.
- swagonomixxx 7y agoIf 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.
- enitihas 7y agoJava 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 7y agoInteresting, 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 :)
- uluyol 7y agoMore complicated for the JVM to implement, sure, but if anything, won't this simplify the semantics? Users don't need to worry about boxing/unboxing values.
- swagonomixxx 7y ago> 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 7y agoRE: 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 7y agoAh 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?
- 7y ago
- throwawaygo 7y ago~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 7y agoOut 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 7y agoHard 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.
- tandr 7y agoIf it is not too much to ask: Do you still enjoy it? What _your_ biggest pain points with language/community/process etc?
- ayoisaiah 7y agoSuprised to see Vim usage decreasing every year. Presumably most are defecting to Goland
- alrs 7y agoI 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.
- noisy_boy 7y agoEven unix die-hards can see the benefits. I stuck to using vim for years and years until I ventured in learning some new languages and explored VSCode. Then I started working with Java and found IntelliJ. The gains when the IDE is actively working with you to autocomplete/point out errors/warnings/code formatting etc are undeniable. Recently I copied a Python script from Linux side to VSCode - the window basically lit up with suggetions/warnings about unused imports etc etc - and this is when the script was working fine in Linux. Cleaning up the code was super easy too. In case it is not obvious, I love *nix and I'm totally for modern IDEs. PS: I'm aware that a lot of these can be achieved by vim plugins/formatters etc - I do use some. But I can't be pursued to code Java in vim vs IntelliJ; its just not the same.
- lawl 7y agoI 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.
- wgyn 7y agoMy 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!)
- tptacek 7y agoI've been a Go programmer for many years, and I like the language and the community, but I have not found it to be uniformly welcoming. "Aggressively pedantic" is a good way to put it.
- alharith 7y agoI have been to 4 Go conferences (two gophercons). Despite being first generation mediterranean-descent (my father is the exact immigrant story touted in many circles), because I fit the 'white christian male' bill, I have felt anything but welcome in the Go community. Actually, many times, I feel like it is actively hostile towards me. I remember one of the closing keynotes, a man stood up on the stage and said "Come take a picture with me out back if you look like me, you know who you are" which left me with my jaw dropped.
- randomdude402 7y agoNot looking to put a bunch of negative energy out about it, but I know what you mean and you're right.
- Carpetsmoker 7y agoI've been to 2 Go conferences myself, and had an absolutely fantastic time. Great people all-around. But ... the online experience here is a bit different from the conference experience.
- sidlls 7y agoI am missing something. Do you mean you feel there is a hostility toward those who fit the "white christian male" bill?
- habosa 7y agoSoon 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.
- hello_moto 7y ago> two things the maintainers really didn't think it needed on Day One Deep down they know they need these in order for the language to survive in the modern world. I'm guessing that the reason they chose that tone back then was because they wanted to release the language as small as possible so that people can start using, learning, and grow in moderate fashion. And also they can't solve all problems at once.
- eloff 7y agoActually, I think the success of Go has proven the contrary. You can make a modern language without those features. In fact for an MVP you want to cut difficult or not absolutely necessary features from the first version. So I think Go did fine here and I encourage other language designers to follow their lead. One cavaet is if you don't think about at least how generics might work in your language in a backward compatible way, you box in your future options. See java for how this goes poorly. If you look at the generics proposals for Go you see how this has greatly complicated the task. That doesn't automatically mean it was a mistake to do it that way though. If you try to do everything at the beginning you might take so long that you fail outright or don't get the early adopters who help shape the language. Plus you'd be behind the curve on adoption. So I think Go did the smart thing here.
- StandardFuture 7y agoYou and the parent are correct. Package management and generics are essentials for any general-purpose programming language. But, they fall lower than many other features (like syntactic consistency and simplicity) ranked by importance for developer productivity and usefulness.
- preommr 7y agoI am stunned by how many people actually like working with go. As a language, I've always thought it was horrible. But as an option for tasks like network programming, devops, setting up a web service, it's one of the best. So I understand it's popularity, and I reach for it frequently as well, but not happily like others seem to.
- deleted 7y ago[deleted]
- throw_m239339 7y agoDepends on where you come from. From C, it's basically what you did with C with bells and whistles (multiple return types instead of OUT parameters for instance). From Scala/Java/C#, if you really like working with these languages, I don't think you'd enjoy Go. And while Goroutines sound nice at first, they come with many issues that languages that had similar concepts (like ADA tasks) did not have.
- tyrankh 7y ago> Problems Such as? :)
- shay_ker 7y agoI’m pretty new to Go, and I recently tried to get delve working with VS Code and it was a pretty rough experience (VS Code in general wasn’t as polished for Go as I’d hoped). Using Delve via the command line was even harder for me to figure out. My experience debugging in dynamic languages has just been so much easier. Just add a single line anywhere and boom - a repl exactly where you want it. I don’t mind IntelliJ for Java either (a big difference being that it has a free community edition). I know Go is different than dynamic languages, but I wish the UX of debugging was simpler, or that there’s a free IDE that makes it easy. I’ve also heard you can “replay” easily with Delve, which sounds amazing if it was easy to figure out!
- tomlu 7y agoIf you are a professional programmer then paying $200 for a Goland license could ameliorate some of your complaints.
- pjmlp 7y ago> What critical language features do you need that are not avaliable in Go? ==> Generics 79% > what's the biggest challenge you personally face using Go today? ==> Generics 15% Really? What a surprise. /s Still wondering if Go 2.0 will actually happen, or be torpedoed like the error improvements. Anyway, the work appears to be ongoing here https://go-review.googlesource.com/c/go/+/187317 https://go-review.googlesource.com/c/go/+/187317
- tandr 7y agoThere is no Go 2.0. They kind of decided to introduce non-breaking changes slowly and that's it for now. Nobody (from the team at least) even talks about 2.0 anymore.
- pjmlp 7y agoSure there is, even if as concept, or milestone mark of what it is supposed to mean in language features. The team does speak about it, as the Go 2.0 labels are pretty much still being used, and mentioned in code reviews or occasional emails.
- sl1ck731 7y agoWhen it says "I primarily develop Go on...Linux|Mac|Windows|Etc", is this question referring to the platform the project is intended to run on? Or is it the platform people are actually using their IDE in? I'm just surprised that Linux only is so high and Windows so low if its referring to the "workstation".
- calcifer 7y ago> is this question referring to the platform the project is intended to run on? Or is it the platform people are actually using their IDE in? I think it's pretty obvious, no? "develop Go on" seems pretty self explanatory.
- aganame 7y agoI'm surprised anyone beyond C# and game programmers still code on Windows. It must be constant agony.
- sl1ck731 6y agoIts not that I want to, its what is given to me. I've personally not seen any companies providing Linux workstations which was my surprise. It isn't that bad to me anyway, developing in containers with vscode or WSL works just fine 99% of the time for what I do. But that adds confusion to the question for me.
- idoubtit 7y agoThis interpretation makes an obvious mistake at the end of the "Sentiments toward Go" section. The question asked was: > Rank the following programming languages in terms of your preference And the blog writes: > people who responded to the Go Developer Survey tended to like Go. > However, we also wanted to understand which other languages respondents enjoy working with. For some tasks, I would prefer to work with Python or Bash, though I dislike these languages. I rarely enjoy programming with Python, but I sometimes prefer its environment, especially its universality and some specific libraries. I suppose I'm not a single counter-example where "prefer to use" does not mean "enjoy using".
- throwaway77384 7y agoInteresting to see. Been a computer-person all my life, but only started programming with Python like 4 years ago. Switched from Python to Go after about a year. Go just seemed much easier to work with. I have still, to this day, not made a single penny with Go. Never been a professional programmer. It's so weird to think that I'm still trying to learn more and more about it and use it for _something_. Go really pulled me in somehow. I blame Todd McLeod and Jon Calhoun ;) Ultimately the value of Go for me seemed to be quick-access to lots of buzzwordy things I wanted to make use of. Concurrency, web-apps, internet / online - infrastructure things. (Funnily enough I still don't use concurrency much or properly at all. Like, years in and I still don't.) There is hardly a greater feeling than to make something work, to figure something out. To know you've learned something. I just hope that one day that will actually turn into money. That seems to be the trickiest part. Hmmmm.
- syndacks 7y agoI'm curious what it is that you do for work? You mention not making money from Go (or programming) -- what are your goals? Is it a startup kind of thing, or employment as a developer? I feel like you could probably get a job if you're familiar with Go and Python you can probably start interviewing.
- throwaway77384 6y agoI was a (technical, mostly) project manager for about 10 years and then decided I didn't like that career anymore. I am indeed trying to get a small product out there. If, however, that does not work, I'd be looking into employment as a developer. It's kind of hard to gauge how I might operate in a team environment. I also wonder how to even begin assessing my experience level. I am certainly not shooting for the stars, but also getting stuck in a proto-2-proto role would probably be terrible ;)
- apta 7y ago> This question should have said "woman" instead of "female". So women are not female?
- deleted 7y ago[deleted]