Mistakes are par for the course in life, because as great as it seems to be perfect, it’s also impossible. Being perfect is a great goal to aim for, just not one we should continually berate ourselves for not achieving flawlessly.
Software Engineering Careers offer many opportunities for mistakes. They come in many different forms and we learn from our various experiences. Architecting systems and software over time is no easy task. We should give ourselves credit when things go right and always learn from mistakes - this is key to growing over time!
Below are five mistakes that I’ve learned to avoid, mostly from experience, that can help your career.
1. Putting code over people
When you think about any large distributed system, the technology was created and developed by people. There were huge discussions around the architecture, software teams built around that architecture, and partnership between teams like design, product, and security that all go into creating a fabulous new product.
The stereotypical image of a developer, you know the one who sits in the back corner to crank out code in a silo, does NOT fit into the real world well. In every single developer role I’ve had, it was the collaboration of the team making decisions that led to the project’s success; it wasn’t some lone wolf cranking out code in the shadows.
Putting code over people leads to teams that have communication gaps, misunderstanding, tension, and less productivity. Architecture decisions become battles for being “right” instead of what is “best” for the users and product? Features that are handled between multiple developers (or multiple teams) are supposed to work similarly to a puzzle: different pieces come together to form a perfect picture.
When code is the only thing we think about not the conversations and people working on each piece, then individual parts fit differently than expected. The code makes the product work, but people decide on how the code all fits together for better user experiences.
These are all reasons that Soft Skills (the skills for putting people first) are a very important part of being a great developer. I try my best to avoid the mistake of not prioritizing them in my own self-development plans.
2. Thinking your way is the ‘right’ ways all the time
All developers have gone through tough decisions, where there are multiple options to solve a new challenge. The quicker you learn that there isn’t always a “right” way to do something, the better these conversations will go.
Instead of thinking in right versus wrong, think in terms of tradeoffs and results. Based on a given result we want as a team, which of the different ideas help us achieve the best? A common trade-off between these types of decisions is the time it takes to develop them - requiring some type of compromise between the product and the dev team.
Secondly, by being open-minded to others’ ideas, you may find areas where your own solutions fall short. This frequently results in a combination of ideas that become the final decision because everyone has different perspectives on solving the challenge effectively. I believe this team ownership on decisions makes developing new features a better experience for all.
Lastly, being the difficult colleague who must be constantly persuaded on every idea causes tension within a team. I’m not saying to never push for your solution if you believe it’s best, because I do recommend pushing for solutions that have a huge impact on the business.
My recommendation on handling this well in your career goes like this:
First, only bring up a disagreement with the path forward at most twice. How you do so depends on the situation, it can be a breakout meeting or a design doc where others chime in. Once that happens, and the team agrees on a path forward, a perfectly fine response can be something such as:
“I may not agree with the decision, but I will go with the team.”
Putting the team first and being a team player means allowing others to contribute their ideas as well, and that’s what makes being a team so special!
3. Not reading official documentation
Looking up common issues in a developer community, such as StackOverflow, has been a key part of solving issues in my career. People who spend their time helping others (especially those who are kind when doing so) are absolutely appreciated.
I do believe one downside of always reaching for StackOverflow or Google is that we as developers can lose the originality of our own solutions. For example, transforming an array of objects into a map but not understanding how doing so with `reduce` might not be the only way.
The mistake I’ve made here is not truly learning from the solution or creating my own. Reading through official documentation of the libraries, frameworks, and languages you use when creating solutions has been one of the best moves I’ve learned in my career. It’s sharpening tools in your toolbox and adding new tools altogether, which is why I absolutely recommend others to do the same!
Angular is a perfect example of this! By reading through its documentation, I learned how it works, all of the different aspects of the framework, and prepared myself for the multitude of features I would be using it to implement. Can you imagine creating authorization or authentication in Angular if you never even heard of Route Guards? Thanks to reading the documentation you will never have to :)
4. Not taking care of your health
Developers sit and stare at computers for hours every single day. We don’t get enough steps, enough exercise, or enough sunlight. Over time, these lifestyle behaviours add up and become health challenges we deal with the longer our careers grow.
Focusing on our mental and physical health is absolutely critical to a successful, fulfilling career as a developer. It would be tough-talking through fitness, nutrition, and mental health in one section, so I give some very basic recommendations here.
Physical Health:
Being in better physical health doesn’t require bodybuilding routines and bodybuilder diets. It can be as simple as taking a walk each day or stretching and moving during breaks.
There is a multitude of options around exercising, from personal training, gyms with classes, peloton workouts, and weight lifting. I get it, doing something new like this if you never have can be hard. Take it one step at a time and I promise you that those dopamine rushes will change your life!
Exercising takes energy, but it energizes you. You feel better, you have more confidence, and you develop more grit.
It’s wonderful!
Mental Health:
Simone Biles during the Olympics showed us all the true courage it takes to truly put your mental health first. If she can demonstrate this on the world stage, we as developers can definitely do so in our careers! For some steps on how to do so, check out 6 Ways To Maintain Good Mental Health as a Software Engineer!
Mental health is essential for productive and quality development work and it has been something I’ve had to constantly work on prioritizing.
Health is one part of life we all take for granted, and by putting it first, we can continue in good cheer!
5. Stop learning
In the web dev world, technologies never stop advancing.
New libraries are released and eventually take over in popularity (I’m talking about you React in 2013) or libraries continually evolve as new versions are released (I’m still talking about you React version 18).
The program languages we use, CSS, JavaScript, Python, Java, and more also change and improve over time. New features are released and new best practices are recommended.
Keeping up with these changes is a big part of our job as developers. Schedule time for doing just that, whether by completing tutorials, reading curated newsletters, or checking out top company engineering blogs. It’s a must that we continue evolving our skills.
Professional development contributes to business value as well. We can do so in two ways: one we improve the codebases we maintain and we build relationships with others by talking through these best practices across the organizations.
Developers love their careers because they’re constantly evolving with new challenges, new tech, and new growth. We are business problem solvers, technology happens to be our tool, and keeping up with it is an ongoing part of our job!
Wrapping Up
It's best to avoid detrimental mistakes in our lives and in our careers. Charlie Munger mentions this in one of his speeches of life advice, using the inversion mental model to learn which mistakes to avoid.
When thinking about our career long-term, we typically ask something such as: “What are the best ways I can advance my career?”
With inversion we can also flip that and learn what to avoid:
“What are the things that would be the most detrimental to our career?” Once answered, we avoid them like the plague!
The 5 mistakes mentioned above are common answers I believe are worth avoiding, and I hope you can take something away from each that makes your career easier!