So you are now a software engineer in an IT company and you want to get promoted to a Senior Software Engineer. You want to know what are the things you should do so that the management promotes you in the upcoming appraisal cycle.
Please note that you should be willing to perform the duties of a Sr. Software Engineer in your company before reading this article. If the answer is Yes, please proceed reading. Many people are confused and some don't even know what are the roles and responsibilities of a Sr.Software Engineer.
Hopefully, this blog post will clear your doubts and give you the reason why you are still a Software Engineer and what you need to do to become a Sr. Software Engineer.
Let us understand what a Sr.Software Engineer does differently versus a Software Engineer.
This will let you know about what you need to do to get promoted to a senior role.
You then need to exhibit the below Senior qualities in your company so that the management makes a decision to promote you.
#1 Writing code
Writing quality code is the primary requirement to call yourself as a software engineer. You are hired to write code. Quality code. Code that adds value to the company's business. Code that implements a business logic.
Software engineer writes good quality code and implements a functionality for a project.
Sr. Software engineer creates projects, libraries and enhances the underlying framework.
Software engineer writes unit tests for the functionality.
Sr. Software engineer writes unit tests for all the edge case scenarios and knows when a unit test should fail.
Software engineer implements an already designed workflow.
Sr. Software engineer creates design documents, tries to design a new workflow and also implements it.
#2 Reviewing Code
Code reviews are very important and they ensure that quality code is being written and the project is polished, well written and follows guidelines. However, the type of code review "comments" differ between individuals.
Software engineer provides comments about static analysis and lint errors.
Sr. Software engineer sets up Static analyzer and Linter for the project.
Software engineer provides comments on following the coding standard.
Sr. Software engineer creates a sophisticated coding standard and then asks others to follow.
Software engineer provides comments on indicating the issue in the code.
Sr. Software engineer indicates the issue and also suggests a fix for the issue / provides guidelines on how the issue can be fixed.
#3 Development Process
Software engineer follows the software development process end to end and complied with all the protocols defined in the system.
Sr. Software engineer creates different processes and approaches in the development ecosystem and creates a standard out of them so that the system is maintainable
Software engineer learns different processes by taking Knowledge Transfer sessions.
Sr. Software engineer gives the KT sessions to other engineers and trains them to comply with the processes.
Software engineer tries to patch the defects in the process and improves the system.
Sr. Software engineer invents an end-to-end process and also patches the defects in it in the long run.
#4 Code Quality Software engineer writes high-quality code that is tested and bug-free. Sr. Software engineer writes code that is tested with all edge cases and covers a wide range of unit tests and integration tests. The code is often tested by examining its side-effects on other projects that are dependent. Software engineer writes code that complies with the requirements. Sr. Software engineer reviews requirements and analyzes the feasibility, testability, and legitimacy of the approach. If an alternative effective method is available, the senior engineer provides feedback to the strategist/designer to alter the requirements. Software engineer chooses the best approach in the programming language to improve code-quality Sr. Software engineer not only thinks about choosing best approaches in the programming language but also tries to validate whether the libraries/dependencies used in the project are the right ones that provide compliance, the framework is enhanced to support the requirement and the senior engineer makes code changes in the framework level if required. #5 Ownership Software engineer partly takes ownership of the entire artifact/feature that needs to be implemented. Sr. Software engineer takes end - to - end ownership. Makes sure that quality code is being written, well tested and is not breaking other workflows, and ensures the deployment of the artifact is successful. Software engineer fixes bugs and defects by complying with the requirements given, Sr. Software engineer refers to the requirements written earlier and makes sure that they are not broken. He then fixes the bug, builds and deploys the application. Software engineer often makes statements such as "it is a tester's responsibility to test" Sr. Software engineer tests the functionality ahead of putting the code for review and doesn't hold the tester/validation engineer accountable for a defective released product. The senior engineer willingly fixes the defect that is found by the tester and takes an extra mile ensuring the integrity of the application/product. #6 Mentorship Software engineer usually receives mentorship and tries to mentor other new developers in the team. Sr. Software engineer regularly mentors software engineers, provides them guidance on how to tackle a problem and given them enough information about a scenario before they start working on it. Software engineer will try to fix the problem if another engineer in the team is stuck with a road-block. Sr. Software engineer tries to provide guidance / path to the engineer who is stuck and tries to make them find a way out to fix the issue. #7 Mentality Software engineer complains to the management when asked to spend extra hours for a task. Sr. Software engineer generally avoids complaining and takes that extra mile in the interest of getting work done. Software engineer doesn't want to take accountability of Testing and Deployment Sr. Software engineer makes sure that there is enough collaboration between the testing team and deployment team so that the issues are caught ahead of releasing a product. Software engineer tries to deliver only the piece of work that is assigned to him/her. Sr. Software engineer will ensure that other engineers are also able to deliver their work by providing assistance throughout the project/process. #8 Relationship Software engineer occasionally has friction with the Management. Sr. Software engineer tries to avoid friction even if they are 100% right. (this is unfortunate but this is how the world works) Software engineer maintains a good relationship with all the team members. Sr. Software engineer develops a good relationship with multiple teams in the organization, This helps build rapport and these relationships lead to the success of the project. Software engineer asks for good pay raise during the appraisal cycle. Sr. Software engineer asks for more ownership and responsibilities. This will eventually lead to a high pay scale raise as well. If you are looking forward to becoming a senior engineer, get the mindset of taking up more responsibilities. Life ain't easy. It only gets harder. But as we grow in any industry, our skills get evolved as well and we tend to uplift ourselves to senior positions.
We need to keep evolving cuz that's what life is all about. We take newer, harder challenges and achieve them. Once we achieve them, we get that personal satisfaction. Once we get personal satisfaction, we will be ready for the next level.