After years of working in the software development field, I've reached the esteemed position of a Senior Developer. It wasn't an easy or quick journey, but to help you get there, I've shared some tips that I wish I had received during my career:
5 Tips I Wish I Had Received When I Was a Junior Developer
5 Tips I Wish I Had Received When I Was a Mid-Level Developer
Now, to complete my trilogy of posts celebrating over a decade of learning and knowledge gained in software development, I present the 5 practices I use to improve myself as a Senior Developer.
Find Problems
It's expected that Senior software developers are independent, and this goes beyond the ability to solve problems, being essential also in the capacity to identify them.
The most exceptional professionals I've worked with didn't passively wait for demands. On the contrary, they took the initiative to actively seek out significant debts in the applications. However, this search takes time, as it requires investigating different parts of the system, which involves code review, metrics analysis, and discussions with team members.
The purpose of this exploratory approach is to discover problems, such as technical bottlenecks, system gaps, negative impacts on user experience, among others, to then bring them to light. In other words, it's to bring these critical points to the attention of those responsible. At this moment, another vital competency emerges: persuasion.
Anyone who has worked on large projects knows that demands are numerous and, often, not organized in the best possible way. Therefore, it's crucial to argue the importance of solving these fundamental issues with leadership, elucidating the consequences of not addressing them, so they can be properly prioritized.
What do I do? Present data! By providing data that demonstrates code inefficiency, high cost, low performance, or any other aspect negatively affecting the application, you significantly increase your chances of success by highlighting new problems that need to be addressed.
Don't Overengineer Solutions
Focus on developing solutions that meet the current needs of the system, avoiding the trap of adding unnecessary complexity or anticipating future improvements. As a computer scientist, I'm fascinated by solving difficult and complex problems in the most sophisticated and optimized way possible. However, we often lack the time and resources for such at work.
What do I do? Build only what's necessary. This doesn't mean "do it sloppily", it's just an approach that avoids potential over-scaling or layers of abstraction that may not be necessary at the moment, or may never be.
Avoid over-planning for the long term. Focus on launching the product, tool, or feature so that it meets the current requirements, and then improve and scale it gradually, based on metrics, feedbacks, and the real needs of users. This avoids spending time extending the construction of an overly complex system that may not meet the real expectations.
Finally, accept technical debts. In the real world, factors external to software development influence deliveries. Thus, there will always be aspects to be improved later. The sooner you recognize this, the easier it will be to manage situations of over-engineering.
Understand the Business of the Organization
The impact of a Senior Developer goes beyond the technical aspects of the projects they are part of; it's also expected that there is an alignment with the business objectives of the project. Therefore, it's crucial to understand how technical aspects affect the financial outcomes of the organization.
The phrase "engineering is an isolated area" is something I've heard in various contexts, but I consider this view outdated. The business concerns of the organization must be fully understood by the software development area, allowing prioritization of projects that have the potential to generate significant value, whether by increasing revenue, improving efficiency, or reducing costs.
What do I do? Participate in discussions. Although it can be exhausting to be part of many conversations, strive to be as present as possible in them. After all, you never know when valuable business information might come up. Volunteer to participate in meetings discussing projects or future directions of the organization, keeping yourself always aligned with corporate objectives.
Promote a Positive and Productive Culture
Significant technical contributions are what's expected from a Senior Developer, but their role goes beyond. It's essential to promote a positive and productive work culture, a crucial element for the success of the organization by increasing the ability to attract and retain talent.
What do I do? Cultivate the culture. Leadership becomes much more effective when it's exercised by example. Therefore, foster collaborative cultures, through hackathons, meetups, conduct pair programming sessions, write influential articles on blogs, speak at conferences, and actively involve yourself in optimizing your organization's interview process. These initiatives cultivate a dynamic and welcoming work environment.
Once, I came across the phrase "be an architect of culture." I believe this phrase perfectly defines what is expected of a Senior individual: someone committed to creating an inclusive and supportive environment where everyone is encouraged to learn, grow, and contribute to their fullest potential.
Seek Inspiration
Surely, there are people who inspire you, those to whom you aspire to reach the same level of achievements but might not know, or even believe, it's possible to get there.
What do I do? Talk to these people. Seeking to understand how they act, deal with certain situations, the way they think, and how they achieved their goals shows a path to be followed. If you don't have direct access to them, look for content that addresses these exceptional personalities and try to emulate their positive behaviors.
Often, we fall into the error of comparing ourselves to others instead of being inspired by them, which can be demotivating. However, the truth is quite simple: the goal is to compare ourselves to what we were yesterday, aiming for the level we want to reach based on our inspirations. It's with this purpose that I share my experiences and learnings, hoping to inspire and be inspired by others. In this way, I continue to improve myself to become an even better developer, and I hope you can also achieve your best version.
Top comments (0)