Is History Repeating Itself?
About one hundred years ago blacksmiths were considered a highly skilled occupation and like software development, it was labor intensive. While the blacksmith had been around for centuries, it was the Industrial Revolution that created a rapid growth in employment from 1880 and 1915. The blacksmith was critical to the Industrial Revolution, and the software developer is a critical component of the information and knowledge revolutions.
If, in 1915, someone would have suggested to the million plus blacksmiths employed in the industrialized economies they would be obsolete in less than 50 years, they would have thought that person crazy. The idea of working with metals, fabricating metals, did not evaporate; it was the role of blacksmith that became obsolete. The role of blacksmithing turned into ironworkers, and those blacksmiths that did not learn the new skills of ironworkers were not able to find employment.
Instead of creating everything from scratch metal workers (weldings) began to assemble parts and pieces together. We are seeing this same basic trend in software development today.
As software development rolls down the road of progress, the programmer will become obsolete; and the idea of software developer will continue into the future. I imagine there are those reading proclaiming, “You will always need someone writing code,” and I am sure there were those blacksmiths who could not imagine a world without them, either. It will be a combination of automation and outsourcing that will make the Western programmer obsolete.
The story of the blacksmith does not end with the decline of employment. Today blacksmiths are artists and a novelty profession. The British Artist Blacksmith Association (BABA) continues blacksmithing as an artist profession as well as offering courses on blacksmithing, and they have regular events.. It has nearly 700 members worldwide and their members create brilliant works of art.
 United States Statistical Abstract 1915. Page 233 Table 158
