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 anymore.

I am not a ‘programming’ enthusiast.

I am not that passionate about basketball anymore - 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 demostrates 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