Why I call myself a software engineer (and not a dev)
I’m not a dev
While updating my profile on GitHub I found my profile description quite odd:
Pure Maths and Mathematical Physics graduate turned software engineer.
Ok. This is not that bad to start with. Maths and Physics is my academic background. And then I turned ‘software engineer’. In fact, I think my first ever title (back in 2011), was ‘Junior Developer’.
But then the profile description continues:
I code primarily in C#. Programming enthusiast. Passionate about basketball.
What is a software engineer in 2020?
It struck me that this description really doesn’t paint the real picture of what a software engineer does in 2020. I’d probably argue that it never really paid any justice to the role of a software engineer to focus on the programming aspect of the role.
I don’t code primarily in C# - well, not any more.
I am not a ‘programming’ enthusiast.
I am not that passionate about basketball any more - although I have been my whole life.
I am a software engineer though.
Software Engineering vs ‘developing’
I probably last updated this a few months ago. How has it got so outdated? Or has my perception changed?
I don’t view what we do in software as ‘developing’ something. Or ‘coding’. There’s a fair bit of engineering of complex systems going on. And those complex systems are evolving and they need to adapt the real world around them.
More importantly, software is a sociotechnical problem.
I don’t know what I’m going to update that profile to - or that even need to. But it got me thinking.
What’s the difference?
I’d say, as a software engineer (or architect if you prefer a fancier term), you can decide to reject the proposal to write code to solve a problem. Because you are engineering the solution to a sociotechnical problem. That may or may not include coding. Or developing.
As for the ‘basketball’ part: I’d argue that just being a ‘10x’ dev or a programmer will severely limit you when it comes to engineering a complex system. Your personality needs to be more rounded. You need to have passions, interests - you need to be curious. Ok, ‘basketball’ here is not a great example. But it demonstrates that you are not ‘just a dev’.
A few references that have influenced my thinking lately
- Team Topologies - talks, blogs, or book - either (or all) deliver the message of how important the social part of software engineering is brilliantly
- Thinking in Promises - a beautiful theory about cooperation between ‘autonomous agents’ that make promises
- Charity Majors’ rants - observability, sociotechnical problem - thinking about software as what it is: a complex system that is never ‘green’
- The rationale for Continuous Delivery by Dave Farley - sets down the grounds for Continuous Delivery in software - in any industry or field you can think of