Have you ever wondered what the next step in your career should be?
How do you know what tools, principles or programming languages to learn next?
I want to share with you guys a simple framework that will help developers in any stage of their career be able to navigate to the next steps and level-up.
Each step represents a general "place" where you may be in your career.
Between each step, there is some transition which requires building knowledge and experience in certain areas.
Each step builds from the previous one.
These don't necessarily correspond to job titles.
Someone with a title of "Senior Developer" may in reality only be a Junior Developer in their skills and knowledge!
Yes, sometimes people are promoted simply because they have X number of years in the field - not because they have the skills and knowledge required to be competent.
Or, perhaps they've worked for the same company for so long that they are just given a "better" title.
I'm sure most of you guys and gals have seen this happen too.
And of course, I have to say: There are no real "hard" lines between each stage.
This is simply a way of envisioning your career so it's easier to manage and grasp as a whole. It's a useful set of concepts - that's all!
A coder is basically a hobbyist.
Traits of a coder are:
- Knows programming language syntax - perhaps even very well!
- Can create small projects on their own - like video games, an app, etc.
- Good problem solver
- Works alone
- Doesn't get paid for their work (not professionally)
A junior developer is similar to a coder when starting out.
But, they are now entering the IT field as a paid professional and they work with a team of other professionals.
Soon, a junior developer will most likely manage to work in a codebase that may be too large for him/her to grasp in their head. They will have to learn how to break problems down into smaller and more manageable tasks.
They will begin to learn how to connect different systems together - such as client-server interaction or connecting to a database from server-side code.
He/she is a competent team member and contributor.
They have learned how to build basic systems - such as a web application.
At this stage, some of the skills a developer is learning are:
- Understanding of basic system architecture
- Able to use professional tooling well
- Basic understanding of design patterns, code smells, etc.
- Understands how to work well as part of a team
P.S. This article is based on an article from my email newsletter Navigating Your Software Development Career. If you are enjoying it so far you can sign up to the newsletter and get up-to-date articles similar to this!
The senior developer is becoming very skilled and knowledgable to the point that those around him/her are looking to them as a mentor and a "go-to" in general.
They usually have some specialized and advanced programming knowledge and are able to build more complex systems using advanced techniques and patterns.
Some traits of a Senior Web Developer, as an example, are:
- Knowledgable concerning design patterns, code smells, refactoring, etc.
- Knowledgable concerning architectural paradigms like Domain Driven Design, Event Sourcing, CQRS, etc.
- Some experience with server deployments and maintenance Infrastructural knowledge about load balancing, connection pooling, etc.
Yes - that's a lot of stuff!
This example looked at traits of a Senior Web Developer. While most of these are fairly general and shared across different focuses, they may be different for someone who's a Senior Data Analyst, Senior IOT Developer, etc.
For example, a database oriented senior developer would require more knowledge and skills specifically around database admin, programming, etc.
The lead developer is focused on providing high-level guidance to their dev team.
But more importantly, they are a bridge or connector between the development team and the other business-oriented departments in your organization.
Check out this article for some more details.
A tech leader has made a name for themselves as an expert in some specific area(s) and usually have a very targeted branding/positioning as to what they do well.
That might be a specific programming language, web security, front-end development with react, a developer mentor, or even a particular industry!
They are community builders who have a following of people that look up to them as a direct or indirect mentor.
They are thought leaders who champion some specific cause or idea.
They speak publically about their area of expertise or the ideas that they champion.
In a nutshell, they are technology experts and very skilled communicators.
What do you think? What stage do you see yourself in?
Are there any specific areas or topics that you feel you need to learn?
What do you think you need to do, specifically, in order to get to the next stage of your career?
Leave a comment sharing your thoughts for everyone else to benefit from!
An e-mail newsletter that will help you level-up in your career as a software developer! Ever wonder:
✔ What are the general stages of a software developer?
✔ How do I know which stage I'm at? How do I get to the next stage?
✔ What is a tech leader and how do I become one?
✔ Is there someone willing to walk with me and answer my questions?
Sound interesting? Join the community!