TLDR; What does Software Developer actually mean? I don’t think it is synonymous with Programmer I think it refers to someone who can do most of the activities associated with creating, releaseing and selling software.
Not a Programmer
One question, I do ask myself and I continue to ask myself, is what is a software developer because it seems like my view or definition of that term is different from the exact definition that everyone seems to use.
I don’t think it’s a programmer. Is a programmer what we would class as a software developer? If so, why are there two words?
Any time, we have two different terms to describe something, that leads to ambiguity, which leads to communication that is inconsistent.
Is it because of inclusion?
Do we have two words: “developer” and “programmer” because of inclusion? so that we can include testers and BA’s and Users in there as well?
And to me, it doesn’t quite work.
When you read books about Agile, they use the terms inconsistently.
So sometimes they will say “everyone team is a software developer”, then they say “the software developer hands things over to the QA”.
Now, ignoring the problem of describing Testers as QA, the fact that we have Software Developers handing over to someone else in the team who is already a Software Developer means that that whole thing falls apart for me.
People in their head, have a model of software developer as programmer but use the term to try and be more inclusive.
So is it “someone Who develops”?
Is this one Who develops anything?
Which would mean ops and devops when they’re writing build scripts are developers. Security staff who write little scripts to check for things. Management who are using spreadsheets to create reporting? Are they developers? They’re actually developing something that can be used.
Testers who are automating? Even using script-less tools, are they developing?
Well they are developing.
But does that mean they are software developers?
Do we call them Software Developers purely because they’re outputting to users, end-users?
Or is it any user?
Test automation, might be for testers, primarily.
Who is the user in this?
I get confused.
Is it, someone involved in development in anyway? Where we could use words like a team member or stakeholder (instead of Software Developer).
An Aspiration
I try and avoid that entirely by having a definition which is related to aspiration.
For me a Software Developer is an aspiration. Not an apparition, an aspiration, a career path.
It’s someone who can:
- code,
- design,
- test,
- manage,
- lead teams,
- do the support of the software,
- architect it,
- release it,
- automate it.
- do the marketing,
- sell it,
- …
All of these different aspects and probably more.
We don’t start as Developers.
We specialize, and we build up skills to grow in experience and evolve. And it takes years, to be a software developers, it’s a full career path.
If you want to create a side project on your own, then your a developer by default, because you be doing all of this.
I don’t want to be stuck and pigeon-holed by a role. It is really important to me that we try and communicate the base roles as effectively as possible and the word Software Developer doesn’t do that for me.
So for me it’s an aspiration.
I aspire to be a software developer because I still want to develop all the skills.
I can do a lot of them but not necessarily all of them in order to fully class myself as a Software Developer.
But that’s not really the definition that everyone else seems to use.
Related Notes
I covered this type of content in my “Joy of Coding” Conference talk from 2019.
And in my “Creating yourself as a Tester” talk from Nordic Testing Days in 2017.
This was originally recorded on Racket on 20210614