It was a difficult and challenging journey. Many times, I believed that I had reached a senior level, but my tech leaders thought otherwise. The issue was that none of them could provide clear guidance on how to progress in the right direction. Each one had a different opinion. It took me five years to finally overcome this hurdle. I decided to help others who are looking for clear answers and guidance to create an action plan. I am confident that you can achieve your goals faster and with less difficulty.
After reviewing these criteria, you may realize that your current company is undervaluing you. In this case, you can confidently ask for a promotion or look for a new job. If you are already a senior developer and are unsure whether other companies will evaluate you in the same way, this article will help you identify your growth areas and quickly level up. On average, outsourcing companies often have lower requirements for senior developers because they can sell their services to clients at a higher price. In contrast, product companies try to optimize costs and may undervalue their developers.
So, let's begin!
After performing an analysis, I identified seven essential criteria. Every business aims to spend less and earn more. Therefore, money is at the core of each criterion.
Planning and pragmatism
You manage risks and think strategically. You know when to implement solutions quickly and straightforwardly, recognizing that a certain aspect of the project may no longer exist tomorrow. And when you need to invest time in architecture and profoundly work everything out so that it is fast and reliable in the future.
You have a vision for how the project will develop in the future, and you make architectural decisions based on that vision.
You are capable of independently decomposing large features and then planning the development in an iterative approach. This way, the business can start benefiting as soon as possible.
You can estimate the time required for a task in a way that doesn't lead to working overnight and missing deadlines. You can take risks into account and don't let the business down. If something is going completely wrong, you timely suggest alternative solutions.
You have a good understanding of the current development process and can identify its shortcomings. Based on this knowledge, you can suggest improvements to make the process more efficient and effective.
Speed
You possess highly advanced skills. What a junior employee might accomplish in a day, you can complete in just a couple of hours. You rarely need to search for information on how a programming language or library functions work. With your extensive experience, intuition guides you towards solutions with ease.
You know how to quickly and consciously debug code.
Accuracy
You can easily and quickly account for all possible edge cases by considering scenarios such as a large amount of data, unexpected user behavior, or third-party service failures. By anticipating and planning for these situations, you can ensure that the data is saved and users have a positive experience, even if a server goes down completely.
Your code is clean, understandable, and minimal. The style is consistent, and the naming is clear.
You understand how to organize a project by considering layers, creating clear abstractions, ensuring modularity, and determining how components are connected to one another.
The number of bugs in production tends toward zero. The money the business would have spent on fixing bugs and retaining unhappy users is already included in your salary.
Your code works efficiently. You know about data structures and their differences, and you understand how to achieve fast and smooth product performance.
Ideally, you can solve complex problems with simple and inexpensive solutions.
You possess a high level of expertise in the tools and technology you use.
Autonomy
You no longer need help with code or technology.
You will communicate directly with the business to clarify requirements and work out necessary features for implementation.
Broad knowledge
You stay up-to-date with the development of the technologies you use, including new features of the language and frameworks. You have already subscribed to various email newsletters and follow industry leaders on Twitter.
You have worked on several projects with different teams, solving various problems and using a variety of technologies. As a result, you have gained an understanding of the pros and cons of different approaches.
Battle experience
You can integrate the best practices: testing, CI/CD, error monitoring, and so on. By the way, I wrote about this in another article: 7 Proven Practices to Boost Development Speed and Project Quality
You have created projects from scratch, guiding them through all stages: from hypothesis validation to a fully-fledged production application.
Knowledge sharing
You can mentor less experienced colleagues.
You conduct high-quality code reviews: you notice not only the absence of space in a line but also think in terms of solving the problem as a whole.
Ideally, but not necessarily, you do this publicly: write articles, teach, engage in mentoring on special platforms, or organize workshops. Receiving external validation is a huge plus.
In conclusion, you can discuss the possibility of including these criteria in your personal development plan with your manager, or ask your colleagues to evaluate you. This can be a valuable way to continue improving in your role.
Thank you for reading my article! I hope my guide was helpful. Feel free to leave any comments or suggestions you may have, and don't hesitate to share your success stories in the comments. Also, your likes and comments inspire me to write new articles.
Top comments (8)
Yes: "You no longer need help with code or technology."
No: "you do this publicly: write articles, teach, engage in mentoring on special platforms, or organize workshops"
I have a life after work.
anyways good read
Thank you! For sure, :) It's absolutely optional. I know brilliant engineers who don't do this at all
Good read but most of your points are about hard skills. A senior developer needs to have a good set of soft skills. For example, communication (specially timely communication) is a very important skill and it was not mentioned at all.
In any case thanks for writing the article and sharing your experience!
Thank you! Yup, itโs true:) I would also add two concepts to communication: assertive and nonviolent communication. There is good literature and trainings on these topics
As a junior developer, this is awesome to read as well. Really shows a lot of directions I can aim for to improve myself as a dev! Great read!
Thank you so much! Good luck in your career and professional path
A great article to read especially for junior developer like me, this directly aim to improves developer skill with those essential points.
Thank you:) You're on the right track