I’ve been reflecting a little too much about career growth these days. Specifically thinking about how to make the leap from a task-executing engineer to some-one that’s … slightly better. Having talked to my manager and skip, I wanted to document three of my most important learnings:
- Plug the window cracks
One of my key-takeaways from the excellent Pragmatic Programmer was the broken window analogy. Here’s a quick paraphrase:
Researchers in the field of crime and urban decay discovered a fascinating trigger that turns a clean, inhabited building into a rotten, abandoned one. A broken window.
This can be easily be applied to software projects. If one-part of the codebase begins to rot and is on the way on becoming a maintenance creep, it can slowly carry over to other parts of your codebase. Senior engineers are judged on how they manage projects. What quickly becomes apparent is the fact that successful projects don’t leave any broken windows unrepaired. You run the risk of it becoming unmaintainable which over-time can become an engineering burden.
- Accept your imposter side
There’ve been days when I’ve wondered how can I become a 10x programmer like X or Y. There have been days when I’ve slacked and didn’t accomplish much. There have been days when I’ve made silly mistakes, asked dumb questions and wondered if I deserve my current job (?)
What I’ve realized is that these days aren’t unique to me. Everybody goes through such days and only mediocre engineers always manage to give their best. It’s best to accept such days in your stride and move on. I do not think any less of another engineer if he/she does some awkward or weird stuff. Making mistakes or being wrong makes you more trust-worthy as it’s relatable to others.
I could never see myself mentoring as I would often wonder if I had any iota of helpful knowledge to share. What changed? Most junior engineers can’t name 3 things they’d like to improve on. A senior engineer’s guidance can help here. Mentoring n00bs and newbies can be as rewarding and impactful as finishing a large project.