4 ms·
Same. I've never seen anyone become proficient in a new language/platform in less than a year. Sure, you could learn Go's syntax, use it in the style of Java/PH
by ASalazarMX 4y ago
Same. I've never seen anyone become proficient in a new language/platform in less than a year. Sure, you could learn Go's syntax, use it in the style of Java/PHP, and make it work, but that is not being proficient in Go and its idioms.
- Jtsummers 4y agoA year? That's a very long time for anyone who isn't a novice to learn a new language.
- AlotOfReading 4y agoI would bet hard money that even an experienced developer wouldn't learn C in a year (e.g. avoid or recognize most UB and security issues) without prior exposure. I'll grant that C is pathological in that respect though.
- Jtsummers 4y agoMaybe we have different bars for what it means to learn something, but if I worked with an experienced dev who took a year to learn C (and there was an actual need for them to learn it) I'd question their claimed experience. It shouldn't take more than a few weeks to be capable of using C if you have a decent background with other procedural languages and already know the difference between heap and stack storage (so you don't make the mistake of a past colleague of trying to return data on the stack, he didn't claim to be experienced though). Learning a language and mastery are separate things. An actual experienced dev should be able to hit "competent" in any new language within weeks so long as it's within the same family of languages they've used in the past. Procedural languages, like C, are pretty much squarely in the middle of what everyone has learned unless by some fluke they started and continued with Haskell and similar languages and never touched any of: Go, Rust, C#, Java, Javascript, Lua, Python, Perl, Ada, Pascal, Fortran, Matlab, BASIC (various forms), and a hundred other languages.
- Adiqq 4y agoThere's a lot of baggage that comes with each language. I could probably learn any language at that point, but it also takes time to learn whole ecosystem, mostly used libraries and tools. You typically can't do this in week or two, because you need to actually write something and see how it feels, if there are any surprises. You would probably not want someone with little experience in given language, to touch production codebase without review, because there are always traps that you might've not encountered in other languages. I typically don't touch low-level programming languages, but once I had to use C to write some small adapter to communicate with some Oracle product. I did it, it worked as expected, but I would not be able to use it efficiently for complex solutions without more experience with creating and managing solutions in C. I can also write in Go with some basic proficiency, I felt confident at one point in my abilities, but when my code got reviewed by someone specialized in Go, he would propose several improvements that did not cross my mind, because I had less experience in Go.
- Jtsummers 4y ago> You would probably not want someone with little experience in given language, to touch production codebase without review, because there are always traps that you might've not encountered in other languages. I never said otherwise. This is part of the distinction between competence and mastery. I would not expect most people to master a new language in just weeks, but a senior developer should be able to be competent within weeks. Now, would they have a product or substantive (non-trivial) change to show after those weeks? Maybe not, that might take a few more weeks, or longer if it's larger in scope. > I can also write in Go with some basic proficiency, I felt confident at one point in my abilities, but when my code got reviewed by someone specialized in Go, he would propose several improvements that did not cross my mind, because I had less experience in Go. That's part of learning, but it probably didn't take you a year to learn enough Go to get something in a reviewable (if not passing review) state.
- idontpost 4y ago> You would probably not want someone with little experience in given language, to touch production codebase without review I wouldn't want anyone, in any language, with any level experience to touch production codebase without review. Not even K&R themselves. So that's a ridiculous straw man.
- ASalazarMX 4y agoA year is enough time so your new language stops teaching you new things every week. I agree that superficial knowledge can be attained quickly, but learning the idioms, tooling, libraries, gotchas, performance bottlenecks, warts, etc. takes months. Maybe six months if you're very good, but I'd wait a year before assigning a big project to someone new in a language/framework. Still wouldn't consider them a master with just one year of experience, mastery of a modern language can take years, you can always go deeper.
- 0x457 4y agoBeing proficient and using it are two different things. A year to learn? What are you talking about, in a year you can get someone who never used a computer beyond a browser to learn just about any commonly used programming language. Yes, they won't be level 99999 one-man-army ninja fullstack senior engineer, but they would be able to write code. If you had 10 years of java, you can absolutely learn how to write Go in 3 days, unless your 10 years of java is "writing CRUD in Java 6 with libraries available in 2006".