Write a post

What does it mean to be a junior developer, senior developer, software architect, and CTO?

Published May 17, 2017Last updated Jun 20, 2017

Recently, Jace published an article, Do I Have What it Takes to be a Senior Engineer?, in our community. It really got us thinking. What is it that separates a senior developer from a junior developer? Or a CTO from a software architect?

senior developer wizard

Besides technical know-how, here are some of the things we think separate senior from junior developers:

  • Analyzes and designs software architecture well
  • Introduces better workflows to the team
  • Shares knowledge and provides feedback
  • Keeps calm when sh*t hits the fan
  • Communicates respectfully
  • Admits Mistakes

What do you think? Did we miss anything? What about software architects and CTOs?

Let us know in the comments below 👇 or in your own post!

Here's⬅️ a piece we wrote on how to be the engineering manager that your company needs. We'd love to hear your feedbacks!

Discover and read more posts from Codementor Team
get started
Enjoy this post?

Leave a like and comment for Codementor

Jayson Minard
2 months ago

This is a constantly recurring question that comes up in role definition, trying to set developer levels, job titles and overall in HR for developers. And most answers come down to a list of metrics that must be met for each level. Number of years, experience with the business, amount of people they can manage, and so on. In a really structured and bureaucratic environment, maybe you have no choice but to set these as strict values and levels.

In our startups we don’t do this. Instead we ask one main question to the interviewing team when hiring: “How long would you trust this developer to code before wanting to see what they are up to?

And that is the most accurate form of instantly knowing the developer’s level. Someone you check in with twice a day is obviously junior, a few days intermediate, a week higher intermediate, a few weeks of runway is more senior, over a month is very senior.

We then split the more senior people into two categories: “heads down do-my-own-work and rock it” and the other type is “their presence makes the whole team stronger.” We have need for both types, and not all senior people should or want to help or mentor others. So for the latter group who can also mentor, we make it part of their job to reserve time for the rest of the team and avoid overloading them.

We also avoid architect vs. developer job titles. If you have design/architecture responsibility it is a role for a given project and not your job title. You are out front, leading, have a vision, can picture the concept and have it under control – therefore you are acting like an architect for that moment. But there is no need for this title.

As for CTO, this isn’t even in the same category for many companies and involves so much more than just development and architecture experience. Which is why many companies have so many problems with technology, because they drop a senior engineer into this role who brings along their baggage and injects their flaws into the whole company. I wouldn’t include this in the same discussion at all.

Finally, just remember when thinking about developer levels those two questions that provide the core value of the developer and look at the “whole package” of the person. “How long before we want to see what you are up to?” and “do you just do your own work, or do you make the whole team better?

Laszlo Marai
3 months ago

Senior and junior are relative terms, relative to each other. This is important, because it shows why today’s title inflation makes no sense. In a lot of places everyone is a senior with 3(!) maybe 5 years of experience. This is crazy. Where title these guys are going to pursue in 20-30 years (if we’ll still have software engineering by then)?

I used to work at Nokia for six years and didn’t mature from research engineer (not a junior one!) to a senior r.e. during that time. (Part of the story is that I wasn’t very enthusiastic after a while and I was pretty bad at corporate politics, which would have been needed for the step, but only a few of my colleagues made this step in 5 years.) There to be senior, you had to meet criteria like:

  • be able to manage yourself and 1-2 other people
  • be able to manage a small part of a project by yourself
  • understand the business implications of your project and be able to talk to the stake holders (internal customers)
  • initiate new projects

It kind of makes sense for me now, 10 years later :) : a senior engineer is someone who can work autonomously (without much hand holding), which includes that they will seek contact and help when needed, add value to the organization without being told so (i.e. identify tasks/projects that make economical sense and make them happen) and also are able to help and guide other engineers.

Rashif Rahman
3 months ago

It takes or should take a lot of experience to be considered “senior”. I don’t think qualities and skills alone should be the metrics used to confer that rank to anyone. A search on job and salary boards can shed some light here as to how many years is typically considered to be senior, and it may well apply to just about any industry and role, not just computing.

A reasonably good hacker (in the spirit and sense of how Eric Raymond uses the term) can have all of those skills and qualities, and more, but you wouldn’t want to give her the keys to the kingdom because she just hasn’t amassed that kind of experience yet. What this means practically is you have worked across several different environments with different challenges, and that long-term exposure has given you some esoteric knowledge and intuition.

There is a clear distinction between an engineer and architect. These titles (let’s ignore developer, or otherwise that opens up a new can of works) are borrowed from industry and IMO very much abused and misunderstood in the software space due to the greater variety of software professions and barriers of entry. I believe you only need to look at the organizational structure of established tech businesses to understand this distinction.

The only exception is that an architect in this space is someone who has the kind of knowledge or experience to design stuff (systems, components, whatever) on a higher level of abstraction while taking into consideration all the pros and cons of design decisions, so it ends up being a more senior rank rather than a co-operating rank as in other engineering spaces. Such an architect could very well have experience in architecture alone and not (much) in development or engineering.

The CTO role is rather fluid, but does have its clear distinction. The CTO’s skill set is perhaps similar to either a senior engineer or architect, or an aggregation of both, but is more aligned with the business objectives from a technological, R&D perspective. Again, this means she need not be an elite hacker or have much development experience, as long as she can be a leader or decision maker. It usually depends on the kind and size of business. Startup culture has made it a habit to throw around C-level titles when in truth and practice they are not meaningful or useful.

Show more replies

Get curated posts in your inbox

Learn programming by reading more posts like this