As an Engineering Team Lead, I have had the opportunity to conduct more than 100 interviews in my career, and often I face the challenge of having to assess if the candidate fits in a Senior role. With the intention of supporting developers on areas they might have not have explored or mastered, I’d like to share my experience of what it takes to be a Senior Mobile Software Engineer.
No matter if you are an iOS or Android developer, there is a vast amount of knowledge to acquire on these platforms. From understanding the basic SDK components to mastering design or architecture patterns, it’s the developer’s responsibility to keep track of and pursue their next steps in their learning journey. Being familiar with the main development blogs, books, forums, and events will go a long way in gathering and consolidating your knowledge.
Whilst platform knowledge makes you a great specialist, it’s paramount that your expertise is built on top of clear understanding of the fundamental principles of programming and software engineering. Object Oriented and Functional Reactive programming paradigms, design patterns, ability to write clean code and apply SOLID principles, structured refactoring, and avoiding over-engineering are only a few examples of items that should be part of your toolkit.
The concept that Software Engineering has no silver bullets (meaning no solution, library, or tool are applicable to all problems) is also an important factor to gauge a developer’s seniority. Strong opinions that take no consideration for factors like team experience, timelines, environment, client expectation, and trust have no place in the real enterprise world.
Much like a master sushi chef knows how and when to neatly use their arsenal of knives, developers should seek mastery in using their daily tools. Platform IDE, git, terminal, scripting, and ultimately programming languages should all be handled graciously by a senior software engineer.
Mature software development teams have clear processes that enforce quality, mitigate risks, and save time. Senior engineers are comfortable with Agile practices and ensure consistency through code reviews, keeping a high test coverage, automating build distribution and performing deployment checklists.
Mentoring and Tech Leading
Senior Software Engineers are an authority on both their platform and the development practices. They lead and improve their team by mentoring and stretching other developers, run presentations on a range of topics, and provide thought technical leadership to their own team, clients and stakeholders. They also possess strong soft skills to motivate the team and keep the morale high on challenging circumstances.
Long gone are the days when being a software engineer meant sitting at your desk for the whole day, programming for eight hours straight, and not interacting with people. In agile environments, where communication is key, focusing on mastering this skill should be everyone’s target. From explaining a topic to a colleague, participating in a daily stand up, or presenting demos to clients, knowing your audience and being clear and engaging are paramount.
Senior Developers are encouraged to have more responsibilities than just coding. Participating in interviews, mentoring, organising events, or creating podcasts are examples of activities that reinforce someone’s ability to provide more than just technical expertise to the team.
Even though time will still play a big role in building your experience, having a great job can significantly boost your personal development. While it’s a fact that the more you train, the better you will be, years of bad practices unfortunately won’t make you progress as much as you could. That’s an unfortunate reality when I see candidates with 7+ years in the industry but very little experience. Be mindful of the company you join, and seek an employer that will offer you the right opportunities to get the most out of your career and turn into the great developer you are meant to be.
Raphael Oliveira is a Team Lead at Outware Mobile