Well, I believe we are now entering into the realm of philosophy. I can be fairly clear on things that can be observed and catalogued; behaviours that can be qualified as well as quantified. I am good with IT because “action A provokes response B” within a reasonable margin of error. If action A provokes a response other than B, or fails to provoke a response at all then it’s troubleshooting time.
Computer systems are supposed to work within norms. It’s impossible to say “they should work the same way every time,” if for no other reason than that our hardware is imperfect. Still, they should fail in predictable ways; if our software is good, in graceful and predictable ways.
Your comment on the other hand veers off of this track. “I'd even settle for a world where average people know the difference between good and bad software - as of now, most of the CS students I've met don't know it. Only the big question is: how do we get such a world?”
Change the world? If you find the answer let me know. At the end of the day it’s all greed. Software is shoddily designed either due to expediency or lack of knowledge. Lack of knowledge is usually due to the individual being too greedy with their leisure time to devote the proper skills to their craft. There’s a margin of error there for folks who genuinely aren’t greedy, but make me critical mistake of overextending themselves thus resulting in an inability to learn the craft, or finish the project.
In large part though, shoddy software seems to stem from the very human desire to cut every corner possible in the attempt to do it faster, cheaper or what-have-you. We are all of us guilty; each and every person on the planet. The man who tells you he never cuts corners is not only lying as he says it, he’s so utterly terrified of appearing to be a failure that he will completely overcompensate for it. (A liability in technical circles, a potential ally in political ones.)
The little things in life are usually where it shows the most. Take cooking for example; when you are alone, and cooking for yourself…how many corners do you cut? If you are cooking for friends or family, you generally try you very best to make a satisfying and delicious meal, but when alone you reach for the box of bachelor chow and the microwave.
This approach doesn’t end there; it’s extended to every facet of life. Software developers will cut any corners they don’t feel is important, and managers won’t put pressure on developers to not cut corners unless something makes doing that important to them. The company investing in software development needs an incentive to not cut corners and on it goes. People are greedy not only with their money, but with their time and effort as well.
The only advice or philosophical truth I can offer is that it is because of the recognition of these very facts about our human nature that the field of ENGINEERING was born. There is a difference between a builder and an engineer. There is weight and value to that Iron Ring. An engineer belongs to a fraternity of people sworn NEVER to let such concerns cause the failure of their projects. You don’t have Adam the cheap labour builder create your train bridge across the river valley; you rely on an engineer because it is important and it has to be done right, with zero cut corners. If that engineer ever cut a corner; just a single one and was found out, he would lose his livelihood. The rules of his profession are strict, and they are final.
Just as being disbarred is a career death sentence for a lawyer, or a Doctor can lose their license to practice medicine, and engineer can have that iron ring taken away. It is what makes these more than trades, but honoured and venerable PROFESSIONS.
Too many people misuse the term engineer, for that matter, people misuse the term “profession.” If you want a world where software is designed right, the first time, with zero cut corners than you need to make development of software an actual profession. You need to make “software engineers” real, actual engineers, and they need to be bound by that iron ring.
If you want a world where all software is developed along these lines, then development truly must be a profession; common people are forbidden to practice it unless they belong to an accredited organisation. Just as I cannot claim to be an MD and practice medicine, proclaim myself counsellor and practice law, I can not claim to be an engineer and practice engineering. It is illegal, and were I do attempt to do so and were caught, I would go to jail for it. (It is not a crime you merely get a fine for.)
This is the world that would have to exist for software to be “done right, the first time.” Software would be enormously expensive, but it would last for decades. It would be slow to evolve and change, but it would cope with a variety of issues.
If you want a world without the cut corners, then all of us IT folk, be they developers or systems administrators need to accept who wand what we are. Whether you have an MCP, a one year certificate, two year diploma or even a bachelor’s degree, unless there is an iron ring on your hand, you aren’t an engineer. You aren’t even close; don’t claim to be one, don’t pretend you are one, and don’t think that you have the slightest idea what the difference between what you do and what a real engineer does is.
The IT industry’s collective need to pad our egos is probably responsible for more terrible design issues, implementation failures, buggy code and downright asshattery than anything else in all of human history. For decades we have told ourselves that we are “new’ and “disruptive” and that we “weren’t recognised as being legitmate.” We told ourselves anything possible to convince ourselves we were ‘as good as” doctors or lawyers or engineers.
Yet we have *never* held ourselves to the same standards. We have never put on the IT equivalent of the iron ring. We have never sworn an oath, and we have never collectively walked away from jobs because what is being asked can’t be done without cutting corners.
We are tradesmen; food at what we do, and capable of making computers and software function in ways they were simply never designed to. We are problem solvers and tinkerers all, but we are most emphatically not engineers.
So while I know there are many people who will disagree with this post; in large part because we all want to see ourselves in the best possible light, I’ll hit the submit button anyways, and let the flames fall where they may.
My name is Trevor Pott, I’m a Systems and Network administrator, and I stand before you to say this is a trade, not a profession. I wish I was an engineer, and if I could do it all again I would have become one, but I am not. I am a digital janitor; a plumber of the tubes.
Who are you?