Source: https://www.zainrizvi.io/blog/whats-it-like-as-a-senior-engineer/
- As you become more experienced, your toolkit for building and doing evolves
- There’s a huge mindset shift needed when you go from junior to senior. Writing code becomes a minor part of the job.
At the senior levels, most of your time goes into identifying what needs to be built and how to build it:
- You have to research what the problem looks like.
- You talk to others and get everyone to agree on what needs to be done.
- Research the problem
- Design the solution
- Build consensus
As you get more experienced your problems become more ambiguous. The path looks hazy. There are multiple routes you could take, but each one hides its own dragons. It’s not about coding anymore. Most of your work goes into research, and you can’t google the answer.
Research can take many forms. It usually involves a combination of reading code, reading documentation, and talking to people. There often is no single person who knows the answer you need. Five different people might hold five different pieces of the puzzle you’re assembling. And you don’t know who those five people are. And they don’t know which pieces you need.
You have to find them. Find them and ask the right questions to sift through their brains, uncovering the nuggets you need.
When researching, keep in mind the following advice:
- Talk to people and really listen
- Look for patterns
- Understand people's problems
- Dig deeper and ask questions to follow-up to confirm your understanding
With ambiguous problems there is no single right answer anymore. There might not be any answer. What you have is a pain point. It could be your customers’s pains, your team’s pains, or even your own pain. The existence of that pain is the problem. Your job is to remove that pain without introducing even greater pains.
There’s a funny thing about ambiguous problems: they don’t have a clear right answer. Every solution offers certain benefits and has certain downsides. The more of those you discover, the better you’ll be at balancing the tradeoffs you have to make. Some common trade offs to consider:
- How long will it take to develop the solution?
- What’s the opportunity cost?
- How risky is it? What happens if that thing fails?
- How much work will it be to maintain this going forwards?
- How far will it scale? How far does it need to?
With these ambiguous problems, sometimes the best answer can be “keep doing the thing we’ve been doing.” That was a tough lesson to learn. Keep this in mind when designing a solution:
- Consider how much risk any new project might add to the system
- It’s okay to fail. If you never fail then you’re not stretching yourself
- Get feedback early!
To get that feedback communication is crucial. Tell people what you’re going to build before you build it and let them warn you about any pitfalls before you step into one.
But collecting feedback requires a soft skill: empathy. Can you understand why people disagree with you? What are they valuing differently?
You may not always agree with the feedback, but you have to understand it. Only then can you move forward with a new vision that everyone can get behind.
When given a task, ask yourself who needs to be bought in. Try to get everyone involved, informed, gather feedback, and ultimately bought into the solution.
- Get your manager to agree and gather their input early
- Build consensus with the rest of your team
- Even people outside your team who have a stake in your work
You'll be tasked with things that span multiple teams. First step was talking to them all to really understand their concerns and priorities.
See if you can "change the constraints", and shift a problem so that you can address concerns from all sides. Learn to say "no" to make the solution fit the given constraints.
That’s the general flow of any project you work on at the senior levels: You research the problem, gather the pieces, understand the world better. You design a solution, collect feedback and adjust course as needed. Then the implementation begins.
So how do you learn all these skills? Experience. Jump out of the nest and flap your wings. If an opportunity shows up, take it. You won’t feel ready, no one does, but that’s what makes it a learning experience.
Ask for help. Listen to the answers you get. Keep trying. At the end of the project ask for feedback and use it to improve faster. You only learn these skills by practicing.