Table of Contents
A little over a year ago, I decided to leave a staff engineer position at my then-current company and start fresh as a senior developer. It felt like I was throwing away years of investment in developing my people and technical leadership skills, but the allure of working in the crypto industry had been tempting me for some time and ultimately led me to make the move.
It took me a while to fully process the tradeoff, but eventually, I was able to let go of the feelings of guilt and focus on my growth and self-improvement. As I traverse this path once again, several things strike me in a different way than they did before. In this article, I will outline a couple of random thoughts that I’ve been collecting as I experiment and improve my approach to software engineering.
Technical skills #
It’s easy to forget. Always keep one foot on the ground.
As we move up the career ladder, it’s common to spend less time doing technical work. However, in my opinion, it’s crucial to keep an eye on this metric and make sure it doesn’t drop to zero. Throughout my career, I’ve been closer to delivery, and I’ve always been critical of architecture astronauts and their unfeasible ideas, until one day I was also floating in outer space without even realizing it.
During my first few weeks as a developer, I felt a mixture of excitement and embarrassment as I made the same mistakes I had repeatedly warned my previous teams against. As a rule of thumb, whatever your level of seniority is, if you have a technical leadership position, you should spend some time yourself doing fieldwork. Keeping one foot on the ground will make you aware of the issues and limitations affecting your team, while at the same time giving you the field knowledge required to make good and realistic decisions.
Work on building relationships as if they were a required skill.
Establishing oneself in a group setting varies depending on each individual’s personality, but it is not solely dependent on it. I have found that intentionally connecting with others, doing frequent catch-ups, one-on-ones, pair programming, or whatever promotes spoken communication, goes a long way in earning your place in the team, especially in this post-COVID era where everyone is just a portrait on Zoom. Building trust within the team increases the likelihood of your ideas and contributions being taken into account, and it also increases the quality and honesty of the feedback you receive from your peers. As a side effect, teams with strong bonds between members tend to be healthier, more motivated, and more resilient to external pressure.
Mentors and sponsors will speed up your growth.
Learning and growth opportunities are everywhere, provided that you are willing to take them. However, having trust and credibility might not be enough if you don’t know how to identify those opportunities, which is likely to happen if you are new to the company. It is much easier to navigate if you are getting oriented by someone who has walked that path before. Therefore, always try to surround yourself with more experienced people and allow them to help you steer your career. This principle applies to pretty much every role, regardless of the level of seniority. You’ll be surprised to find that most people are willing to help if you approach them with humility.
Culture is not just about being nice. You should prepare for it.
As humans, we all have different ways of speaking, thinking, and doing things. This diversity can have a powerful impact on your growth, whether positive or negative. Companies that create a safe space and encourage cultural exchange will benefit from their employees experimenting more and sharing knowledge, resulting in both individual and collective growth. In contrast, toxic cultures hinder growth, as people become more afraid to fail and are less encouraged to experiment and share ideas.
What I’ve come to realize is that the company can only meet you halfway through. Working in a diverse environment goes beyond being open to differences in the sense that It requires you to study them so that you don’t send the wrong message or draw the wrong conclusions when interacting with your peers. A friend of mine recommended me the The Culture Map, which i found to be quite a useful tool for providing context when interacting with someone from a different culture.
Different approaches #
You’ll learn different ways of doing things you already did.
As we progress in our careers, we tend to develop strong opinions and habits on how to approach certain problems. Starting a new job can bring different perspectives that challenge our established approaches. As the authors of Software Architecture: The Hart Parts defend: There is no right or wrong, just different trade-offs and ways of thinking. Avoid making assumptions and listen to other opinions before forming your own. Remember, the company already existed before you arrived.
Starting over #
You’re not starting from 0 nor throwing away what you’ve achieved so far.
Switching companies and roles is a big undertaking, especially at a psychological level. The idea of giving up something that cost us so much to achieve and starting over can easily feel like a downgrade to our career. While to some extent that may be true, you can carry past experiences to the new position, which will give you a head start and make the next attempt easier. Moreover, you can improve and perfect your skills, pretty much like doing something for the second time. Just like we rarely get a computer program to work the first time, It’s okay to make career mistakes. Instead of focusing on feeling like you’re moving backward, retrace the steps from your past experiences, see where you can improve, and do it better and faster until you’re happy and proud of what you’ve accomplished.
Comfort zone #
Don’t be afraid to stay in comfort zone. This could also mean growth.
Most self-improvement content will tell you that leaving your comfort zone is necessary for personal growth, but I never quite fully agree. In my opinion, it makes sense to push yourself out of your comfort zone at an intensity level, such as taking on bigger and more complex challenges or working harder. However, I found that I produced better output by eliminating nonessential tasks that made me uncomfortable, such as public speaking or people management, and instead focusing on what I enjoy most, such as coding and architecture.
We tend to perform better at tasks we enjoy because we are motivated and willing to experiment, learn, improve, and repeat as many times as necessary. In a way, this can also be seen as stepping out of our comfort zone, as we are constantly pushing ourselves to improve in areas we are passionate about.
Final remarks #
Looking back on the past year, I am glad I made the move, but the feeling did not come immediately. As I returned to work and experimented with different approaches to my career, I realized that I had forgotten what this feeling was like, and in some cases, had never experienced it before. Although I kept the same goals, I took a step down instead of making a career change. Whether there will be two steps up or not, only time will tell. For now, I can say that this move allowed me to rediscover the joy in software development while also reflecting on areas where I can improve and, bit by bit, become a better engineer.