Real Software Engineering: Call to arms

Engineering

Fellow Software “Engineers”, we have a problem. Too long have we contented ourselves with compilation. Rampant bugs, system failures, and security issues have left deep wounds in our industry. We cannot keep clumsily fumbling forward, projected by the sheer convenience and power our work creates. It is time for us to grow up. It is time for Software Engineering to actually become Engineering.

Where Are We Now

you_are_coding_it_wrong

As Mary Shaw from Carnegie Melon recently highlighted in her talk at ICSE 2016 in Austin, we are only just beginning to mature toward true Engineering. At our current state, being a “Software Engineer” means little. Does this mean customers can expect quality? Does it mean we’ll use standards when gathering requirements and when developing, releasing, and maintaining software? Can you even expect Software Engineers to have any degree? Do we even know what the stages of the software development life cycle are? Do we do tests? Do we even know what testing means?

What Should Software Engineering Be?

When one thinks about a Software Engineer, thoughts of experience, professionalism, and quality should come to mind. I am passionate about living up to this, and have dedicated myself to evolve in to a true Software Engineer. I’ll no doubt learn a lot during my journey, and will write more about what it means to have experience, be professional, and create quality later once I can do so from the perspective of a true Engineer myself. Meanwhile, I will describe a bit of what this means to me now.

Apprenticeship

Having experience means knowing what it means to create Software the proper way. This doesn’t mean using specific languages, or even specific techniques. What this means is that the end product should be what the customer requires. This means knowing how to discover properly what the customer requires. Its important to point out that experience is not what we get from our degree at the University, at least not normally. Experience means actually working with customers to create proper Software. For this reason, we need to stop throwing Computer Scientists out in to the water and calling them Software Engineers. Likely a far better practice would be to follow apprenticeship, as was common for blacksmiths in the middle ages. This is an important aspect of Software Craftsmanship, of which I am also a huge fan and follower, and will doubtless write more about in future blogs.

Being professional is also described in the Software Craftsmanship movement. This describes the way you conduct yourself during the entire creation of Software for customers: as you work with the customer, while you engineer code, while you hand over the code, and as you maintain the solution.

perfect-926268_960_720

Finally, but certainly not least, quality. Quality is what drives the need to transition in to a true Engineering industry, as well as drives all the other aspects of Software Engineering. Software Engineering should create a quality experience for customers through professionalism. Software Engineering should create quality software by having experience drive its creation. Once we are able to consistently achieve quality, and to separate quality products created by Software Engineers from low quality products created by non-Software Engineers (simple developers, hobbyists, etc), our industry will gain the true respect it deserves, and we’ll be able to drive the rise of our digital future.

If we win, well then we’ll have what none of us have ever had before

Its time we get serious and commit ourselves to crossing the line in to Engineering. This means we start taking the process of creating Software far more seriously. We must become accountable for what we build; to feel ownership and pride for what we create. Whether it be people’s life, security, work, money, merchandise, enjoyment or any other value, it is our job to take its care seriously, to produce working, proven, bug free software. We call ourselves professional, and we should act professional. I’m taking up the challenge. I call everyone else to join!

2 thoughts on “Real Software Engineering: Call to arms

Leave a Reply

Your email address will not be published. Required fields are marked *