10 top skills to look for in a Senior Developer
by Pedro Calado, Talent Account Manager @ Xpand IT
In the technological ecosystem, evolution is a common goal among developers. All the knowledge acquired is valuable. However, those who have years of experience in this area may wonder what their outstanding competencies are, as well as what are the skills most valued by technology companies in a senior developer.
The role of a developer must be relentless in many ways. Just like a superhero from the seventh art universe: Marvel, DC, or a protagonist from an adventure or science fiction movie, it requires several episodes of discovery, evaluation, learning, building, and scaling. All of this depends on your intentions and actions throughout your academic, personal, and professional career, and they don’t necessarily imply a lot of time spent consolidating your personal brand, team, or product.
What is a Senior Developer like?
There is no earned milestone or badge that allows one to judge that a developer is indeed Senior. There is no unanimous definition, this title is fluid and serves as a stage for a myriad of meanings for any company, startup, or recruiter. It is not even correlated with a large number of years on the CV, or experience in the field. It is not quantity, but quality, good teamwork, and synergy between elements, that matter. And let the Senior Developer who has never learned something from a Junior, or newer member of the team, cast the first stone!
In other more complex interpretations, what may weigh more is know-how, the mastery of a language or tool, the knowledge of all the answers, or the posture of not being afraid to ask questions or ask for help, the respect of colleagues and the community of programmers, the growing admiration and accumulated wisdom over several sectors or organizations, the knowledge of the absolute truth and the number of bugs fixed per minute at the keyboard, thousands of effervescent and validated commits, pull requests and merges in Git, accompanied by good music, large amounts of coffee, tea, Red Bull or, for the more courageous, something with alcohol content.
The difference lies in the wisdom and actions of each of the profiles, better management of time and expectations, in addition to the different posture and approaches when facing the same problem. When faced with a thorn in the code or bottleneck, the Junior Developer thinks “I have no idea how to solve this problem, I’ll never get good at this if I keep googling for the answer”, whereas the Senior Developer attacks the same situations with a conversation with a colleague, with more than 30 tabs open on Google and StackOverflow to “buckle up!”, and solves that same problem.
This is the kind of experience that makes a difference in a Senior profile. It’s someone who can recognize patterns because of a mistake made in the past, or because they’ve succeeded on another occasion. No mistake is so random or too complicated that can’t be solved: there is always a way to solve it, overcome it and move on, without quitting or being able to help others grow along their path and learning. This is the only way to really grow: when knowledge is shared, and experiences are used to help a team when someone is stuck and one is able to get them out of a jam or lighten the load.
The Senior Developer also goes further, knowing that the complexity of the problems they solve increases with time, so if they can Google or StackOverflow the complete solution to the problem, then they don’t do it. Instead, they break it down and research something here and there, being able to handle every step of the process — building and consolidating the best code possible, analyzing and understanding the problem, elaborating a viable solution for it: testing piece by piece, in blocks or the entire solution, finally integrating and implementing it efficiently without critical errors.
It is often said that learning to program (well) is like climbing a mountain, jumping from tutorial to tutorial, course to course, with certifications and badges in between, learning all the concepts, tricks, and best practices, and applying gamification concepts. Each developer chooses a different path, and has a unique experience, overcoming countless obstacles along with various and complex challenges. And although still having much to learn, they conquer a myriad of checkpoints and moments of motivation that are authentic roller coasters to earn points, and supernatural powers for those who are not in the area of programming or computer science. It is in these conquests that our hero Developer learns the wisdom of Peter Parker’s uncle, a.k.a Spider-Man, that “with great power comes great responsibility”.
The skills a developer should have can be found in characters from comic books, video games, movie theaters, or films. Right?
A developer’s impact is both tangible and intangible in business initiatives, and brings enormous potential to the company, team, and customers, in addition to a wide involvement in the organizations (inside and outside the office walls), in various sectors and spheres of the daily life of any person (whether in the IT area or not).
If you’ve been in IT for a few years, you must already be aware of the strength and importance of your role today. This range of possibilities means that a Senior Developer must have several superpowers, regardless of the number of years of experience that set them apart from others along the way, or in their Story Mode:
- Research. There is always something new in developers’ missions and side quests. Finishing a course or earning a certification does not mean the end of the road, it is just the beginning of a journey, a game, or a movie, that starts with much more than a “Hello World”. Any developer should start with a plan and some questions like: “What is my end goal, and what do I want to achieve?”, “What is this technology for?”, “Why does it exist and what problems does it solve?”, “What opportunities are available in this path?” or “In what context is this technology most effective?”.
- Capacity for continuous learning. There are countless ways to brush up on fundamentals or refresh knowledge. Either through training, courses on Udemy, EdX, Coursera, tutorials on StackOverflow, YouTube channels, a range of certifications, books or even learning from mistakes. Sometimes “you learn from the worst”. Learning about concepts outside your field is a plus.
- Autonomy. They must be autonomous, being able to do their tasks with minimal assistance, just like Luke Skywalker when he finishes Jedi training and feels ready to take on something much bigger than himself. You have what you need, and you know how and what must be done. Now use the force!
- Orientation. They must be able to design and code on their own and, if necessary, be able to mentor, teach, and impart knowledge to others on the team.
Pairing Senior and Junior elements in the same team brings benefits for both, and can become a long-term symbiotic relationship, even for the company that intentionally combines them, by sharing ideas, experiences, new trends, new inputs, and promoting the transmission of knowledge among peers.
These dynamics generate and consolidate careers in team management, tech leads, project managers, and even future unit leaders, who started out as consultants or functional analysts, but have been clearing the mountain and unlocking new skills along the way.
Senior developers who have worked on various projects have a much more varied and deeper understanding of how to develop sustainable, robust, and reusable code and systems. No one needs to invent the wheel or do everything from scratch: they have a sense of what projects are worthwhile and can help manage the expectations of stakeholders with or without literacy in technology or programming.
It all comes down to being able to look beyond the corners, not cutting corners, not programming over the knee, but by preventing Junior programmers from creating overly complicated and inappropriate solutions or doing work that may have little or no impact on the company, or client they are working for — and unfortunately not every company or employee does this, and it comes at a huge cost.
Even Cristiano Ronaldo can’t sit still and relax on the bench when he plays for the national team: he leaves everything on the field and transmits everything he knows, either inside the four lines or in the locker room, even when everything seems lost. And you, are you the Ronaldo of the team, or can you point out who “kicks it well” when it matters most?
- MacGyverism. It is very common for developers to run into various programming problems when creating almost any solution (be it a website, application, data solution or design). A Senior Developer chooses the right tools, fixes, or solves problems that often seem to be unsolvable, with a positive attitude, improvising and extricating themself from any situation by “doing the impossible”.
- Insight: You don’t need to be like Inspector Gadget, work for the FBI, or write like Saramago, a few words are enough: a good requirement gathering, one or another constructive comment in a line of code, or good documentation make all the difference. One of the superpowers of a Senior programmer is the ability to understand and convey needs, requirements, instructions, and problems in a minimum of keywords.
- Testing & Experimentation: Just like in an open world RPG game, the best developers are curious and passionate, they like to go to every corner of the map. They explore incessantly, stick their nose into anything they find, try things that are efficient or not, some that work one day, and the next day is already obsolete or full of bugs. They test the world of technology stacks, IDEs, development methodologies, cloud providers, containers, automation, optimizations, databases and integrations, testing how the world responds, accept it, or if it is still embryonic to their behaviour.
- Spider-Sense (or sixth sense). You’ve certainly seen enough Marvel and Spider-Man movies to know what spider-sense is. A very useful power, don’t you think? Senior Developers have it too, being able to anticipate any kind of problems or risks well in advance and to suggest solutions for them.
- Firefighting. Just like a fireman or a first-aid doctor who jumps out of his vehicle to face an unknown, unexpected situation for which they may not be prepared, there are so many assumptions and decisions that programmers must make. These individual or collective decisions are defined and consolidated in each sprint planning, daily and retrospective. In addition, this ability to anticipate certain situations, help peers or get hands-on to put out a more uncontrolled fire or suspicious smoke, combined with the experience and intuition to guide them, quickly saves them from a wrong turn, from falling into a rabbit hole so deep that there is not enough CTRL+Z to get back to the starting house. Indeed, this doesn’t just cost the developer, it costs both the company and the customer.
- Vision. They must have a good vision and knowledge of applications, infrastructure, and the business. They’re exposed to various and valuable experiences, which help them to improve their craft. They can see the alignment of the project with the goals of the Unit and the organization.
- (Bonus 1): Adaptation and resilience. Since you started your academic journey, how have you evolved since level 1? How and how much has your world changed since then, do you recognize any changes in the last 5 years? What about in the last 2 years, with the pandemic that has permeated every sphere of our daily lives globally?
Just like in a game, each journey and story mode of a character is different and a real maze with several exits, and adaptation is a crucial tool for the evolution of any programmer.
The technology ecosystem is constantly changing and growing exponentially, with new technologies being introduced, tested, and implemented, and the evaluation of existing technologies happening every day, everywhere in the world. Developers need to keep up to date with the latest languages, technologies, platforms, tools, and methodologies and change their roles according to the needs of the day and, in some cases, the hour.
- (Bonus 2): Optimization. Efficiency through writing optimized code that performs well over time is a rare skill, but not impossible. It is something that generally evolves and is cultivated with experience, practice, and exposure to diverse environments. When developing any solution, developers should consider the parameters of optimization and design the solution in a way that best serves its users.
In addition to these superpowers, there are some more that are just as important, or even more important, along a Senior Developer’s journey, being assets that have a great impact along their professional and personal journey: empathy, emotional intelligence, attention to detail, hindsight, and self-assessment. Each of these words speaks for itself, right? 😊
Many developers may already have several of these top skills in mind. But just like a new superhero who at the beginning of their movies/BDs learns to deal with their superpowers, the principle here is the same for those who are progressing in their IT career, with the goal of reaching the top. There are no standardized and unanimous criteria to determine seniority level, it is assessed based on a combination of hard skills, mindset, attitude, soft skills, and experience.
A Senior Developer is experienced in the clear and succinct gathering of functional and technical requirements, assuming good expectations in terms of effort, and critically analyzing these same requirements. They are also able to build solutions and infrastructures for medium and large-scale projects, being able to prioritize crucial tasks to less important or unnecessary ones, considering the degree of urgency, importance, and impact in managing expectations at each moment.
They are equally responsible and have more ownership of the entire project, being able to delegate tasks and distribute them to make the work more fluid and faster, automating and gaining time whenever possible, without giving up the attention to detail in the delivery and implementation of the solution.
For a developer to be considered genuinely Senior, they need to learn: through tutorials, books, courses or training, by talking to other Senior Developers, forming and consolidating their own opinions and best practices, and finally sharing them with Junior members.
They must truly understand the ideas and concepts behind languages, platforms, and technologies, learn how to write good code and understand why projects fail or move forward. Learn about patterns and really understand them by exploring on their own, through code review or code shadowing.
A true Senior Developer doesn’t just learn on the job, they rather acquire skills outside their field of work. They learn about other areas, game development, operating systems, databases, integrations, etc., always seeking ideas that can be useful in their daily life, perfecting the fundamentals and building upon them, just like a character evolves in a game or a hero in the seventh art.
In addition, the ability to communicate and think critically, to find efficient and more appropriate solutions (there is no single or ideal solution, only some are more appropriate than others), understanding of the project needs, expectations of the technical and business team, and the ability to plan the future of the solution every sprint, one day at a time, are equally important.