Live data from Hacker News

Ask HN: Learning multiple languages vs. mastering one

news.ycombinator.com

21–30 of 137 posts

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

#22
In picking a language, look for

1. Ecosystem. You _will_ need help

2. Friendly (to you) syntax

3. Target to achieve (in your case, it would mean a language that is frequently used in distributed system/data engineering)

Regarding "I find myself going through the crazy articles comparing languages and lose focus and give up.", I hear you. I've been there. Pick two and run with them. Once you start learning a language, stop reading articles on what other languages you can be learning. There is always something better down the corner. That doesn't mean you lose focus and drop whatever you're doing midway. Persevere, and you will prevail.

Finally, my recommendation, based on your requirements would be

1. Python (for data engineering - numpy, scipy, tensorflow, pandas and whatnot)

2. elixir (for distributed systems)

Hope that helps. Good luck!

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

#23
I've made this transition over the last few months.

For the past eight years, aside from dabbling on my own, I've been a .NET developer. I've worked in startups, agencies, and good-sized companies, and have delivered more projects than I can count. I've also given talks at user groups, and have delivered open-source tools. I wasn't an expert, but I'd say that I knew C# and .NET reasonably well.

However, I always felt a bit of imposter syndrome. While the .NET world is more open than ever, you still feel like you're an apple in an orange-infested world. Literally everyone else builds on Mac/Linux, and while the tools differ between languages a PHP developer would have more in common with a Python developer than they would with a .NET developer.

So, I left a senior role and took a standard dev role in a software house with zero .NET tooling, and have forced myself to learn different languages in anger, instead of restricting myself to only learning in my free time.

It's been hard, but I feel like I'm learning loads every day. I've also learned things I would've probably ignored if I was doing this in my free time, like Ruby and Rails. I still feel like an idiot most days, but I'm hoping that in the next few years I'll go from being a solid C¢ developer to a solid developer, and that alone will go a long way towards getting over that imposter hump.

So, my advice is to try and learn what you can on your own, but if you feel that you are better served by working with this tools "in anger" or around a team that really knows its tools then look for a job that both allows you to do this. Once you reach a point where you're comfortable in a language, move to something new, but keep that language to your free time.

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

#24

I would sort of do a hobby project in the following languages (in addition to Java for Object Oriented Programming, although something obscure like Smalltalk can be fun for an evening): - Haskell, functional programming with static types - Clojure (or Common Lisp), functional programming in a dynamic language (and understanding the AST-as-syntax-homoiconicity) - C/C++, "low-level" programming (e.g. pointers, memory m…

Could you give some examples of projects for which each of those language (types) are useful. Because I think it is important to choose a language fitting with the problem (or the other way around if it's exercise)

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

#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 fashioning a career that doesn't rely primarily on programming skills.

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

#27
Languages are moving so fast recently that mastery is something of a moving target in a lot of cases. Often using different languages can give you a better insight into how features in other languages can be used - e.g. learning OOP/classes while managing all the complexities of C++ can leave you slightly confused about the whole thing, but if you go learn some Java where it's forced on you, it makes a lot more sense in C++.

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

#28
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…

(+1) this. Building your own lisp (http://www.buildyourownlisp.com/) might be a good start.

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

#29
The problem with flitting between many languages is that these are very perishable skills. To be productive is not merely a matter of being proficient with the keywords and syntax, you need to have in your working memory vast swathes of the standard libraries so you know when to just use a standard function versus reinventing the wheel or spending all your time consulting the docs. This fades quickly if you aren’t doing it every day. I don’t think it’s really possible for most engineers to have more than 2-3 languages that they are really good at, whereas you can dabble in a dozen or more if you are just making small changes to existing code.

The real question is not which language is the best but what is the language and libraries most used in the industry/field you want to work in? Figure that out then go deep.

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

#30
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?
Post reply on HN