3 ms·
I wouldn’t build my career around a programming language. Languages are one of the least important factors in a programming career. That said, if I had to choo
by gregjor 6y ago
I wouldn’t build my career around a programming language. Languages are one of the least important factors in a programming career.
That said, if I had to choose a couple of languages for the rest of my career I would choose C, C++, and SQL. All of those have enjoyed huge success since they were introduced, with mountains of legacy code and plenty of new development.
Once you master C and C++ a lot of similar languages should be very easy to learn: Java, C#, Python, Go, Ruby, PHP, Swift... they are all more alike than not.
As a hiring manager I would not be very interested in someone who only worked in one or two languages, or only had language expertise to offer. A candidate stuck with two languages for years would send the wrong message for sure.
To build and sustain a long career you need to solve problems and add value. You need to get along with people and contribute positively to a team. You need to learn business domains, not just languages and tools. You need to be the person who says “I can figure it out,” not the person who says “Leave me alone, I only want to write C++ code.”
- UK-Al05 6y agoLearning a language is easy, Learning the idioms, ecosystem, culture of a language to become senior level can take years.
- gregjor 6y agoMaybe. I think of a senior programmer as someone with a track record of adding value, capable of solving problems, leading a team, making sense of requirements. Mastering every intricacy of a language and its ecosystem has value but that’s not what most employers or customers care about or pay for. My customers almost never care about the language or tools I use, or quality of the code, or anything programmers obsess over. They care about spending their money to get more value through reduced costs or increased efficiency. You can optimize to impress your peers, or to always have a job (or customers if you freelance). Depends on your priorities. Programming expertise is largely cumulative because the basic concepts apply in every language. Someone with 5+ years experience with real C++ projects shouldn’t struggle too much with Java or Python.
- UK-Al05 6y agoTo get anything done fast, and reliably it takes that knowledge to be decent.
- gregjor 6y agoOf course. I should have written that programming mastery, which includes a good understanding of how to use programming languages, is necessary but not sufficient to achieving "senior" status, or building a long-term career in the field. A programmer who focuses exclusively on mastering languages is like an architect who focuses exclusively on mastering drafting. I would have thought this would go without saying, but more and more I see programmers define themselves in terms of languages and related tools, and even demand that their work revolves around their preferences. That's a limiting choice, not a way to build a successful career.
- giantg2 6y agoPlease point me to these employers who don't care about technical skill. I was a tech lead for a year and senior developer for another on a FileNet application. I would love a $140k+ tech lead position that doesn't require experience in the tech.
- gregjor 6y agoI never wrote that employers don't care about technical skills. You either didn't read what I wrote or you reduced it to a binary choice so it doesn't make sense.
- giantg2 6y ago"My customers almost never care about the language or tools I use, or quality of the code, or anything programmers obsess over." I would say technical/language expertise falls in that last category. You also allude to employers caring more about the qualities listed in your first paragraph and caring about output/value.
- blub 6y agoYes, that is the conundrum of modern software engineering. Companies would like to have people that are flexible and can jump on any language or technology while people have a natural need to sharpen their skills and build upon and enrich their existing knowledge. Learning the Nth framework or language is neither of those. It's a grind, it's waste and it's always running only to stay in the same place. Programmers instinctually feel this, but the argument of flexibility is persuasive and market success does seem at least to correlate with breadth of skills. To put it bluntly: many programmers don't give a crap about building successful products or producing value and instead want to become masters at what they do.
- gregjor 6y agoI agree, and well-put. If we don’t constantly hone our skills and learn new things we risk getting left behind. I think programmers can imagine that as a bigger threat than it is, but it can happen if one chooses a dead end to specialize in. Not getting in on a trend early presents the risk of getting left behind, especially in today’s tech hiring process that often requires experience with relatively young languages and tools. That said I would still focus on the larger trends rather than specific languages or tools. When I got into programming 40 years ago it was just barely possible to learn most of the major languages and tools used in business applications. Today that’s not even possible for niches like web development. I read an interview with Bill Gates a while back. We’re close to the same age. He said he just got lucky, born at the right time, and he got into programming as a teenager and grew up with the technology. He said it’s much harder now to get started because there are so many places to start, so much to learn, and the languages and tools continue to drop on us faster than we can keep up. That can lead to despair, or over-specialization. I now specialize in web applications, but I can’t learn everything, so I don’t try. I wait until something gets traction, when I start seeing demand from customers (rather than HN buzz or a mention in the TIOBE rankings), before I pay attention to it. Once a language or tool gets significant traction it tends to have a long lifespan: Unix, C, COBOL, SQL and relational databases, PHP, etc. I work mainly on legacy software so I don’t have to stay bleeding edge. I know this seems like a boring “I give up” path, and I partly got here because of increasing age discrimination, but it let me relax a bit about keeping up with beta versions of Rust and React and focus more on what my customers actually want.