Hacker News new | ask | show | jobs
by hyperhopper 816 days ago
> Learning a new language shouldn't be difficult. Programmers are expected to familiarize themselves with new tech.

I wish any large company agreed with this. I've worked for a company that on boarded every single new engineer to a very niche language (F#) in a few days. Also, everybody I worked with there was amazing. Probably because of that kind of mindset.

Meanwhile google tiptoes around teams adopting kotlin because "oh no, what if other teams touching the code might not be able to read it". Google is supposed to be hiring the brightest but internally is worried the brightest can't review slightly-different-java.

It's shocking how everybody acts like senior engineers might need months to learn a new language. Sure, maybe for some esoteric edge cases, but 5 mins on https://learnxinyminutes.com/ should get you 80% of the way there, and an afternoon looking at big projects or guidelines/examples should you another 18% of the way.

5 comments

> Sure, maybe for some esoteric edge cases, but 5 mins on https://learnxinyminutes.com/ should get you 80% of the way there, and an afternoon looking at big projects or guidelines/examples should you another 18% of the way.

Not for C++, and even for other languages, it's not the language that's hard, it's the idioms.

Python written by experts can be well-nigh incomprehensible (you can save typing out exactly one line if you use list-comprehensions everywhere!).

Someone who knows Javascript well still needs to know all the nooks and crannies of the popular frameworks.

Java with the most popular frameworks (Spring/Boot/etc) can be impossible for a non-Java programmer to reason about (where's all this fucking magic coming from? Where is it documented? What are the other magic words I can put into comments?)

C# is turning into a C++ wannabe as far as comprehension complexity goes.

Right now, the quickest onboarding I've seen by far are Go codebases.

The knowledge tree required to contribute to a codebase can exists on a Deep axis and a Wide axis. C++ goes Deep and Wide. Go and C are the only projects I've seen that goes neither deep nor wide.

The hard part about learning C++ is the same stuff that’s hard about C, the rest is just stuff you can google TBH
> It's shocking how everybody acts like senior engineers might need months to learn a new language.

I've seen instances where people were worried it would take someone a month longer to fully onboard. Completely ignoring the fact that *fully* onboarding in any complex environment is going to take several months anyway.

I'd also argue that in the case of setting up your scripts, it matters even less. Automation scripts shouldn't be so complex that you fully need to know the ins and outs of the language they are written in. If they are, then maybe it is time to re-evaluate your building/deployment process.

Furthermore, I'd say that historically, both bash and python should be languages any semi competent developer at some point learns to work with to some degree. I say historically, because it always has been difficult to not encounter it when doing software development in the past... 20 years or so. But with modern environments and deployments it is more feasible as much more is abstracted away in pipeline yaml syntax.

>It's shocking how everybody acts like senior engineers might need months to learn a new language.

It's true for some languages, like C++, some might wrongly extrapolate from that. I agree with your general point though. If your senior engs can't learn Python/Ruby/F# etc in a few days to a level where they can contribute, you might want to ask yourself what senior means in your org.

> Meanwhile google tiptoes around teams adopting kotlin because "oh no, what if other teams touching the code might not be able to read it".

That is highly ironic, seeing how often Google tries randomly shoving Dart down people's throats.

Ridiculous. You must be talking about learning only the syntax of a new language. Truly internalizing how to wield a new language will take months to years.

A dev that switched from language X to Y "in a few days" will just write X using Y syntax. Here's a good example of going from Java to Python: https://youtu.be/wf-BqAjZb8M?t=1327.