5 ms·
> It’s easy to be productive in Go. Hum, I'm not sure what this means. Is it saying go is a productice language, or just that you'll master go quickly and reac
by didibus 9y ago
> It’s easy to be productive in Go.
Hum, I'm not sure what this means. Is it saying go is a productice language, or just that you'll master go quickly and reach peek go productivity quickly?
- SwellJoe 9y agoI think it's only slightly ambiguous. It doesn't seem to be making a claim about mastering go or peak go productivity. It just says it's easy to be productive (not maximally productive, just "productive"). Which seems to be borne out by the huge amount of new code written in go just in the past few years.
- barsonme 9y agoBoth, really. Go's so small you can be quite proficient with in months. While it's not as productive as, say, Python (wrt how quickly you can get your code up and running) it's much quicker than other languages (and nicer to use in the long run).
- smegel 9y ago> months ? Go is tiny. The tutorial takes an afternoon. A C programmer will be profecient within days.
- georgemcbay 9y agoI agree "months" seems too long, but "days" seems too short to me. Learning the keywords and basic Go syntax is simple, so in that sense days fits, but a C (or C++) programmer is probably also going to be writing unidiomatic Go code, falling back to unsafe too much, trying to recreate OOP with some kind of wonky self-rolled inheritance system, etc, for a few weeks before they really "get it".
- IshKebab 9y agoThey may learn the language in days but not the standard library. That's always what takes the most time.
- wvh 9y agoI agree. And may I add the ecosystem: which third party modules you should or shouldn't be looking at, and if you should rely on them or roll your own.
- stouset 9y agoThen months for best practices, idioms, and understanding the pitfalls around concurrency and channels, which are nowhere near as "batteries-included" as people would lead you to believe. This "hype" around go letting you be productive sooner is honestly just bullshit. I've been programming for 20 years, with C, C++, Ruby, Perl, Scheme, Haskell, Rust, Go, Java, and others I've surely forgot. Sure, I was able to start writing go within a day. But it was terrible go, and months later I was still dealing with the consequences of early bad decisions. This isn't unique to go by any means. But if you go in thinking you're going to write a project that does some sort of non-trivial task and be able to rely on that later, you're going to have a bad time.
- greenhouse_gas 9y agoBut that's true with all those languages too. If you're an experienced Java programmer moving to Rust, you'll write Java in Rust. So it's 1 day of learning Go + 1 month of learning style vs 2 weeks of learning Rust + 1 month of learning style. [1] [1] Note, I think that Rust has the best community when it comes to getting beginners up to par, whether in #rust-beginners or on /r/rust. It just is a hard and not forgiving language.
- stouset 9y ago> But that's true with all those languages too. That is exactly my point, and I said as much in my post. > So it's 1 day of learning Go + 1 month of learning style vs 2 weeks of learning Rust + 1 month of learning style. More like 1 day vs. 1 week, with six months of ramp-up before you're writing anything approximating production-quality code. At which point, does it really matter that you were able to write garbage in one day rather than seven?
- logicallee 9y ago>The tutorial takes an afternoon. A C programmer will be proficient within days. Hi! (I got a downvote but this is serious - I believe you!) Thanks for this useful information. Could I ask you (or anyone else) to write maybe a checklist of links/resources or steps a programmer could go through? Thank you again!
- nindalf 9y agoTry out in order * tour.golang.org * gobyexample.com * The Go programming language book. (If you're a C programmer, one of the authors might be familiar to you) Personally I got hooked when I saw a talk by Andrew Gerrand where he created a working chat server in about 30 lines of code. I'd recommend this after gobyexample just to get a taste of what's possible - https://talks.golang.org/2012/chat.slide https://talks.golang.org/2012/chat.slide I hope you enjoy it :)
- logicallee 9y agoThank you. This is exactly what I was hoping for - thanks so much for your reply!
- azinman2 9y agoThat doesn’t mean you’ll know idiomatic to (which isn’t the same as C), know the tooling, ecosystem, etc. It does take months to be proficient.
- bborud 9y agoWhat do you base this on? Got some data to share?
- wott 9y ago> What do you base this on? Experience? One does not get 'proficient' in a week in any given language. One can build up a program in a new language in a week, but that does not mean proficiency. It takes between many months and a few year to become proficient in a language: it is the outcome of a process of exploration, trials, mistakes, discoveries of better or more adapted ways, finding out the shortcomings an learning to work around them, picking a right balance between ease to write and ease to read, ease to write and performance...
- JoeAltmaier 9y agoProficient doesn't mean expert. It takes about 6 weeks to get proficient.
- bborud 9y agoSo, in other words, anecdotal evidence. So let's quantify what "proficient" means. How would you measure of someone is proficient in a programming language?
- bborud 9y agoI disagree slightly. The problem with Python is that it may be quick and easy to cobble together something that does what you want, but it is a pain in the ass for someone else to install and use. There is no shortcut where you can produce and distribute a binary so every damn user of your program will have to deal with Python versioning, installing dependencies etc. So for the user, Python is not productive. It is time-consuming and bothersome.
- twic 9y ago> While it's not as productive as, say, Python (wrt how quickly you can get your code up and running) it's much quicker than other languages (and nicer to use in the long run). I can see that an experienced Go developer would be more productive than an experienced C developer. But, based on my experience of writing Go, i can't see how they could be more productive an experienced developer in any other current mainstream(ish) language - by which i suppose i mean Python, Ruby, Java, Scala, Kotlin, and (modern) C++. Go's great strength is how fast it is to get up to speed with, not how productive it is once you are.
- notheguyouthink 9y agoI would argue that it has the potential to be more product than some dynamic languages. Not trying to start a pissing contest, to be clear. Some languages have a lot of mental overhead (JavaScript being an easy example), which I don't think matters how seasoned you are - I think it's pretty much a constant in that language. So even if you're a seasoned developer, I think it's very possible that there are other languages which are objectively more productive for seasoned developers. So, which languages Go is more productive than is not something I can say - but I think it's a quantifiable thing. There is a nice middle ground between rigid safety of something like Rust, and careless abandon of some extremely dynamic languages. Go has a nice middle ground, but whether it's the "perfect" spot I'm not sure. Hell, I'm not even willing to say it's objectively more productive than X languages. I will say that for me, personally, it's far more productive than JavaScript (Node) or Python. I can whack out more code in Python, faster, but any moderately sized project starts to run into maintenance overhead, and then suddenly I wish I was in a more rigid language. Middleground is good here, I think. Though, I will say that if a language like Python gets some nice typing tools like they're working on - especially behavior based typing like Go's interfaces, Rust's Traits, etc - I think that language could really shine for larger projects. Prototyping speed and maintainability is a big boon.
- barsonme 9y ago> i can't see how they could be more productive an experienced developer in any other current mainstream(ish) language Others mentioned overhead which is a big issue. Because Go is so simple the mental overhead of remembering how to do stuff, edge cases, etc. is much smaller than other languages. Sure, a Go dev and a Java dev can be just as productive in their respective languages. But as somebody who has to switch back and forth between Go, JS/TS, PHP, and Java Go is by far the easiest language to switch back to.
- mbesto 9y ago> wrt how quickly you can get your code up and running Why is this such a huge benefit for code that typically works at the system level? Wouldn't you value reliability, consistency, etc when adapting system level functions over speed to deployment?
- barsonme 9y agoWhen I wrote my comment I was thinking more about prototyping: after I sketch a design on paper or with UML diagrams I want to write a quick prototype. Go allows me to be able to quickly and easily sketch out a design with the added benefit that it's the language the actual application will be written in.
- _ph_ 9y agoGo is a very productive language in several senses in my eyes. It is a language you can master quickly, and it is a very productive language in day to day work. There it is important to consider the overall productivity. There are certainly languages, which allow you to implement something a little bit quicker, but you have to consider also the effort of maintaining and further extending a program. For long-term maintenance, Go especially shines. It is easy to come back to some software and pick up modifying it again, and also when there are properly set up packages, Go software tends to be maintainable and extendable.
- rlaanemets 9y agoI find it also interesting that they only have 1.3M loc of Go given the 15+ teams and hundreds of engineers. I would expect this number to be at least 10x larger. They either still use a lot of Python or other languages or are very efficient at reusing code.