7 ideas for a long and successful tech career
Recently a subreddit I follow had a discussion on a topic that I consider a “Frequently asked question”. The question asked was: “For those of you who are very successful in your software engineering careers, what advice do you have to give for how to be successful in our careers like you?”. I thought the answers here cut across a wide range of thought processes. Obviously each answer is colored by the experience of the individual in question. It is also somewhat unique to them and may not apply to everyone. Here’s my attempt to summarize this discussion by pulling up some key themes.
Genuine Passion
To be successful in any field, one has to put up with a lot of BS (pardon my french). In order to put up with unnecessary stress, which will arise one way or another, one has to find that which they truly care for. Once you have that, it makes unpleasant aspects of the job bearable and also makes your job feel less like a job. There needs to be an inner happiness that is derived from some part of the vast array of activities that we call Software Engineer. Having genuine passion for things will make normal days seem great and help make bad days bearable.
Continuous but Strategic Learning
In order to keep afloat in the tech industry, one had to constantly keep learning. If you are not learning new technologies or paradigms every few years, you are taking on something that Nassim Nicholas Taleb calls “latent risk”. A latent risk is one that quietly accumulates, but which we don’t see on an everyday time scale (more on this fascinating blogpost). But, you need to be strategic in what you spend your time learning. Focus on learnings things that have proved that they’ will stick around. A new javascript framework that is hot now but perhaps has no guarantees will be still around in 4 years is a waste of learning effort (I’d argue no learning is wasted, but we are speaking in relative terms here). Meanwhile learning bash and getting well familiar with sed, awk, grep, etc can be skills that can help quite a bit, as these tools have stood the test of time and will continue to still be around 50 years from now.
Service Before Self
Try to be of service to your colleagues. It might come at the cost of your own deadlines, and you might have to put in extra hours. But being there to help your teammates, coaching them / learning from them can really amplify your impact. Frank Oppenheimer said “The best way to learn something is to teach it” and that is indeed true. Helping your colleagues will make your better in ways that you might not even be able to comprehend. But its not just about teaching, its also moving things alone in a project. Is someone blocked on your code review? Is someone waiting for your to review their design doc? Make sure to make time in your daily schedule for such activities.
Navigate Your Org
Obviously this relates more to large companies than smaller ones. Idea is that you need to be aligned with your manager to have a successful career. This does not mean you need to be a “yes man”. It mean’s that you both agree on the big tenets of what the job entails and what is required of you and whether or not you are meeting those expectations. It also means you and your manager must have solid lines of communication between each other. But, you also need a sponsor to move up in your org. Sponsors are senior people that might be outside your direct management line, who are privy to your work / you and can make a case to push your past the finish line when that promotion packet is being reviewed.
Understand The Business
Take time to understand the business. Understand where the value is coming from and prioritize accordingly. It is very important that you try to understand how you, your manager, your team fit into the larger organization. It is also important to have an idea of what share of the revenue pie your team brings to the table. These things are important because they impact decisions such as how much new head count your team will get, or how much budget can be sanctioned to your team for, say, self improvement, etc.
Add Value Not (Just) Code
If you continue to meet expectations you will have a fine career over the long term. But to really accelerate your growth, you need to exceed expectations and to do that you need to add value. Take initiative, find opportunities, identify gaps - create the vision for something and just go do it. Don’t wait for someone else to tell you, you go tell them. Be a value creator, not a work designee. Taking directly from the Reddit discussion: “Don’t let anyone draw lines around your job. Read other peoples code, don’t trust libs until you have read them and know why they work.”
Live to Play Another Day
Lastly, in order to have a long and lasting career, one must play the game long enough. And in order to play the game long enough, one has to truly imbibe the mentality of the game being a marathon, not a race. By that I mean, if you burnout you will fizzle out. But if you continue to maintain a healthy life style, tend to your mental health and create boundaries between work and non-work life, you can sustain a very long and fruitful career.