Is Software Development Too Easy
Jeffrey Palermo recently wrote an interesting post about software development. His premise is that Writing software is too EASY these days. He makes a number of good points and links to others that agree and disagree with him.
I've written before that Software is Too Hard which was in response to another Compuware blogger Jon Kern's post on software.
Jeffrey's post and another recent post Mort or Elvis both have gotten me thinking about the problems we have as software developers and how we communicate. Now you might think that communication has nothing to do with either of these topics, but I think you would be wrong.
We operate in a world of absolutes: 1's and 0's or generalizations: design patterns. When we communicate we tend to use generalizations because having a meaningful dialog with someone in absolutes is difficult at best. This has a negative side effect in that the more we generalize the harder it is to understand our message. Generalizations don't lend themselves to concrete examples. We unconsiously move from presenting a valid argument with facts to presenting an idea/opinion. Some would say we sermonize too much.
Back to Jeffrey's post. His argument is that writing custom software should be done by people who "know" what they are doing. He proposes (and isn't the first) an apprentice, journeyman, master hierarchy where those that don't know better are prevented from causing problems for those that do.
Before we talk about why that won't work, I want to state for the record that though I think Jeffrey's opinion is perfectly valid I think it is very elitest. The idea that because he/we "know" better makes us masters and gives us the right to managed the growth of the others, simply because we don't want to have to deal with yet another train wreck of an application that some 'Mort' developer created is crap.
Argument: Tools make it too easy to write bad software
It's nice that we can blame something for all that bad software, but let's dive into this one. Over the years we have seen considerable improvement in languages, IDE's, tools. All of which has resulted in making software development faster (in theory anyway). It has also made it open accessible to the masses aka 'Morts'.
The question is why? If software is so hard then why did anyone go to the trouble of making it easier for those who don't know better? The answer is simple: Free Market. We live in an economy where he who gains market share, gains users, gains wealth.
Focus on Microsoft tools for a moment. Microsoft has gone to great lengths to make their toolset easier to use and make it easier to create software: 'Write 70% less code with VS 2005'. Why is that? They certainly didn't do it because it was cool. How many Microsoft developers do you think spend their days dragging and dropping controls to make their applications?
So why do they continue to make it easier and easier? Money! The more people that can/do write code using a Microsoft software product means that they will sell more software, more tools, more hardware (need a mouse right?), more OS's. It gets larger than that though. Beyond the initial sales, there is the ripple, the pebble in a pond effect, where businesses find they have people with skills in MS products and tools and these people can create software that allow that business to make more money and suddenly we are off to the races. The business buy more software and sell more products, which eventually drive some other business to do the same.
It all boils down to money. Who wants it, who gets it, and who controls it. The market dictates that business simply can't afford to pay "professional" software developers to write every single custom application they need. If they had to most of us wouldn't have jobs today. That elitist position you are standing on was built by those hobbiest 'Mort' programmers.
My first job at Dell was with Business Systems Management. We wrote the software that Dell IT couldn't because they didn't have time. Make no mistake about it, we were Mort's. We had some above average skills, but we were all just learning. Every company I've been at since then has had the same arrangment. There is the official IT projects and then there is the "unofficial" IT projects. The unofficial are almost always done by those dual trade individuals who aren't professional programmers, but have enough skill to put something out there.
Argument: Software isn't a toy
Jeffrey points to money here. Companies can lose money and not even know it if they have buggy software. That's just one side of the equation though. The otherside, and significantly larger one, is that companies routinely make money because of these hacked together applications. Companies rely on these type of solutions to help them execute. In many cases the money the company is loosing is only a small part of the money they are able to generate because of these applications.
In my post on Software is Too Hard I talked about some of the difficulties we have as software develpers trying to meet expectations of management that doesn't understand what it really takes to create great software. The truth is not every piece of software needs to be great. It just needs to work!
Great comments. Very thoughtprovoking. I also have worked for Dell before. I know what you are talking about. You do make a good point that crappy software could make a company.