Live data from Hacker News

Ask HN: Learning multiple languages vs. mastering one

news.ycombinator.com

31–40 of 137 posts

Re: Ask HN: Learning multiple languages vs. mastering one

#31
post #25

You should learn C. Most current engineers don't, and therefore the fundamentals of things like memory allocation, data types, call stacks, etc. remain a mystery to them. I have one other comment to make. In my opinion, being a strong programmer is mostly a "knack," meaning it's not a particularly teachable skill. Some people are just amazingly good at it. If you are, great. If not, I suggest acknowledging that and f…

Noob question: Is there room for below average programmers? If so, where?

I wouldn't think of it in those terms. Most programmers aren't "amazingly good" at it. So, I'd say most work as ... programmers.

I just wanted to make this point because I've repeatedly seen folks frustrated by others who just get things faster and ultimately make progress much more quickly in their careers.

I think it's useful/important to acknowledge that programming is a bit like sports. It's not fair, but some people start with an incredible genetic (or something) advantage built in. I've seen this time and again.

Re: Ask HN: Learning multiple languages vs. mastering one

#33
Go "T-shaped". In other words, be a "jack of [some] trades, master of [a few]".

Specifically, you almost have to choose modern JavaScript -- because you will need it on virtually any real project (it's everywhere), and you've already got the enterprise-y server-side covered. Don't get pigeonholed into backend-only, non-JS roles. Despite all the haters, es6+ is powerful and expressive.

You'll want to suppress your OO habits though, and embrace FP as much as possible.

Maybe get there by way of ClojureScript if you're up for it. Good luck! Have fun!

Re: Ask HN: Learning multiple languages vs. mastering one

#35
post #15

What makes you think it's even possible to master a single language without learning others? My experience tells me that monoglots reach false maxima because there experience isn't broad enough to realize that there are other maxima to climb. Java is still, probably, my strongest language, but I strongly believe my craft would have stagnated around Spring/Hibernate if I hadn't taken the time to figure out how problem…

[deleted]

Re: Ask HN: Learning multiple languages vs. mastering one

#36

Go "T-shaped". In other words, be a "jack of [some] trades, master of [a few]". Specifically, you almost have to choose modern JavaScript -- because you will need it on virtually any real project (it's everywhere), and you've already got the enterprise-y server-side covered. Don't get pigeonholed into backend-only, non-JS roles. Despite all the haters, es6+ is powerful and expressive. You'll want to suppress your OO…

T-shaped is excellent advice but there is something to be said for “paint drip shaped” skills too: imagine a thick line of white paint on a wall and how it drips down unevenly. Some of the drips/skills are very long, some are short, and most of the paint is that wide beam.

In relation to the OP then, being a master of an area is valuable, but so is knowledge of a few others in some depth and a lot of other areas at a much shallower depth.

Re: Ask HN: Learning multiple languages vs. mastering one

#37
post #31

Earlier quoted context omitted.

Noob question: Is there room for below average programmers? If so, where?

I wouldn't think of it in those terms. Most programmers aren't "amazingly good" at it. So, I'd say most work as ... programmers. I just wanted to make this point because I've repeatedly seen folks frustrated by others who just get things faster and ultimately make progress much more quickly in their careers. I think it's useful/important to acknowledge that programming is a bit like sports. It's not fair, but some pe…

Just to add to this, what you might see as being "amazingly good" might simply be the ability to cobble together pieces of (bad) code from various libraries, without really understanding how things work under the hood.

Incidentally, the best programmer I've ever met (he co-authored a very popular programming language) happens to be one of the slowist typists I've seen. I once asked him why, and he said "because I have to think."

Take your time and have fun.

Re: Ask HN: Learning multiple languages vs. mastering one

#38

I came across this article that talks about this topic. It basically says focus on 1. http://norvig.com/21-days.html

Great article, however it doesn't say that really (perhaps you missed this bit)

"Learn at least a half dozen programming languages. Include one language that emphasizes class abstractions (like Java or C++), one that emphasizes functional abstraction (like Lisp or ML or Haskell), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), and one that emphasizes parallelism (like Clojure or Go)."

Re: Ask HN: Learning multiple languages vs. mastering one

#39

Go "T-shaped". In other words, be a "jack of [some] trades, master of [a few]". Specifically, you almost have to choose modern JavaScript -- because you will need it on virtually any real project (it's everywhere), and you've already got the enterprise-y server-side covered. Don't get pigeonholed into backend-only, non-JS roles. Despite all the haters, es6+ is powerful and expressive. You'll want to suppress your OO…

> virtually any real project (it's everywhere)

That's a bit of an overestimation to say the least. E.g., I work at a trading firm and we use all kinds of languages for all kinds of purposes on all kinds of weird platforms, but JS is not one of them (I don't think we use Java much either, because why would you, this day and age).

'Any real web project' would be more correct. Not everyone cares about web projects though (same as not everyone cares about non-web projects, as you've pointed out).

Re: Ask HN: Learning multiple languages vs. mastering one

#40
Learning new languages teaches you new ways to approach problems. For example, Java is pretty much locked into OOP, but LISP, JavaScript, Haskell, C, and C++ offer different paradigms and different ways of approaching a given problem. Even when you go back to Java, having these experiences will give you a deeper toolbox when you face a new programming problem.
Post reply on HN