I remember the first time I compiled something. It was the late 90’s when my dad helped me to code my first hello world program written in Visual Fox Pro. Ever since I’ve been fascinated with technology and programming languages in general. You’ll see, I find the same joy in programming languages just like a polyglot find joy learning spoken languages.
As of today, there are over 700 programming languages in the world. Amazing, right?. Having so of them one could not help but to ask itself where to start and which one to choose, especially but not limited to young folks that look to dabble into the software industry hungry for knowledge, recognition, and moreover a good income to support themselves and their dearest. I wish I’ve had some sort of guide when I started on this journey many years ago
Explore the options
Picture this: you’re a fresh colleague student analyzing your career options. You have some sort of idea of what you want or at least what you don’t want to be. E.g probably you’re lean more towards social areas rather than analytic ones or probably you prefer to work with animals rather than people. As obvious as these simplifications might appear it’s often uncommon to see the same distinctions happening in the software industry.
The line between IT and any other area of specialization is often blurred. This is because IT has ceased to be an area by itself to become a pillar of other areas ( or a very big smudge in a Venn diagram covering it all ). Every specialization you can think of has a significant percent of IT involved in it which translates into more ramifications and more areas of specialization.
Proficient professionals specialized in the latest technologies trailblaze the path to innovation, but there’s a price to be paid.
Specialists vs Generalists. This is a well-known topic that has already been covered multiple times, who win the trade-off?. David Epstein author of Range: Why Generalists Triumph in a Specialized World mentions a natural experiment conducted by an economist on the high-end system of England and Scotland over the same period of time. In England, the students frequently had to specialize earlier than their Scottish counterparts who could keep trying things on the university if they want to. The summary of the experiment could be reduced to the following:
- England: early specializers jump into an income lead because they have more domain-specific skills
- Scotland: late specializers get to try different things and when they finally pick they have match quality (diving into things in a way that gives you maximum signal about yourself)
- Scotland: late specializers erase the income gap in a period of 6 years.
- England: because they were made to choose early often made poor choices and start quitting their careers tracks at a much higher rate than their counterparts.
- The specialized lose the short term but win the long run.
One could use the aforementioned experiment to extrapolate into the software domain and detect many similarities.
When we talk about specialization in the software industry there’s an always-growing set of options you can pick from. None of those options is preferable over the others if you don’t know exactly where you’re going. in the software industry as in life, there’s always satisfaction and regrets for the choices we made but, I believe we have less probability of regret the first programming language we learn just by measuring what it brings to the table such as logical thinking, structure and, foundation.
The peril however is often ignored. If you learn and later specialize in one language only, chances are that you’ll ride the hype of that language for as long as it lasts just before a new one comes in. This is not to say that’s inherently bad, of course not but one could feel especially tempted to the novelty of new technologies just as mosquitos to a glowing bulb, both completely oblivious of what’s coming. And who can blame us?
The sweet point seems to be, to dabble into enough territories, explore and detect patterns that serve you in the future just like it did for many generalists in the past.
Have you ever heard of those code bootcamps that promise you that you’ll get sufficient real-world experience, enterprise-level skills, and a job by the end of the Bootcamp, which commonly span for about 3 to 6 months?. Some of these bootcamps go a little further and guarantee that by the end you’ll become a ninja in X language/framework.
A new mirage in the software industry which is older than the industry itself is this misleading and popular idea that states that if jump directly into the specialization you’ll cut your way through the line of others learning the fundamentals on which the specialization sits on, hence you’ll not only obtain the benefits sooner but the room to grow will be also bigger. In other words, learn enough of Y and Z because X is unnecessary.
There’s no such a thing as useless knowledge, it’s contradictory because every piece of knowledge serves a purpose, if not now someday, if not for you maybe could spark curiosity when shared with others. The question here is to what extent can Y and Z be extrapolated into different domains where X is not only necessary but taken for granted.
I fond the idea of ninjas in the software industry because more often than not have this bad connotation just like rock stars. I have a vivid imagination, whenever I heard someone is a ninja in Y/Z I can not help but imagine a regular person who has mastered a nunchucks' flashy routine and is ready to fight the final boss.
Delay specialization, do not rush into a specific area without exploring the alternatives and if it’s the case you’ve already specialized there’s always room for extra knowledge. Who knows? maybe you might end up connecting the dots.