I hosted my friend yesterday for a dinner and we had a very interesting conversation around our work and how it evolves over time as you become a more mature engineer. This really encouraged me to write down my thoughts here.
Early in your engineering career when you just get started you build things that others tell you to. It feels quite natural because that’s exactly what you had prior at school. You did homework and worked on the projects were are assigned by your professors. No one expects you to come up with project ideas but rather they expect you to successfully finish the work in a given deadline. The same way when you start a full-time job as a new grad engineer you’re hired to build and ship features that are prioritized by your managers. This is great because measuring your success and productivity is directly proportional to how much things you get done in a certain timeline. You know exactly what to work on.
However, when you grow as an engineer and become somewhat a senior engineer figuring out what to work on gets a lot harder. No one assigns your projects anymore and you’re suddenly in a position where you should come up with your own ideas. Lacking the past experience of this kind of work really hits you hard and you start worrying and questioning your position at the company.
Unfortunately, you can’t apply the same metrics to measure your success anymore because the type of work you do now is a lot different. You come up with ideas that your team should work on and you set the direction of the team. Now your work affects not only you but other engineers, designers, and the whole organization.
This is a lot more responsibility and it’s okay to feel a bit scared. I think every engineer has gone through this phase. I personally had so many terrible ideas that may seem like a waste of time now. However, admitting yourself that some of your ideas might turn into bad ideas is actually a good idea because failed ideas help you to develop the intuition you need to improve your failure rate. Over time you get better and you start recognizing which ideas tend to work and which ones don’t. Being patient and actively reflecting on your past experience is a key for engineering growth.
After coming up with many terrible ideas in the past and reflecting on them I started to notice a pattern of most successful ideas. As a senior engineer, your ultimate goal is to maximize the impact of your work within the organization. Apart from writing code and doing code reviews, I have a couple of ideas that I think might be good guidelines to figure out what to work on.
- Really think about whether your project is aligned with business priorities. Any time you come up with a new idea this is the first question you should be asking. If you’ve already started the project then it’s important to realize if your project isn’t going well. If that’s the case then make sure to communicate with your managers/engineers. Communicating as early as possible will help to smooth things out a lot easier.
- Actively mentor other developers. Mentoring other engineers and helping them when they get stuck is part of a senior engineer’s job. Regularly explore and find out ways to mentor other developers. It’s like trying to scale yourself in the organization so others can also grow into a senior role.
- Work on projects that improve developer productivity. Developer productivity is incredibly important. If you can build a new project that improves developer productivity even with a very small margin then on the company level that sum converts into a big deal. If you’re building a CI/CD pipeline for your internal team then think about how you can scale it to other teams as well. Is there anything you can tweak in your project that would make it work for other teams too?
- Build things that enable others to have a bigger impact. If developers are struggling with the local dev environment because it’s too slow then invest in building a better developer environment. With this, your work will have a business impact because it directly improves the velocity of the product engineering teams and helps them to move and deliver value faster.
Obviously, these are only some ideas and I don’t expect these work in all organizations. As I’m still learning I expect that some of my ideas may end up being bad ideas.
Choosing what to work on is hard.