 Thursday, July 28, 2005
Why do most people today view software as a commodity product when nothing could be farther from the truth? As a software developer type, I could blame it on marketing, but that is not the whole story.
Software is to most people, completely intangible. That is to say nebulous. The laws of physics seemingly dont apply to our world of software. Software does not have a physical shape or a form that one can readily see or touch, other than on a computer screen. And even on the computer screen, you do not see the actual size or complexity of the software because it isnt all on one screen. In fact, you have no idea how many screens there are. And even if you knew how many screens there were, it still gives you no indication to the size and complexity of the software program. But once the computer is turned off, where did the software go? Poof! Its just like being at a magic show (and for some vendors of software, it truly is a magic show 
Hundreds of billions of dollars are spent on software development, it permeates into almost everyones daily life, but it mostly does not occupy a physical space like the Empire state building for example. The Empire State building cost $43 million dollars to design and construct, required 3600 people and 7 million person hours of effort and took one and half years to complete. Most people can understand why once they see the size and complexity of the Empire State building.
However, in the software world, we are routinely asked to build such structures, with respect to equivalent size and complexity, with a nothing more than a few hundred thousand dollars (at best) with a handful of people, whose programming skills vary wildly, (a topic for a future post), and guess what, can you deliver that software to us next week? Ridiculous, yet it happens all the time. It is still happening today. Status quo continues.
Until we have a way of describing software size and complexity in the form of an architectural drawing or structural blueprint, that people can understand, we will continue to perpetuate software development as a massively labor intensive, non-predictable and non-repeatable, error prone process and remain in the pre-industrialization world forever.
Next week we will look at a new way of describing size and complexity using a modeling tool that produces architectural blueprints (and code generated solutions as it turns out). However, tomorrow is Friday and time for Stupid Computer Tricks!
 Wednesday, July 27, 2005
It is no wonder to me why our software industry is in serious trouble. FBI officials said they hope to award a contract by the year's end for a complex new software program to replace a failed project that was canceled this year at a cost of more than $100 million to taxpayers.
Closer to home, the Canadian government has spent over $2 billion (yes, $2 billion!) on a gun registry that is nothing more than a giant database for storing information about legal owners of guns who have volunteered to register their weapons. But $2 billion dollars? To coin a Dave Barry phrase, I am not making this stuff up. It really happened.
The software that controls the baggage handling at the Denver airport where, due to a bug in the software, it was costing the airport $1.1 million dollars of lost operational cost per day! At the time this was occurring, there was no predicted end in sight.
Finally, have a look at The CHAOS Study which reveals mind boggling statistics on software development failures. The report summarizes that in 1995, the U.S. spends $250 billion per year on information technology for 175,000 software projects. 31% of those projects were canceled before completion. 53% of those projects cost 189% of original estimates. $81 billion was spent on canceled projects. Only 16% of software projects were complete on-time and on-budget. 16% wow!
Some of you may point out that this report is 10 years old. I can tell from my own experience, and others, not much has changed since then. In fact, an updated report verifies this.
For the experienced software developer, this does not come as a surprise. Disheartening yes, surprising, not really we live it - everyday. The CHAOS Report states that the top three causes for these failures are the lack of user input, incomplete requirements and changing requirements. No surprise here either, however, I would like to offer up what I would call the root cause of these failures, that is not categorized in the report, which is totally underestimating the size and complexity of any software development effort.
Software development is an incredibly complex, highly skilled, maximally labor intensive process, probably more so then any other professional human endeavor. Software design and programming is so complex and error prone that it is totally underestimated by everyone, including the majority of software programmers who are closest to truly understanding this size and complexity issue. Further, the people that we are trying to develop the software for have no idea about size or complexity or how software is designed, built or even how it works. It is a complete mystery to almost everyone.
Tomorrow we are going to delve deep into this size and complexity issue.
 Tuesday, July 26, 2005
In my discussion on certifying IT Architects, I came across this quote, But much of the work that architects do today is really an art form, not a certifiable set of practices, said James Barry, vice president of development for payroll and human resources applications at Automatic Data Processing Inc. (ADP) in Roseland, N.J. "The written communication and how they present their architecture would be mainly what we would look for in an architectural certification -- not the methodology that determines what to build," he said. "That would come from experience, not certification."
I am really beginning to wonder if we will ever get out of the dark ages in the software development world. With all due respect to Mr. Barry, I must admit I am dumbfounded by his comments. Art form? How they present their architecture? Lets look up the definition of Architect, One who designs and supervises the construction of buildings or other large structures I would say that definition applies to an IT architect as well except that our buildings are software structures. The art in architecture is around the look and feel of the structure, much like that of the user interface in a software structure.
However, in my experience, the look and feel represents less than 10% or even 5% of what an IT Architect does. We spend most of our time designing software structures so that they do not fall down! We design software blueprints much like a building architect would design building blueprints for any size structure. We design and construct software architectures indeed on a best set of practices, like Grady Boochs executable architecture which is an industry best practice and has been for over 10 years. A comment from a reader of my previous post (thanks Brian Di Croce!) mentioned that there is a Software Engineering Body of Knowledge available, called SWEBOK. Perfect!
In fact, it is indeed the methodology (I prefer practice or body of knowledge) that makes an IT Architect successful in the way that s/he can predict and repeat successes in an industry that isnt too successful. Thats the premise behind the Software Engineering Institutes Capability Maturity Model. You follow a prescriptive approach for increasing the maturity of your software development process by using sound engineering principles for developing software. The mantra is, the quality of a software system is highly influenced by the quality of the processes used to develop and maintain it.
This is much in the same way a building architect follows, well known, defined processes for designing and constructing buildings. Patrick MacLachlan, one of my co-workers at Burntsand is a real Architect. I asked him what it took to get his Architects degree. Patrick said it takes 8 years minimum and on average, 10 to 12 years!
Look at what Patrick had to do to obtain his Architects degree. How can we take certifying our IT Architects seriously when there is no prescribed body of knowledge, no exams and takes 3 to 6 months to certify? What a sorry state our software industry is in. This sorry state will be the topic of my next post.
 Monday, July 25, 2005
In my last post, I discussed the issues around using the title Software Engineer and how our educational system (i.e. Computer Science programs) needs to get into the software engineering game. While perusing about on this topic, I come across a posting on Grady Boochs site called, Certification of IT Architects.
Reading the Open Groups faqs, I came across this statement, 2.2 Will there be tests required to obtain the IT Architect certification? Since there is no prescribed body of knowledge for the program, there is no test. Instead we will assess candidates experience and skills against the requirements of the program by evaluating their written applications and by a Certification Board interview.
The faqs go on to say how long it will take to obtain certification (3 to 6 months) and how much it costs ($1250 for the assessment plus $175 per annum to remain certified plus recertification every 3 years).
Now, I am all for industrializing our software world, but something bothers me here. It is the statement that there is no prescribed body of knowledge and therefore no test. No prescribed body of knowledge for an IT Architect? Come on, of course there is. Any seasoned IT Architect can pretty much tell you what the body of knowledge is required to be successful at the job. It is the same body of knowledge that has been required since the first commercial software project was written some 40 years ago.
It goes something like this: requirements, design, code and test. Over and over again. In fact, it has never changed, other than the fancy marketing names that have been attached to this process over the years. Oh yes, you need some project management skills that you can find in the Project Management Book of Knowledge (been around for 20 years). Specifically, I would also suggest Grady Boochs excellent book on Managing the Object Oriented Project (been around for 10 years) as a body of knowledge. You will need some body of knowledge on the process of quality as well, the Software Engineering Institute, has several bodies of knowledge on this subject area, including software engineering in general. The SEI has been around for over 20 years.
10 years ago, I took a post-graduate, 2 year certificate program, called, Software Engineering Management at the University of Calgary taught by Karl Williams on behalf of Motorola University. I can tell you there was a body of knowledge because I had to write 17 exams over those two years to prove I knew what it was.
With respect to being a certified IT Architect, I am disappointed that our software industry would let an organization be accredited to issue certificates without any requirements for a prescribed body of knowledge and no written exams. How is this advancing the industrialization of software development?
 Thursday, July 21, 2005
Shane Schick wrote this great article on why no-one wants to be a programmer As an old-school programmer, I laughed out loud about being a cereal inventor, ha ha! Thanks to George Rafael for sending this to me.
I think Shane is bang-on about Microsoft and other vendors have to take some time out from patting themselves on the back for making great products to show prospective computer science students that it stands to solve still more. They have to talk about what those problems are, and why they will be worth spending hours staring at a screen trying to combat them. They have to explain why the only thing better than living in an software-driven world is programming it in the first place.
I can tell you that we are still in the stone ages with respect to software development compared to other engineering disciplines. The industrial revolution has not occurred yet in the software world. As a programmer, I cant go to a software catalog and order a login component like I can order an integrated circuit in the electronics world. How many login boxes do you think have been invented over and over again? Millions! And we as software developers continue to code these from scratch even today.
It would be great if the young bright minds of our computer science students helped us old-school programmers in developing tools that bring us into modern times so that we dont keep coding login boxes over and over again. In fact it would be great if our Universities actually offered Software Engineering degrees in addition to Computer Science degrees (arent these the same? See Software Engineering, Not Computer Science ), but this idea still seems to be in its infancy in our software world. Unfortunately, in Canada we are still arguing over the title of Software Engineer
Titles aside, I am hoping that the professional engineering bodies in Canada are trying to help our immature software development world by institutionalizing some solid engineering practices in our computer science programs. Doing so will bring software development out of the dark ages and into the modern world where our chances of building successful projects on time and budget will increase beyond the less then 20% success rate (The CHAOS Report) we currently have today.
 Tuesday, July 19, 2005
So how to introduce this technology? Lets start off with a quote from Craig McMurtry, Microsoft evangelist extraordinaire, who happened by one day to see BRIDGEWERX in action,
"BRIDGEWERX exemplifies a new breed of software vendor, best described as an on-demand software factory, that may well turn out to be the fabled next big thing in the Information Technology industry. On-demand software factories provide superior software design tools in the form of freely-accessible services over the Web, and then sell the software that one designs with those tools, software that plugs right into the target environment. In the case of BRIDGEWERX, that free designer is a masterfully simple, yet uniquely powerful facility for representing complex business-to-business, and application-to-application integrations in a practical and intuitive way. Anyone with an integration problem to solve should certainly consider BRIDGEWERX among the top few tools they could use."
Barry Varga and I, being the creators of BRIDGEWERX, were quite flattered by Craigs quote. For myself, it was a bit of a relief as we were (and still are) having a heck of time trying to describe our wares to people. Craig gets it, but not too many other people do. Why is that?
As Albert Einstein once said, the only source of knowledge is experience. As it turns out, not too many people have experience with application integration. For the ones that dont, they are quite surprised to find out that applications dont normally communicate with each other as a matter of course. For the ones that have application integration experience, they are extremely skeptical as they know what a mind numbing, labor intensive process it really is and cant believe one can draw an application integration scenario, let alone code generate the solution.
In some small way, I would like to think Barry and I contributed to the industrialization of software with our invention. If you want to see BRIDGEWERX in action, (it will only take an hour  , grab a beer, some popcorn and treat yourself to a Live Meeting presentation (courtesy of Jim Bowyer - BizTalk guru from Microsoft).
In my next post, I will discuss the history of this invention. As the saying goes, ...I have not failed. I've just found 10,000 ways that won't work --Thomas Edison
 Thursday, July 14, 2005
I am going to leave the sorry state of our software industry behind as I think it is fairly obvious by now that we are in need of some industrialization. The type of industrialization I am talking about is similar to what happened to the engineering design and manufacturing world in 1982 when a company called Autodesk introduced a Computer Assisted Design (CAD) tool called AutoCAD.
AutoCAD revolutionized and industrialized the engineering design community, not only with its full-fidelity drawing tool, but also with its universal file format called Drawing eXchange Format (DXF). This meant other drawing tools and devices like Computer Aided Manufacturing (CAM) machines could read the DXF and render itself on a computer screen or produce a physical part output.
AutoCADs revolution also came in the way of computer automation. Look at what it did for building architects. Aside from easily sharing blueprints electronically, it introduced standards in the way the blueprints were put together, in a fraction of the time it took to do it by hand. Now they had reusable symbols and even room constructs where one room can be replicated 100s of times in the blueprint to produce a skyscraper in a matter of hours instead of months. Revolutionary indeed!
What our software industry needs is a way of describing software size and complexity in the form of an architectural drawing or blueprint. Lets take a traditional building blueprint for example. Almost anyone, without any training, can differentiate between an architectural blueprint of their 3 bedroom bungalow compared to the Empire State Building.
However, we as software developers have nothing like this or so it seems. Some may say that this is what IBM/Rational Rose does with UML or Visual Studio.NET (2005) does with its Domain Specific Language. However, it still requires highly skilled designers and programmers to work with these models and they seem to be quite far away from a full-fidelity modeling/drawing tool like AutoCAD.
In my next post, I will discuss a full-fidelity modeling tool called BRIDGEWERX in which a Business Analyst can use a drawing tool to completely describe application integration scenarios. Better yet, since it produces a full fidelity drawing, like AutoCAD for example, the XML output can be used to code generate the solution in minutes compared to months of manual labor programming time.
 Monday, July 11, 2005
Flipping the bozo bit means to make a mental note that a particular person is a bozo and everything they say in the future should be ignored or looked upon as the meanderings of a slightly annoying, occasionally amusing child or a drunken uncle.
Paul then goes on to write about Software Development Truisms:
1. It is still the Wild, Wild West out here and anything goes. 2. When someone says the schedule is going to be missed, they are never lying. 3. Change is a constant, but people will seldom thank you for changing their code. 4. A lot of bad software is being written by people who don't read. 5. People believe too much of what they read. 6. Authors are not smarter than the rest of us; they just read more. 7. Managers should not make technical decisions, but do. 8. If a manager says I am not technical, be prepared to spend a lot of time explaining things to them so they can make decisions they shouldn't be making. 9. Managers hire experts and ignore them all the time. 10. Messengers get shot more often than not. 11. Leaders have to lead; sometimes you will look behind you and find that someone is actually following. 12. You are the best programmer. 13. Programmers hate to read another programmer's code; if they volunteer to review your code, it is not to do you a favor. 14. There really are programmers ten times faster than everyone else. 15. Every man is in some way my superior, as long as he doesn't keep reminding me. 16. Programmers are emotionally attached to their code, but never say this out loud. 17. Many programmers are intellectual bullies and egomaniacs. 18. Everyone talks about constructive tension but doesn't want you disagreeing with them. 19. Benevolent dictators build the best software. 20. Decisions are, more often than not, emotional. 21. The mean time between the time you start speaking and someone flipping the bozo bit on you is ten seconds.
Some of you may think this is funny in a Dilbert kind of way. Others may think this is cynical. After being in the industry 15 years, I can tell you it is all true. I am especially fond of this quote from Pauls article, Ultimately, software engineers will have to be licensed, but I hope to be retired before that happens
© Copyright 2008 Mitch Barnett - Software Industrialization is the computerization of software design and function.
newtelligence dasBlog 1.9.6264.0 Theme design by Bryan Bell  | Page rendered at Tuesday, November 18, 2008 7:47:58 PM (Pacific Standard Time, UTC-08:00)
|
|