Wednesday, August 5, 2015

Developers are not freakin' engineers - Part 2

(Part 1: Developers are not freakin' engineers)

#Agile2015, which I can only afford to follow from a distance, came up with what looks like a new meme: Agile is improv.  And there's more that supports my assertion here.

Having spent time on the improv scene, I think the comparison is apt.  I'm gonna play with the metaphor.

1. Waterfall developers are actors who are expected to learn their lines and deliver them regardless of what's going on onstage or in the audience.

2. Engineering:SW Development::Stagefighting:Acting

Stagefighting requires mad skills: it's a domain. But a great swordfighter/MMA fighter/etc. is not necessarily a great actor.

Some domains are math/physics/etc.-intensive. Developers who work in those domains need all those skills. But they aren't enough to make for good software.

3. Here are a couple of quotes from the conference:

"Agile software development is people-focused and flexible." - via @DanaPylayeva

"Software processes which separate out design and construction are fundamentally untenable, unlike building a bridge, building electronics, etc. [Fowler]

The manufacturing metaphor was broken from the very beginning. Assemply lines are optimized to produce many of the same exact thing. With custom software, you only ever build one." - via @GetzTweetz

People-focused, flexible, custom - these are aspects of software that are seriously distant from anything we associate with engineering.

4. Software itself is orders of magnitude more malleable than what engineers deal with.  We're essentially working with pure Categories, magical atoms of Platonic ideal forms.

5.  I've worked with engineers and physicists who fled their abysmal labor markets for development. They knew a lot about the domain, but next to nothing about software.  Don't get me started about the code I had to salvage....

Engineers are not freakin' developers.

Developers are not freakin' engineers.

Monday, August 3, 2015

Developers are not freakin' engineers

My current title is "Software Engineer in Test". I'm part of a QA team, looking for ways to improve their process. I'm actually writing tools for the dev team. It's a long story.

Anyway, I've had titles with "Engineer" in them many times in my long unillustrious career.

But I've never really been an engineer.

I didn't want to have to write this now. I want to go to bed so I can get up at 6 for my hour's commute. But I twote a hashtag and I think I insulted somebody, so I have to clarify. 140 chars won't do the trick.

The hashtag: #DevelopersAreNotFreakinEngineers.

Developers with any aspirations to Agility shouldn't want to be considered engineers.

Here's the beginning of an outline of what I mean:

  • Engineers can count on settled/established mathematics. Developers are barely grasping at the rudiments of the math behind what they do (best bet is Category Theory IMAO).
  • Engineers work in well-defined domains with settled/established natural science behind them. Some developers work in these domains, but I don't want to call even those developers "engineers". 
  • Developers deal in an infinitely more plastic medium than engineers.
  • Engineers are almost always members of BDUF/Waterfall organizations. The engineers that tried to stop the Challenger launch because they knew the O-rings could freeze were overruled by management: their expert opinions meant nothing in the face of deadlines/PR/etc.
  • Developers want to be called engineers because it's respectable. It's like wearing a dashing uniform.  It's professional. Maybe we'll get paid more....
There's more, but I'm tired.