When the only tool you have is coding…

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.

Great Software Design Ideas from 1844

The following quote is very applicable  to software development in 2010 even though it was written nearly two centuries ago.

“Great design gives no more than its purpose requires; its artistic resources are the very simplest; its arrangement and relationships are the most natural and comprehensible; it is far removed from all ambition, all splendor, and all overburdening.  It is not rich and does not deceive; but it is certain, virtuously true, and intimate.  It proceeds in a strong, straight line to its goal; and a certain childlike sincerity is evident throughout. “   German Encyclopedia 1844.

http://www.idsa.org/

http://www.bitrebels.com/design/wow-genius-way-to-describe-great-design/

http://joelongstreet.com/

Reboot! Rethinking and Restarting Software Development

Published in: on November 6, 2009 at 15:24 Leave a Comment
Tags: ,

Why do most diets not work? What does this have to do with software development?

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.

Telephones and Telegraph

Telegraph

In the 1950s Western Union, the first ecommerce company, was at the top of its game.  It dominated telecommunications but failed to adapt and enter into the voice telephone systems.   Employment in the telegraph industry soared in the late 1800s, but by the early 1960s, the telegraph was on its way out. It is hard to believe but the telegraph lasted until about 1991. In the end, the telegraph died of a slow death. Perhaps it died at the same rate as those who grew up with the telegraph and refused to change.

There are always those who refuse to adapt. Just like those who continue to use DOS or FORTRAN, or COBOL, there are those who continued to use the telegraph-even when better options were available.

Telephones

The first commercial telephones started appearing in the early 1880s and by 1902, there were 2 million telephones landlines with 54,000 employed in the telephone industry. Like software development, there was a rapid growth period that was unheard of before. Twenty years later, in 1922, there were 13 million telephones and 210,000  salaried employees.   Over seventy percent of those employed by telephone companies were operators.    It was better tools, techniques, and automation that replaced the telephone operator.

Employment in the telephone industry grew until it peaked in 1979 with slightly more than 1 million employees.  Since 1979, the number of people employed by landline telephone companies had fallen to about 300,000 in 2006.  Today, everyone understands cell phones will replace landlines, and I am sure there are some who will hold onto their landlines until they die.

The common thread in all these industries is a belief that the growth is going to last forever.  I am not sure where we are on the growth curve for software development, but I do know the industry will peak and then rapidly decline.   The software industry will continue to change rapidly and automate impacting those employed in the industry .

Railroads and the Software Industry

Railroads

Once upon a time, the railroad industry was the world’s largest employer; and, like software jobs in the 1990s’, some of the best jobs were with the railroads.  The railroad industry had similar growth to the software industry.   In the 19th century Europe, the UK and the USA had rapid growth in railroads.   In the USA, there were only 34 miles of railroad track in 1830; and 50 years later, in 1880, there were nearly 100,000 miles of railroad track.  Over the next 20 years, from 1880 to 1900, the number of miles of railroad tracked doubled, reaching 200,000 miles.   In only 70 years the railroad industry went from a dead stop to 200,000 miles of railroad track.

Employment was not limited to just laying track; there was large employment in manufacturing the locomotives, passenger cars, and freight cars.   In the UK, workers built 23,000 locomotives, 73,000 passenger cars, and an amazing 1.4 million freight cars in less than 50 years.[1] This is an amazing feat when considering the tools and technologies that were available.

The building of the railroads and the railcars that ran on the railroad spawned rapid employment growth in the USA and UK.  The railroad industry employed about nine percent of the total workforce of Chicago.  The rapid growth did not last forever.   Railroad employment peaked in the 1920s, declined during the Great Depression, and rose again during World War II.   Starting in the late 1940s the railroads had to compete against other forms of transportation: cars, buses, trucks and airplanes.   Much of the manual labor was replaced by automation. The railroad companies improved their technology, and they started using diesel locomotives, track-laying machines, and other innovations that reduced demand for labor.

Like the software industry, the railroads suffered from a lack of standardization.  There was no standardized track gauge, the distance between the rails, until the 1880s.[2] The distance between the tracks depended on who operated the rails. This lack of standardization caused a lot of problems for those individuals that wanted to ship freight or move people from one point to the next.  Parts between freight cars were not standardized either.   This is a similar problem faced by the software industry.   There is little industry standardization for software development.  In the software industry, it is common that software applications developed by the same companies do not communicate and share data.

From 1920 to 1995, those employed by railroads had dropped by nearly 90 percent. In the end, it was a combination of foreigner labor, competition and automation that did the railroad workers in.  In the USA, the railroads were built by cheap foreign labor especially by those coming from Asia.  Software developers are facing stiff competition from India and China (Asian labor).


