What It Means to Be a Senior Software Engineer

What It Means to Be a Senior Software Engineer

How can we measure whether an engineer deserves to be a senior software engineer? What should engineers do to get to this stage of career development? I have a long experience in the industry, so I know what engineers of different levels must be capable of. I would like to examine this by looking at the correlation between knowledge and experience.

What do experience and knowledge mean in this industry?

First of all, we need to take a look at experience and knowledge. Both knowledge and experience play a vital role for specialists and for their employers.

Knowledge means an understanding of how to do things well. Experience, on the other hand, is mostly the understanding of what shouldn’t be done. Everyone can gain knowledge by attending educational courses and consuming a lot of information. In order to gain some experience, you should practice, make mistakes, fail, and drive your own lessons from those failures.

It is said that smart people learn from their mistakes, but really smart people learn from the mistakes of others. If you are a software engineer, and you have this vital skill, you will benefit from it a lot.

You have a certain amount of knowledge even if you haven’t worked one day. You might have gained this knowledge from special courses or university. What you couldn’t have gained there is a real experience. The average junior software engineer has more knowledge than would be appropriate for their experience.

Junior engineers believe that this is not a problem, but they simply don’t have enough experience to understand that they are wrong. When you have experience, you remember to keep in mind previous failures and understand how to avoid them. Junior engineers who only have knowledge but don’t have experience don’t even notice when they are doing something wrong.

When I was a junior engineer, I used to argue with people, trying to convince them that my ideas were right. I was sure that certain features were must-haves for potential users, and I couldn’t believe the system would work well without those features. Luckily, I had senior engineers on my team who didn’t try to convince me. They let me do as I intended to do, so I could learn that the features I offered had many pitfalls and were wrong for the project. I didn’t listen to the recommendations of the senior engineers, but I’m glad they let me make this mistake.

I understand that my ideas were wrong, but today I have a valuable experience. This is what really matters to me now.

The thing is that you should understand the value of experience. You cannot be a senior software engineer just because you have a correct opinion, you must know how to teach others from this opinion and help them on their journey.

Experience = knowledge

Beginning software engineers aim to become senior engineers because they don’t want to stay on the mid-level engineer their entire careers. But not many realize what it takes to become a senior engineer. At the stage when you have enough experience that corresponds to your knowledge, you should be considered a mid-level engineer. This is an important stage.

Your experience corresponds to your knowledge when you know the correct solution, but you look up alternate solutions anyway. Unlike juniors, you don’t follow only your opinion, you will listen to the recommendations of others and will try to choose the best option.

Experience surpasses knowledge

You can be considered a senior engineer at the stage when your experience exceeds your knowledge. At this stage, it’s easier for specialists to recognize incorrect ideas intuitively. Your job is the teacher for you because neither tutors nor their courses will give you so much needed experience.

At this stage, it’s essential to fully understand one important thing. The technology industry is a boundless field where you can absorb tons of information and learn the most sophisticated ideas. Your knowledge and experience are vertically restricted; they don’t apply to the entire industry.

I work as a full-stack web developer, and I deal with cloud solutions, API designing, frontend javascript engineering, and other things common in this industry. However, all this experience appears to be useless if I propose joining an embedded programming team at SpaceX, writing the C code that’s loaded into the microprocessor on a servo that controls the pitch of a rocket’s arms.

The thing is that I cannot be a senior engineer on all topics – senior engineers specialize in particular subject matter. If you want to become a true senior engineer, you should realize that at the beginning of your career, you should go deeper in one specific area. Of course, you can become a real full-stack engineer and work with both the front and backend, for instance. However, this will be a very hard and exhausting journey and it will still leave many specialty areas where you have no experience.

Even though I have a lot of experience leading senior engineers and deep knowledge of code, I fully understand that it’s impossible to be 100% right. Regardless of your title and responsibilities, you will make mistakes at any stage.

The problem with our industry is that it’s one of the fastest-evolving industries. Everything we have here today will change in the future, and it’s changing right now at a gradually increasing pace. Everything created by us will change.

To realize that changes in our industry are inevitable, you must get to another level of understanding. If you have experience, you know that there are many things you cannot control or predict under any circumstances.

Everything is related to circumstances.

You cannot always be right or wrong. Not all circumstances you face during your career have an equal impact on your solutions and the projects you participate in. Something is better, while something can be worse.

Knowledge is necessary because it helps you move forward and express your opinion during arguments. You know facts, how to apply the best practices, which features to implement, etc. Knowledge is like fuel for you and your confidence.

Experience, on the other hand, tells you when you should stop and reconsider your opinions. Experience includes memories, mistakes, failures, and fears you faced when working with previous solutions. The experience opens your eyes and motivates you to consider alternatives.

When both your knowledge and experience tell that you are on the right side of the argument, don’t stop moving forward and pushing your ideas. Your project can be successful only if the team makes correct decisions. Don’t be too confident – consider that sometimes your opinions and thoughts might be wrong. When you realize this, don’t let your knowledge surpass your experience.

This article was written by Oleg Melnic for HackerNoon and was edited and published with permission.