Have you ever wondered why the market for software engineers is so hot despite the increasing number of people learning how to code and increasing the pool of available engineers? The answer lies in the fact that while the number of engineers increases, the number of truly senior engineers is rather small. There is much more to being senior than just writing great code. Read this article to learn about things that you can start doing to grow into seniority.
The advice in this article is mostly applicable to tech companies (especially Sillicon Valley-like companies) but some of the ideas might also work in more traditional companies.
The career path of a Frontend Engineer is not very different from one of a backend engineer. It usually starts with the (Junior) Software Engineer level, followed by Senior Software Engineer. At this point, you decide whether you prefer to stay on the Individual Contributor path and become a Staff or Principal Engineer or switch to engineering management.
Overall, the more senior you are, the more you are expected to solve problems beyond writing code. What’s more, you should also be able to identify problems, propose solutions, and make sure they’re solved. Another crucial aspect of seniority is visibility - in order to get promoted, you should make sure that people are familiar with and value your work. You won’t accomplish this just by solving the tasks that your manager assigns to you.
The subsequent paragraphs list a few ideas on improving your visibility and demonstrating seniority. I divided them into three areas: technical expertise, product/UX, and leadership. You should pick one of these areas and specialize in it. However, it usually makes sense to invest a bit in the remaining two areas as well.
Technical Lead is not just an excellent programmer but can also lead a project end-to-end. That involves smooth communication with the stakeholders (including the Product Manager) to gather the requirements, breaking down the work into smaller tasks, proposing architecture design and discussing it with the team, coordinating the implementation (if more devs are involved), and finally, rolling out the new feature/project.
Who’s the best person to improve Developer Experience if not the developers themselves? Being challenged by problems such as long builds or unstable tests every day, you know exactly how great an impact they have on developer productivity. It may sometimes be tricky to get your manager to prioritize such work. When selling your ideas to the leadership, try to quantify the productivity loss (e.g., days of developer’s time lost on waiting for the build to finish per month) and mention specific metrics that you want to improve (e.g., average build time).
Nowadays, UI performance is crucial to a great user experience. In some business domains, metrics such as page load time can have a direct impact on the sales of your company’s product. If your company is not doing it yet, championing UI performance monitoring is a great way to increase your impact on the whole organization.
Identify the key metrics that you want to track (e.g., FCP, TTI, or long tasks during interactions), start measuring them, and set up notifications for them. Present the monitoring framework to the leadership and explain how these metrics affect your company’s business. An example of 3rd part software that can help you achieve that is Sumo Logic’s Real User Monitoring (disclaimer: I work at Sumo Logic).
Working on the frontend brings you very close to the product. As a by-product of developing the UI, you’re constantly interacting with the product. It makes you a great source of ideas. Maintain a backlog of ideas and periodically discuss them with your PM. Focus on low-effort ideas instead of grand multiquarter projects - it would be much easier to convince your PM to put them on the roadmap. Bring some data points to back your ideas - user requests, usage statistics, etc.
If you feel strongly about a good User Experience, you may be better equipped to focus on usability improvements instead of new features. Feel free to interview a few users of your company’s software - it’s especially relevant when the company has a strong dogfooding culture. Create a list of UX improvements that would address the biggest pain points and partner up with a UX Designer to propose solutions for them.
Having a good understanding of how your product is being used is critical to making good product decisions. You can greatly help your PM by gathering and presenting such data. Similar to how you can use Real User Monitoring to measure UI performance, you can leverage it to collect user behavior metrics. Examples of such metrics include: the number of visits to a specific route, time spent on a specific route, number of clicks on a specific button, etc. With tools such us Sumo Logic you can later create dashboards and reports with the data you collected.
This is a no-brainer. By volunteering to lead team meetings, you showcase and develop skills such as organization, mediation, and keeping everyone engaged. Don’t hesitate to ask your Engineering Manager to lead one of the meetings - they’d gladly shed the responsibility. Be sure to prepare for the meeting in advance. Create an agenda and share it with everyone beforehand. Make sure that you stick to the schedule and cut lengthy discussions short. Collect notes and action items and send out the note after the meeting.
One of the areas that often consume a lot of the Engineering Manager’s time and attention is handling all the incoming bugs and urgent requests. By taking over this responsibility, you will get better at managing chaos. You’ll learn how to better assess the real priority of an ask and to push back on the ones that are not urgent. Start small - talk to your Engineering Manager and ask for a trial period where he’d review your choices on a daily basis. Gradually, you’ll both realize that less and less supervision is needed.
Another part of the Engineering Manager’s job that you can greatly help with is nudging the owners of the dependencies of the projects your team is working on. The dependencies can include UX designs, new API (or modifications to an existing API), security review, or gathering requirements from all stakeholders. Firstly, it’s important to identify the dependencies early so that other teams can plan the work in advance. Secondly, you should actively monitor progress to make sure that when you start working on the implementation, you won’t get blocked on some missing pieces.
While process may sound scary to you, it’s just a name for a set of instructions that will tell everyone how to behave in a certain situation. It’s like programming, but with people instead of code :) Processes make the team better organized, help build good practices and reduce ambiguity. You can propose a process for virtually anything: adding a new code dependency to the repository, handling customer escalations, onboarding a new team member, adding a new module in the repository. Create a document with a process description and share it with your colleagues so that they can provide their inputs. Design the process in a way in which it is easily enforceable. Once introduced, monitor whether the process is working as designed and search for a room for improvement.
One of the most obvious responsibilities of a Senior Engineer is being able to grow the ones that you’re working with. Set up a 1-1 with another team member. Discuss their current challenges and where they’d like to be in a year from now. Brainstorm together on how they can get there. Make sure that the work they’re doing is visible to your Engineering Manager.
As mentioned in the beginning, these ideas assume that you are working at a tech company. At such companies, developers usually have a lot of autonomy and are expected to make impact beyond writing code. You may encounter pushback when trying to implement some of these ideas in a traditional company where structures are more hierarchical and responsibilities are assigned to specific roles in a stricter way. However, don’t be discouraged. I managed to do a lot of these things as an Architect in a traditional company. Sometimes, it just takes a bit of convincing.
In this article, we discussed what it means to be a Senior Frontend Engineer. I mentioned three different areas where you can demonstrate your seniority and listed a few ideas in each category. Hopefully, you’ll find them useful! Importantly, most of these ideas will not only increase your chances of promotion but will also help you develop new skills. Let me know if you tried any of them and how they worked.