[1] http://www.trackoff.org/pdf/Abriefhistoryofrailways.pdf

 

[2] http://www.ansi.org/consumer_affairs/history_standards.aspx?menuid=5

Blacksmiths and Programmers

Blacksmiths

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[1].   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.   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.


[1] United States Statistical Abstract 1915.  Page 233 Table 158

 

The new economy is just like the old economy

“Those who do not learn from history are doomed to repeat it.” - George Santayana, Philosopher

Not long ago everyone was talking about the new economy and the news media had several stories about the “new economy.”   It turns out the new economy is just like the old economy, and the ole economic laws still apply.

The software industry is experiencing a lot of growing pains experienced by other industries.   Since the first computer language appeared in the 1950s there has been a churn, of both hardware and software.  Hardware companies like Wang, Control Data, and Digital have come and gone and were replaced by Microsoft, Dell and Apple.   Software languages have come and gone, too.   Assembler, Fortran[1], and COBOL have been replaced with Java,  Java Script, and C++.  Long before there was Word, there was WordStar and WordPerfect; and, before Excel there was VisiCalc and Lotus. Whatever happened to Lotus 1-2-3?

History Just Repeats Itself

Mark Twain once quipped, “History may not repeat itself, but it does rhyme a lot.”  These days, software development rhymes a lot with other industries.   I hear from software developers that the software industry is unique, and no other industry has experienced the same type of growth that software development has experienced.   If we look back in history, then we understand that several other industries have experienced rapid growth rates similar to the software industry.  The growth curves for the railroads, telegraph, telephones, textiles, and the auto industry all have the same shape.  There is rapid growth, the industry peaks, and employment falls off.  Some industries, like the telegraph, just disappeared.

I am not suggesting that the software industry is exactly like every other industry because there are similarities and differences.  What I am suggesting is that by looking at other industries, we can get an understanding of the future of the software industry.   What I am suggesting is that the software industry does rhyme a lot with other industries.

 


[1] While I started out in Assembler, I was always fond of Fortran.  Fortran first appears as a useful programming language in 1966 and received major upgrades by 1977.  Believe it or not there was a new release of Fortran in 2003 and another release planned for 2008.

 

Ideas on Productivity

I stumbled upon a very good blog related to productivity and I thought I would share it.

http://www.productivity501.com

Published in: on October 30, 2009 at 09:11 Leave a Comment
Tags: ,

What is the average cost to develop software — It depends

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.

Read more at Reboot! Rethinking and Restarting Software Development.

What we have here is a failure to communicate

Why do bureaucracies emerge in organizations and often overwhelm it?

The real question in my mind is, “What is the root cause for an organizations to have too much bureaucracy?”  It is not like organizations or more correctly individuals within organizations wake up proclaiming we need more bureaucracy.   People do not say, “We need to burden teams with status reporting, forms, procedures until we reach a point in time where everything comes to a screeching halt.”

The idea of small autonomous teams that are unhampered by bureaucracy is not new.   During the 1990’s there was a software methodology called Rapid Application Development (RAD) and today the buzz is Agile. This idea of limiting bureaucracy is not limited to software development.  Going all the way back to the 1940’s there were teams called “Skunkworks” at Lockheed Martin.   The point being idea of self directed teams is not unique to software development and not a new idea.

Some of the clues for burdensome processes come from the word bureaucracy itself.  The term bureaucracy came into use shortly before the French Revolution of 1789, and from there rapidly spread to other countries. The Greek suffix – kratia or kratos – means “power” or “rule”. Does it turn out that bureaucracies are the result of power and rule?

My experience tells me it is not that simple. The root cause for bureaucracies is the result of poor communication.  The cause of bureaucratic burdensome processes is the result of a failure to communicate.   An organization can eliminate burdensome processes, but it does not resolve the problem of communication.  If root causes are not addressed, then problems will never be resolved.

The bottom line is  bureaucracies emerge because of poor communication.  Go though the two links below and look at the recoomendations.  We will begin to notic the opposite is done in software development.  As an example, it is recommended to avoid jargon.  How often is that done in software development.

99 Ways to Improve Communication http://www.getinfrontblogging.com/communication/99-ways-to-improve-your-communication/

Improving Communication Skills http://achievesuccessforlife.com/41/improving-communication-skills/

Sources

http://en.wikipedia.org/wiki/Skunk_Works

http://en.wikipedia.org/wiki/Rapid_application_development

http://en.wikipedia.org/wiki/Bureaucracy