Hacker News new | ask | show | jobs
by rramadass 2106 days ago
So there is the Problem Domain(specific subject expertise eg. ML, Big Data etc.) and there is the Solution Domain(Languages, frameworks, platforms etc.) As a Programmer you need to become good in the latter so as to apply it in any problem domain that you might be asked to do in a specific job. IMHO, a decent mastery of C/C++ is a must. Because that entire ecosystem allows you to work on everything from dinky little MCUs to honking big servers your opportunity space is large. They form the underlying bedrock and a "glue" between everything. The added benefit is that you are forced to understand how Computers really work. Thus you can fully focus on the problem without simultaneously struggling to map it into a specific language/framework/toolchain/HW. Of course in any non-trivial system, you may need to pick up different languages but that can be done as need arises (for similar type of imperative/OOP languages). C/C++ will never go away and will always be needed.

On the Problem Domain front, Cloud Computing and Data Science are here to stay. They are fundamental shifts in the computing space and hence one needs to become knowledgeable in them. I am not too gung-ho on the AI/ML fad since there is too much hype around its supposed benefits but of course you can study it for its intellectual challenge and apply as need arises.

1 comments

Thank you for your insights. A couple of answers talked about Rust - do you have an opinion on this language and its uses?
I know very little about Rust and have quite honestly, not bothered with it at all. It definitely does not have the market penetration of C/C++ and hence not proven itself in the "real world". You can do anything and everything in C/C++(multi-paradigm language). I will get more "bang for my time" by upgrading my skills to C++17/20 from C++98 than i ever will studying Rust.

From a current industry/job pov, i think the following are the most important ones; C/C++, Python, Java, SQL, Javascript and C# (from MS ecosystem). They allow you to tackle different possible domains.

Also given the prevalence of distributed systems; Erlang/Elixir are good to learn.