You’ve been learning and building software for a while now — one year or two decades. This article will show you how to become a software engineer differently.
In 23 years of my career, I have met many people who love software, just like you do. These talks and my experience show me a new way to grow in this field. It’s different from the usual path on job boards, where you start as a junior and become a senior.
The path has three steps:
Coder
Developer
Engineer
These three steps will help you understand where you are, where you're going and how to navigate the path.
Step 1: Coder
In the beginning, you're happy with what you wrote works.
That's how you learned to code. That's how I learned programming. I wrote what was in the tutorial into an editor window and spent the next day finding typos I made.
As you remember more from tutorials, you start writing your code. You run it to test it, and it's probably a mess, but it works. That makes you happy, so you keep going.
If you work as a coder, you're getting paid for the lines of code you do, not for the quality of the solution. There are a lot of companies working this way, so be careful. There is a risk that you get stuck at this level for a long time.
The way forward is to keep on learning how to deliver good code so you can move to the next step.
Step 2: Developer
Developers write code like builders follow blueprints made by architects.
In that stage, you grow as a specialist. You have your favourite technology and strong ideas about why it’s the best for making software. You are a believer, and that drives your progress.
Your favourite type of work is where the work is well specified. You believe in Agile and perfect process, so you teach everybody about the "right way". You've spent years discovering the best solution, so why not use it?
This can lead to two types of frustrations. First, there are companies that don’t care about doing things the right way; that’s where coders work. Second, there are companies that do things differently and don’t always choose perfect solutions.
I've been there myself and seen talented developers struggling with it.
The Senior Trap
I call it a trap because it felt terrible at the time.
You are frustrated because you know how to deliver the best solution, but nobody is listening. You teach and preach, and nothing changes. I’ve been there - I felt stuck and couldn't figure it out for at least five years.
You'll start switching jobs until you find the one that does things the right way. Each time, you put your 100% into the process to realise the same thing—the process isn't perfect. The cycle will repeat.
Until you realise the real issue - it's not them, it's you. There is no perfect software and no single best solution. You were wrong, and as it's scary for a specialist - it will free you.
That's how you advance to the third level.
Step 3: Engineer
You question everything you know, and it builds your understanding of “why”.
You stop knowing how to deliver software. You begin understanding how software can be delivered. You become a tailor who knows all the solutions and picks the best for the job.
Engineers know the best solution for the problem. They use this knowledge to improve the teams and software they work on, but they are okay with leaving some elements out. They understand that change doesn't happen overnight.
Engineers work for impact and without judgment. If the biggest change is in team dynamics, they will learn how to communicate better to make it happen. They don't get frustrated; they find ways to solve problems at all levels.
The focus changes from delivering the best software to the best possible.
How do you advance to the engineer?
First - you don't have to.
You can have a fantastic career as a developer and a bit less as a coder. If it's something that you enjoy and wake up happy about each day, keep on going. If you feel you want more, then Engineering is for you.
If you want to advance, the fastest way is to meet other engineers. The best is to see how they think, communicate, and solve problems. Getting their feedback about your ideas is invaluable.
By the way, I'm starting a community to make it easier for you to become an engineer. I'm looking for the founding members. You'll find more about it at the end of the article.
If you're learning alone, you branch out of what you know. You learn a new programming language or a tool you haven't used before. You must also learn soft skills to understand how you deliver software with your teams.
To become an engineer, you treat every solution as if it were a new problem to solve.
Wrapping up
Each developer is a coder, and each engineer is a developer.
This framework will help you understand where you are, where you want to be and how to get there. It's also one of many valid perspectives on career progression in software engineering. As an engineer, I know this is only one of the correct answers.
No matter what you call it, we all want the same thing: to deliver the best software we can.
P.S.
You're an ambitious software engineer. You read newsletters and learn every day. You know that the best way to learn fast is by doing and with other engineers.
I'm launching a private community to enable you to do that.
Connect with other engineers
Learn engineering by doing and feedback
Practice soft skills by using them
If you think it would help your career, I gather early feedback about the project. From the people who submit it, I pick the founder members who join me in the private launch early in the summer.
If you'd like to be one of them, please complete the survey and leave your details.
You’ll get to meet and learn from some great engineers who have already shared their ideas.
There are only a few founding member seats available, so complete it today!
If you have any questions - DM me COMMUNITY on LinkedIn.