What Constitutes a Senior Developer?

Does anyone really know?

Steve Bishop
Better Programming

--

The question…

The other day a consultant asked me to explain what I thought the differences were between a mid-level developer and a senior level developer. I had to think a significant amount of time to come up with an answer compared to some of the more typical questions I get on a day-to-day basis. A lot of my time is focused on team structures, team optimization, agile values and principles, and other organizational management concepts. So even though I work in the software development field, my job is to marry the practices of software development with good business ideation. What constitutes a senior developer seems like it should be a well-defined concept in my field.

One common practice for me when I am challenged by a question that I don’t have a concise answer for, is to research what others have to say on the topic. It’s even better when we have scientific studies to provide data. But in this case, the concept of a senior developer feels subjective, and different based on who you ask. So, for example one answer given on StackExchange contains these points:

  • You can handle the entire software development life cycle, end to end
  • You lead others, or others look to you for guidance.
  • You can self-manage your projects

Another example is from FreeCodeCamp which says a senior developer has these primary characteristics:

  • Experience
  • Leadership
  • Mentorship
  • Technical Ability

And yet another example comes from Indeed (probably more important since they post job openings):

  • Generating reports and writing project proposals
  • Presenting design and research to customers
  • Advising staff with process recommendations
  • Negotiating project and product terms with vendors
  • Overseeing projects

Yet, none of these really feel like they catch the essence of what it means to be a senior developer.

So, I went back and tried to rephrase the question to myself, what is the essence of a senior developer? What is the common thread, that upon meeting one of them, tells you instantly they are a senior developer? And within the rephrasing of the question, I instantly had my answer, communication.

You know you are speaking to a senior developer because of the way they speak to you. However, this is just the tip of the iceberg in terms of what I mean. A great communicator does so in more than one way, they use all of the modalities at their disposal to convey their ideas. Abraham Lincoln for example was a great orator, but he flourished just as well with handwritten items. His letters to Mary Todd are some of the greatest pieces of literature one could ever read in their ability to convey sentiment. He’s well renowned for both the Emancipation Proclamation (a written document), and his Gettysburg Address (a speech).

For a senior developer they must communicate both in written language as code and documentation, but also verbally to both the internal team, external teams, and management. This requires not only some level of technical expertise but ability to concisely and clearly convey the idea so that others can understand their mind.

As for the code they write, code is a written language that also happens to be executable. How you express your ideas in your code is just as important as the verbal communication you have with your peers. The code written by senior developers is simple, easy to follow, and requires little to no comment that explains it’s behavior. In this regard, there are many mid-level developers in title who are actually senior developers in practice. The converse is also true, senior-level developers in title who are actually mid-level in practice.

So, let’s filer some of the earlier bullet points above (and remove any overlap) against this communication criteria and see what we come up with:

  • You lead others, or others look to you for guidance.
  • Generating reports and writing project proposals
  • Presenting design and research to customers
  • Advising staff with process recommendations
  • Negotiating project and product terms with vendors

This seems pretty fair, but it is missing the coding component of the job, so I humbly submit this concise description to summarize the above points and include writing code.

Senior developer: A computer programmer who effectively communicates the expected behavior of a professional developer and the behavior of the application being created to their fellow developers, consumers, business owners, and computer processors through both written and verbal modalities.

I believe this definition captures the many interfaces a senior developer must interact with (consumer, business owner, computer processor, fellow developer), the necessary effectiveness they must have, and the ways in which the packets of information are transmitted.

To become a senior developer, I believe developing effective communication skills is important. Read books and articles about communication. Read books and articles about writing simple and readable code. Read books and articles about effective oratory. And then practice, practice, practice all the techniques you learn until one day they just become a habit. Then you can call yourself a Senior Developer.

--

--

Managing Lead Enterprise Instructor @ Galvanize Inc. Agile evangelist and creator of Extreme Agile.