Things I Learned as a Software Engineer

What follows are some of the learnings that have stood out most in my career as a software engineer. There are countless things that I could list, and these seem to be the few where a lot of my answers come from when answering the questions of others.

Let's dive in!

1. Always Be Learning

Early in my career, I expected that I would do a ton of learning, eventually know my craft, then be an expert who could accomplish anything based purely on what was already in my head. I inevitably found myself looking things up more often than I wanted as I didn't seem to retain all that I was learning, or the landscape kept changing too quickly to keep up. Fortunately, someone more experienced than I pointed out that the cycle I felt stuck in, the repetition of it all, was a skill.

I embraced researching and looking things up, speaking to others, formulating an approach, then executing, and I got good at this. If I encountered a scenario where I already knew what to do or what to code, and how to do it from scratch, I would look it up anyway—my approach might be outdated, and maybe someone found a better way.

Recognize that change is a big part of your career as a software engineer. Whether it be frameworks, languages, third-party integrations, etc., embrace the pattern of connecting with others, researching, and studying an approach. Learning is life-long.

2. Communication Is a Skill

Treat communication like the skill it is and make it part of your life-long learning. Your industry, company, and team will change often, and you will need to broaden and enhance your communication skills to flourish in this change.

Learn to recognize your different audiences and adapt your communication style, and learn to do this well over different mediums like email, video, and all the rest.

Build muscle around calling out the things that are not working, share your opinion with your manager and team. Give feedback; this elevates the folks around you. And solicit feedback; this allows others to elevate you.

3. Focus on the Team

It wasn't just about me, or how I thought I integrated into the team, it still isn't. I learned to view a well-functioning team as an organism or system where the whole can be greater than the sum of its parts. And I learned to pay more attention to how I augmented that organism or system, negatively and positively, and made it a point to learn more about how to make that team better.

I also learned about the evolution of a team and the different ways it can grow, and some of these learnings seemed counter-intuitive. For example, it made sense to me to learn what others already knew, but I didn't understand the notion of doing it to replace them.

When I learned as much as the person next to me, it enabled them to move onto more significant challenges and roles—this was a great feeling. I then started teaching newer folks on the team, so they could eventually do the same for me.

In helping make the whole greater than the sum of its parts, I learned that assuming good intentions goes a long way. Remember to give yourself and the team permission to partake in healthy conflict and disagreement, understanding that you are all striving for the best outcome.

4. Coach and be Coachable

Don't gatekeep! Anything you gain by preventing others from getting in is small and temporary. And the loss of not having other minds, different minds, doing what you do can be vast and permanent. Work in service to your field and the people within it by growing your team, organization, and industry.

Invite people in and teach them what you know, elevate them and help them add their style, perspective, and creativity to what you do. When you focus on making people and things outside yourself better, you benefit in the long run.

Be open to learning new things from a broad set of experienced people, regardless of their experience level and title. All people can be a mentor to you. Ask questions, partner on finding solutions, be comfortable being wrong, and be humble when you are right.

5. Befriend Imposter Syndrome

Imposter syndrome is an umbrella term, recognize that it can encapsulate many of your insecurities and discomforts. And know that these feelings can be a signal indicating that you are treading on new ground, or that you might not be in alignment with your "best way" of doing things.

Through coaching and mentorship, I eventually learned that I have a style, or "best way" of doing things that worked for me. When I'm not aligning with that, it lowers my confidence and energy. If you are introverted and sensitive to your surroundings (like I am), these feelings can be even more intense.

For me, befriending imposter syndrome wasn't about giving up and accepting it as a fundamental truth. It was about learning why I felt the way I did, seeking out strategies to help me cope with it, and being kind to myself when I felt the negative feelings kick in.

One strategy I learned (from my coach) is related to confidence. I learned that confidence deserved just as much introspection. There have been times where I did feel confident, capable, and deserving of everything I had achieved, and I learned that there were reasons for it, actions that triggered that confidence. I ask myself, "what was true about the last time I felt confident, what was I doing?" Then I take intentional steps to recreate the scenarios that come to mind.

Confidence and imposter syndrome are the peak and trough of a sine wave. They are cyclical, and we bounce between both states. Nowadays, I work to capitalize on the peaks and minimize the loss in the troughs.

6. Give Value and Get Value

Money, title, opportunity, benefits, training, and exposure to the newest and shiniest things are great. These and many others are all part of compensation, the value you are getting for the value you are giving will be a combination of all these things and more.

Remember to prioritize what you need right now. Is it training and exposure, is it money and opportunity, or is it the more significant title and training to go with it? Being clear about what you need now will help you align with the right situation and allow you to flourish.

When you've decided what it is you need, and when you've landed in a situation that is delivering on that need, know and understand your company's expectations and deliver on them. And always recheck the balance of giving and getting—it can take work to keep this aligned.

7. Companies Have Stages and Cycles

Companies can be chopped up and categorized into many different stages and cycles, of which some will appeal to you while others won't. A company might be doing a lot of experimenting or growing, or maybe it's recovering from a setback, or working through a crisis.

There are actually terms and acronyms around labeling the current stages and cycles of a company. A few stages or cycles a company might be going through include start-up, turnaround, accelerated growth, realignment, or sustaining success (STARS).

It should be no surprise that certain types of people with individual styles of working will flourish better in one stage or cycle than in another. Few of us ever take time to consider what stage or cycle our company is in, let alone understand our likes and dislikes—our style of doing things.

I learned to pay closer attention to the circumstances under which I do my best work, and which stages and cycles make me happiest. Knowing this is part of knowing your style, and improves the odds of being a happy software engineer.