Aerodynamically, the bumble bee shouldn't be able to fly, but the bumble bee doesn't know it so it goes on flying anyway. – Mary Kay Ash

Software Engineering – Art , Science and Accountability?

One of the readers of the weekly news letter asked me to explore about how software engineers can be made accountable.

His view point was while every other branch of engineering had some kind of accountability built-in cause and effect mechanisms, he was of the view that this branch of engineering got away lightly as compared to other professions.

I would have to say that was an extremely tough question for me to answer.

Recently, one of the mall in Bangalore had a few walls going down and caused non fatal injuries to some of the visitor. The malls has been closed since. The investigation is on and the engineers and their hierarchy are being questioned and few heads shall roll in the process.

I went back to the classic article of 1998 and I find the summary even applicable and relevant today.

“

The fact that some software must be produced by trained, accredited engineers doesn’t imply the same for all software. I can fix a broken railing on my stairs without a civil engineering degree. I can mix a gin and tonic without a chemical engineering degree. But can I build a second story on my house? No. My local government will require me to have an engineer sign the building plans. We should eventually see a similar stratification of software jobs into amateurs, skilled craftsmen, and engineers.

The Right Questions

Once we stop asking the trick question of, “Is software development engineering?” and start asking the real question of, “Should software development be engineering?” we can start answering really important questions: What is software engineering’s core body of knowledge? How should software engineers be trained? How should software engineers be certified? And, perhaps the hardest to answer, How long will it take for all this to happen?

“

Two decades have passed and I do not think we have answered those questions. We have not seen any kind of formal stratification.

I do not think there is any doubt that software is eating the world and the way I see it is that anyone can be a ‘Software Engineer’. Anyone who can code is a software engineer. I feel everyone should be introduced to coding at a young age, but to call everyone who can ‘code’ as a software engineer is in my view the highest possible dilution of the word ‘engineering’.

Incidentally some or most of the top forty software engineering books , goes to decades back and remains as classical as it was today. It goes to tell us something in the foundations have possibly never changed or it has changed and the changes are too fast, that we never bothered to pause and reflect.

In recent times we have seen heads rolling owing to bad software engineering and realization. In that sense failures are not being accepted, but unlike any other branch of engineering, here the tolerance level of failure seems to be high. People have no problems re-starting a phone or carrying a power bank in addition to their phone without worrying about the app that is possibly sucking the power.

Recently the Tesla incident where the tester of the self driving car died, the problem was this.

The car dashed with a heavy duty truck as the side of the truck visible to the car was completely white and the self-driving software in the car recognized it as a skyline as it has been trained that way.

Who should be blamed in this case ? A life unfortunately was gone

I checked the somewhat dated code of ethics and I cannot conclude which of the eight principles listed there could have been violated in this fatal incident.

We are building things at a pace which was not possible couple of decades back owing to advances in technology both hardware and software.

While the pace is necessary, I am afraid that we might be turning this branch of engineering into a profession, where the fundamental underlying mechanics are barely understood and somehow the message seems to be ‘Forget the mechanics’ and I can positively take a bet that the ‘technical debt’ of code written in the last ten years will be significantly more than what was written before ten years.

I do not wish to conclude this here, as this has set me thinking in some form, but I can only say this.

I do not think the questions that were asked two decades back will ever have a right answer.

I also do not have a direct answer on how to bring accountability into this rapidly changing branch of engineering, if we still wish to call it engineering, but what I can possibly explore and share thoughts on ‘How I can be a better software engineer’ and ‘How the place I work can make me a better software engineer’. I will do so in the coming weeks.

In the interim, I would love to hear your thoughts on this , as I have spent a lot of my breathing time on this planet wondering how to ‘Build World Class Products’

What do you think ?

Enjoy Maadi (Have Fun)

Zunder

Advertisements

Share this:

Like this:

LikeLoading...

Related

Published by Zunder Lekshmanan

An obedient son, a committed worker, a bearable husband, father, brother and a loyal friend. A self-proclaimed techie, a foodie, enjoy road trips and love the mountains
View all posts by Zunder Lekshmanan

There are some organizations which are starting to ask for a formal certification – this goes beyond degrees. There are some places (Texas, for example) which offer registration programs for software engineers. This places societal and professional responsibilities on such “licensed” engineers.

The point being that it is not a completely unaddressed concerned. However, like in many such things, there are two sides to this debate. This falls neatly into the same pattern that every skill has experienced. History is replete with examples. From watch-makers, glass blowers, and masons onwards groups of skilled people have realized that ill-equipped people are making a mess of their “noble” profession and should somehow control who can practice that profession. This results in the formation of guilds and which enjoin members to demonstrate responsibilities towards their profession. Sounds good. In short order these guilds became tools to enforce a monopoly and shut out the less privileged or the innovative. And then rent-seeking tactics take hold. I am not sure software should follow the same path.

Software, arguably, has caused less harm for the impact it has achieved than any other new technology – bridge building, rocket science, or even automobiles. Caveat emptor will work in software as it has in many other areas. People buy from organizations and organizations are accountable. I believe an equally greater concern (and perhaps not obviously related) is that of free things, usually made possible by software’s infinitely scalable distribution model – facebook, google, gmail, news services, dropbox, etc. Free things which you depend on and in which you sign away all your rights give little accountability to even the organizations. Caveat emptor fails.

Good understanding Zunder. As far as i see, majority of the software developers are involved in IT enabled service for existing manual work. From India the majorty of the so called software engineers are into ITES. since i had been to campus interviews, i feel we are not really into the science or engineering aspect of the software. If world has to turnaround to India, we need more Quality products and services, as we have the brand “Made in Japan”. in the case of Migrating a legacy system to latest techonology, there is a major gap in understanding what the software can do by the business users and the person going for requirement gathering. The problem starts there and continues till it is delivered. Reason why business users are not keen or interested in legacy system conversion, worried about their job once it is migrated. The guy goes into business requirement gathering not able to understand the real business impact and will that as a mere requirement. This is my opinion based on my experience.