Where Are We Now
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?
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.
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.