Software companies are being held accountable for problems in its software projects, misrepresenting what a software product does and being deceitful project timelines. A British judge also said the Red Sky software development company should have better understood the requirements of its customer. An earlier court ruling found that EDS misrepresented project timelines and was what its software product actually did. It sounds like the end of vaporware.
Red Sky sold hotel management software to London’s Kingsway Hall Hotel but the Hotel found problems with the software immediately. Kingsway Hall complained and called customer service and got customer no service instead. The software company knew of problems with its software and failed to disclose those problems because it wanted Kingsway to buy its software. It is simple as that. The question remains should a software company disclose known issues to its customers. It turns out British courts are saying yes. Red Sky should have told its customer of problems with the product when demonstrating it and chosen more demonstrations for it that more closely matched the customer’s own business requirements, the Court ruled.
Does any other industry believe or think they should not be held accountable for product flaws that may cause its customers harm or injury. Red Sky tried to rely on a clause in its standard terms and conditions which said that the only remedy available to customers if the software did not perform as advertised was to make use of its maintenance and support functions (a.k.a. call customer service).
Clause meant that Kingsway could not sue it for a refund on the software or for the additional costs it incurred as a result of its failings. The High Court disagreed and said that Red Sky’s clause was unfair under the Unfair Contract Terms Act. It said that this Act applied and protected Kingsway because negotiations between the companies had been one-sided on the issue of liability. His Honor Judge Toulmin also said that the software was not up to the tasks that Kingsway needed to use it for, and which Red Sky should have known were part of Kingsway’s needs when buying the product.
This decision is on the heels of an earlier decision. The High Court ruled that EDS had lied about its software when selling it to BSkyB and awarded interim damages of £270m (about $400 millions) against the software supplier – ouch! The court also agreed that EDS had been deceitful in pursuing the contract, finding that the information technology company had deliberately misrepresented how long it would take to complete the job. BSkyB Wins Legal Victory Against EDS –
http://online.wsj.com/article/SB10001424052748703906204575027303086931726.htmlHigh Court rules software liability clause not ‘reasonable’ http://www.channelregister.co.uk/2010/05/12/red_sky_liability_ruling/
Software Psychologist – help software organizations over come its fears and phobias.
Software Psychiatrist – same as a software psychologist but they prescribe drugs.
Software Archeologist –dig around looking for project artifacts.
Software Paleontologist – dig around for looking for evidence the project actually existed. They also theorize what killed projects. It turns out most projects commit suicide.
Software Actor – they don’t actually do any project work. They just act like they are working. Software Actors attend a lot of meetings and repeat what others say. Software Theologist – pray for project success.
Software Plumber – unclog software projects. This is not a glamorous job and it requires cleaning the project toilet.
Software Janitor –pick up after everyone else.
Software CSI – study the forensic evidence to determine if a project was murdered or committed suicide. By the way most projects commit suicide.
Software Entomologist – collect all types of bugs found during the project.
Software Zoologist – studies all kinds of animals that work on software projects
Software Tap Dancer – dances around difficult project issues
Software Linguist – helps translates the native tongue of a software developer into English.
Read more at www.RebootRethink.Com
Anyone who has ever chugged along trying to their teenage child how to drive a stick (manual transmission) can appreciate the complexity of the task. No doubt It is more complicated to teach a teenager (or anyone) how to drive a manual transmission than an automatic transmission. The reason being is in an automatic transmission much of the complexity of driving has been hidden away and is not seen by the driver.
The complexity was not just hidden it was transferred. It was transferred from the driver to the transmission because an automatic transmission is more complex than a manual transmission. An automatic transmission is more complex (and expensive) to design, build, and maintain too. As software development matures we see much of the complexity being hidden from users. As an example, look at the complexity of booking a hotel reservation or airline reservation. Most of the complexity of has been nicely tucked away. It cost a ton of money to hide all that complexity and functionality. Once upon a time it took a trained travel agent to book an airline flight. Nowadays just about anyone can accomplish this task.
My teenage daughter drove to school today chugging and grinding the gears. In due time she will learn to drive a stick shift. The same is true with software development. We are chugging along and grinding the gears trying to transition from internal applications (exposed complexity) to customer self service (hidden complexity)
This post has nothing to do with software because it is about traveling. I was traveling in Europe last week and I caught a British Airways (BA) flight at London Heathrow Airport. BA allows you to choose a title when making reservations. In America we can choose a titles, and we can choose Mr; Mrs; Ms; and Dr. BA has a few more including Sir and Lord. I have to admit when I made my reservation I struggled between Lord and Sir. In the end I went with Lord.
I had a hectic day and I had forgotten about my new self proclaimed title. I checked in and provided my confirmation number and the BA ticket agent addressed me as “Lord Longstreet.” A smile came to my face and I thought, “Now that is what I am talking about.” The ticket agent did not address me as My Grace or My Lord and I was a bit dissapointed. While I like my self proclaimed title of Lord, I think I need to upgrade to Duke or Earl. I like the sound of Duke David.
I was channel surfing and came across the show Nanny 911. The premise of the show is that there are families who cannot control their children, so they call Nanny 911. The nanny focuses on the behaviors of the parents rather than the behavior of the children. A nanny trying to control the behavior of children is analogous to putting your hand in a bucket of water in hopes of displacing water. Your hand displaces the water, but as soon as your hand is removed, the water goes back to its original position. The same analogy holds true for the quality department. It is impossible to enforce quality standards within an organization without holding management accountable.
The nanny teaches parents that children need to have boundaries, and children need to understand there are consequences to their behaviors. Generally, the consequence for the children is timeout. Since there is no adult time out, a manager can’t put an employee in time out; so, other types of consequences must be adopted.
Too often, quality consultants are focused to helping employees implement a process or fine tune existing processes. They need to be working and consulting with senior management so management understands they have a role in implementing quality programs.
The bottom line, folks can work, talk, train, cajole, sell, and communicate process until blue in the face; but if management does not enforce the desired process, then the process is not going to happen. By enforce, I mean there have to be consequences to following the process and for not following the process. A consequence does include loss of job. Many successful managers I have worked with do fire people for not following the process, and they also reward those who do follow the process.
Abraham Maslow once quipped, “If you only have a hammer, you tend to see every problem as a nail.” If the only tool you have is coding then you tend to see every problem as a programming problem.
Why do most diets not work and what does this have to do with software development? It turns out that diets don’t fail, but people fail to stick with the diet. The secret to losing weight is a pretty simple concept and hard to do. The secret, of course, is to eat less food, drink less booze, and exercise. The bottom line is if you burn more calories than you take in you will lose weight.
Most software process improvements don’t actually fail. People fail to stick with the process improvement just like most people fail to stick with a diet. When you think about it a diet is a process improvement plan too.
To stick with any process improvement takes a tremendous amount of discipline. It takes discipline to lose weight and it takes discipline to develop good software too. This little snack here or there adds up to a few extra pounds just like this little short cut here and there adds up crappie software.
I get asked the question, “What is the average cost of develop software?” all the time. The answer it depends.
1. When people ask the average what they are asking is what is the average unit cost of software. This is a similar question to what is the average cost per square foot of construction. I use function points, so the question becomes what is the average cost per function point to develop software. The average dollars per function point is one way to determine the average dollars per unit of software developed.
2. The average cost per unit of software developed depends on several factors.
2a. The type of business the software supports. The unit cost of software is going to be different for insurance industry and the aerospace industry. The same is true with construction. The average cost per square foot to build a mission control building for NASA is not going to be the same as the cost per square foot to build an insurance office building.
2b. Location, Location, Location. Like real estate the cost per unit of software is going to depend on where it is built. If the software is built with cheap labor (the main input), then the cost will be less. Of course it depends if the cheap labor is of equal productivity. If the cheap labor is half the cost and half as good, then you really do not gain anything from using cheap labor.
2c. Duration. The duration impacts cost too. Not only development costs but maintenance costs. If the the software has to be developed as soon as possible it is going to be expensive per unit.
Actually there are about 50 other factors that impact cost, but these are three big ones.