Building a Dev career for the long haul

Unsolicited career advice for young[er] devs

I’d like to believe I’m not that old that I can hand out career advice with authority.1
Of course, occassionaly I hear innocently hurtful comments from fresh grads who say, “Oh, I didn’t realise you’re more than 10 years older than me”2.

However, I consider myself fortunate to have been around some amazing mentors.
At the very least, I hope this turns out to be a distillation of advice I’ve received over the years from people smarter than I am.

It’s a longish read, but if you are in a hurry here’s the most important advice:
Hunt for a great mentor and just latch on to them. If you can’t find one, then hunt for one outside of your current workplace/environment.
Standing on shoulders of giants is the surest way to see further than you ever could standing on the ground.


[Choice of] Place of Work

Someone once told me, “A good place to work is one where the feeling of loserishness is prevelant”.
Simply put, you’re at the right place if you feel like a loser next to the folks around you.

The around you part is important. You can be work at a place that has highly capable and world renowned talent - but if they’re not in your immediate peer group, then you should either try to get in their immediate peer group or look outside.
A large part of your learning will come from your immediate peers. Surround yourself with folks who are more accomplished, more hungry and more driven than you are - you’ll feel like a loser in front of them, but you’ll learn the most too.

Needless to say, stay away from folks who try to make you feel like a loser intentionally. Life is too short to be around toxic people.
Sometimes, it’s easy to walk around or walk past them; but if you realise it has become your life’s mission to retaliate againse someone trying to pull you down, then quit and find somewhere else to work.
Quiting is not equivalent to giving up. The world is big. There will always be a place with outstanding people who value your talents. Spend your time finding that instead.


Stick to Projects

Substantive learning comes from feedback. As a developer, you’ll get feedback from all quarters - peers, managers, team leads & perhaps even customers.

Your code gives you feedback too. The code you write & the product it brings to life are constantly evolving.
That abstraction you crafted will become too brittle in a few months.
That API you so agonized over will no longer be used.
If you’re lucky - your product will see so many feature requests that it’ll need a rewrite or a huge refactoring; you’ll get to tear down what you wrote and write something new again.

It is imperative that you stick around to witness this. Only through multiple iterations does one develop an intuition about what really matters when you code.
And there is no one right answer - your experiences will shape how you think as an engineer.
Perhaps requirements will change too often and you’ll end up hating Product Managers.
Perhaps you hit scale sooner than expected and start taking observability & infrastructure choices more seriously.
Perhaps you get to see your data model being twisted and turned so much that you become a psychopath who takes 20 days to finalise a new data model before writing a line of code.

At the very least, it’ll teach you about at least one thing that matters in the long run and about a dozen other things that really don’t.

None of these learnings will happen if you switch projects every six months.

As a side note, here’s another piece of advice that will make more than half of you (who’ve come so far) think I’ve gone nuts - take up a maintenance project.
No, trust me, that is not career suicide!
Building from scratch seems like the only reasonable thing folks wanna do today.
Instead, take up someone else’s (hopefully shitty) code and work at it to make it your own. You’ll learn a ton from other people’s mistakes without the blame/guilt that comes with making them!
More importantly, it’ll help you develop one of the most invaluable skills a developer must have - the ability to read code and make sense of it!3


Breadth vs Depth

This is perhaps the most common question in the mind of someone who has worked for around 1-3 years in the industry (or even for someone yet to start!).
I still think about this from time to time - so get used to having this debate in your head.

Now, when I speak of Breadth vs Depth, I want to be extremely clear that I’m not talking about frameworks or tools or languages.
Breadth does not mean learning Vue.js after learning React.
Depth does not mean knowing about 20 more configurations in nginx.
Obviously, such knowledge has it’s benefits too - but I largely bucket that under enhanced productivity.

By breadth, I mean Knowing more concepts.
Depth means an advanced understanding about a particular topic.
It’s about the enhanced thought process that enables us to solve problems better.

A cliche answer to the Breadth vs Depth question, of course, is it depends on who you are.
But bear with me a little as we try and peel the layers of that statement.

Having breadth gives you more options or tools using which you can make impact faster, and possibly in more areas.
For example, decent knowledge of a UI framework + knowing how to store and retrieve things from a datastore would enable one to build an app relatively quicker as compared to someone who has specialized in datacenter network design all her life.
Given these capabilities, you may be empowered to build apps, websites & services to solve a variety of problem statements - from astrology to ecommerce to food loggers.

In contrast, the network specialist may be engrossed with the problem of enhancing the net throughput & cost efficiency of the data center network.
In all probability, she’d be acutely aware of the latest advances in hardware (from asics to materials); flow control & compression algorithms; and likely have more than a cursory knowledge of the software networking stack.
Though the direct scope of her field of expertise limits her immediate areas of impact - the impact she makes, in turn, empowers others to tackle a larger number of problem statements

It is not unusual for companies to club the 2 types of engineers into Application Engineers & Platform/Systems engineers.
Although I consider the nomenclature to be too restrictive, it helps form a first level mental model for beginners (and, unfortunately, management).

So, again, one must introspect to see which kind of duration-and-type-of-impact excites us more.
Also, it really doesn’t matter if you venture in one direction for a couple of years to realise that’s not what you really want.
As I mentioned, knowledge enables us to solve problems better. A corrollary of seeing it with that lens brings the realisation that knowledge never goes waste!


Be Patient

During one particular evaluation cycle, I really thought I deserved a promotion but I didn’t end up getting one.
Coincidentally, I was also changing teams at the same time. So my performance discussion happened with my to-be manager in the same room along with my ex manager.
I explained how I had clearly outperformed compared to what was expected, deserved the promotion and was being treated unfairly. I was outright rude.

Rather than being alarmed by such hostile behaviour, my new boss uttered the single most profound advice I’ve received - “So?”
The fuck did he mean by that?4
“Did you get to work on interesting stuff this past year?”. Yes
“Do you think you gave it your best and are a better engineer today than you were a year before?”. Yes
“Do you care about the little bit extra money you’d get if you were promoted?”. No
So how does it matter? Just suck it up and do what you’ve been doing”. Profound.

And of course it didn’t matter! What matters more is that it’s been 5 years to the day and he’s still someone I go to whenever I need some honest, no bulshit advice.5

I know - perhaps you’re skeptical. Thinking it doesn’t apply to you since you’re in a competitive, politicaly charged environment and these things matter.
No they don’t. Trust me, I’ve been there. The above advice snapped me out of it and made me realise that it’s the relationships you build and how much you improve that matters.

One missed promotion, one missed opportunity doesn’t matter at all. If you’re hungry - you’d get round to the next one.

Basically, “We overestimate what we want to accomplish in a year, and underestimate what we can accomplish in 10 years”


Footnotes

  1. People are always remarking how young I look. Surely they all can’t be flattering me. Hopefully. Maybe. 

  2. Sunny, it’s been 2 years but it still hurts :) 

  3. Sure, you may end up with far fewer hair than you started out with - but the experience would be invaluable. Hopefully. No warranties here though. 

  4. Well, I didn’t use those exact same words - it was too early to show my true colors :) 

  5. I’m sure he doesn’t remember this one bit. He’s too busy being high on life.