Wednesday, 29th June 2005
Thank heavens for buggy software
Thank heavens for buggy software and lazy programmers.
If not for the fact that humans are mortals and error prone, me and a whole bunch of incompetent programmers out there would be out of a job. Imagine the situation where software developers made no erros, the software designed contained no bugs at all and worked perfectly on version 1.0 itself. Then there would be no bug fix releases, stable build releases, minor versions, major release version, beta test versions and whole bunch of other releases/ versions for which we can fleece our customers. Why, there would barely have been a need for going past version 1.0 itself. This holy grail of software development is not in the nearby horizon and i'm glad for it. And unless we keep finding reasons for new version of the products for purpose of fleecing customers, we dont get paychecks. For a person such as me who lives paycheck to paycheck, imperfection of software development is desirable. This is why the software business is more lucrative (atleast financially) and i'd rather do this than say 'flip burgers at McDonalds'.
Thankfully, programmers and developers are well human and inherently produce buggy software. Laziness is one of the major players in ensuring that a certain number of bugs are inherently put into software. Laziness to work hard enough at design, laziness to test all use-case scenarios are all reasons why the software put out in the market. Related to laziness is "Passing on the buck" such as "it seems to be working most of the time, lets just leave it to the QA guy to find and report any bugs. If he doesnt find it and it passes production and the bug props up for the user and is reported back, we can blame QA guy for it". The other star of the 'buggy software' game would be 'meeting deadlines'. The urge to have deliverables meet deadlines is like having the 'sword of damocles' hanging over your neck. The causes a push towards production phase, limiting design, testing and refactoring phase. As a result, software is often "pushed" to the client, filled with obscure bugs all meant to be fixed along with future 'feature requests' in following versions of the products. In order words (as Eric Lippert would say),they ship 'half-baked software'.
Thank heavens for having different operating systems and application frameworks
I am extremely glad, we have a multitude of operating systems and different flavors of the same operation system. Often programmers desist the fact that they need to compile and test their programs on several operating systems. What if there was only one ubiquitous operating system which provided a standard API. There would be no headaches of library file dependecies, run-time enviroment variants etc. But with so many operating systems available to pick from, enterprises choose and deploy them, necessitating products targetting specific operating systems. Inability to master more than a couple of operating systems, gives birth to 'operating system specialists' and 'operating system specific developers'. With virtualization becoming more and more ubiquitous by the day, the lines seperating various operating systems is becoming thinner and thinner. But there still is a way to go to achieve complete virtualization and admist all the din, developers like me look to make a quick buck before we are replaced by a bunch of nuts and bolts and silicon.
Thankfully, we have different application frameworks which work on different operating systems. So the software we develop making use of the framework keeps us in the sandbox that the framework restricts us to. As a result, developers often dont master more than a couple of frameworks, preffering to stick to frameworks of their preference, picking up skills on a need-to basis. So there will always be a .Net developer jostling with a J2EE developer, each throwing punches at the other about why his/her framework is better.
Thank heavens we dont have automated software development yet
Automated software development is still in its infancy.... Thankfully !!!! Imagine if AI (Artificial Intelligence) progressed so well that computers were able to produce their own software, fix their own bugs. We could then replace nearly the entire IT staff with a bunch of silicon, nuts and bolts. A science fiction aficionado would imagine that such a situation (such as the one we see in Terminator 3) isnt far off. This would be an enterprise's dream (to be able to get rid of the 'pesky' IT staff) !!!. For now, RAD tools, CASE tools make our lives easier in hiding bugs amongs the bits and bytes of software we produce. Computers may be smart, but we are smarter then them in outsmarting them.
Thank heavens thin clients (browsers) dont meet web standards perfectly
If you thought design desktop applications (thick cliens) were hard enough with so many operating system and framework variants, the scenario with thin clients is equally distressing. Every known browser on the face of the earth doesnt comply with web standards. As much as we all have our favorite browser (mine currenty is firefox), it is a well known fact that browser object models vary across them and inconsitency with complying with web standard has resulted in needing hours and hours of developer time (man hours) to deal with cross browser inconsistencies. So there is always a need for devlopers who to develop targetting specific browser versions, so the man hours need to be put in, so the developers who need to put in these man hours get paid and everyone is happy !!. Contrast this with a situation of having to develop for a single browser interface where life would be a whole lot easier for the web developer.
Now i illustrate an instance of personal experience where bad design coupled with the urge to meet deadlines resulted in bad software developed. By now my rants about bad design of the previous version of website must have made a point. At the time of first design of the site, the wish to have a "cool looking" personal website was so tempting, need to follow design guidelines where thrown out of the window. Similar to how companies want to put their "cool, new" software out on the market (overriding QA tests), i too wanted to put my site up for public display as early as possible. This resulted in the bad design.
Now i get to the main topic i wish to discuss and the reason for choosing today's topic. A good friend of mine, rajesh goli (whom i refer to as 'C' goli) had asked me to proofread his article on good design principles of web development. He titled it Holy Grail of Web Site Development - Seperation of Content and Design. Rajesh was the first guy in my class to come up with a personal website (in his case a 'C' vault). The urge for me to attempt and emulate his site is similar to the situtation where companies developing competing products get into mad rushes and advance project deadlines to have early deadlines and beat the competition. When i read the article for the first time, it made total sense what he said, but at that point i didnt realise the importance of what he had to say. After going through the pains of website management, i decided enough is enough and the website makeover was to follow good design principles even if it consumed a little more time than desirable. Although my design is a varaint of the templating system, he recommends in the article. By and large, a few of the design guidelines are followed such CSS, seperation of content and design etc. PHP gurus swear by smarty. The book i referred to (Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional)during my site makeover, too illustrated the benefits of a templating system such as 'smarty'.
The point i'm trying to make is that software developers are human, error prone and inherently produce buggy software.Consequently software development is iterative and hence long lived. And developer dudes such as me hope to cash in during the longevity of this software industry boom.
New thought: Worst user interface ever and a jab at Microsoft
Allow me to digress for a moment and illustrate a situation of possibly the worst user interface design i have ever seen and possible compete with this. If anyone can explain why Internet explorer find dialog box is a modal dialog box, please go ahead and enlighten me. So i'm surfing a huge document like say a research paper. I want to look for an instance of a word. I hit Ctrl + F and up pops the ugliest looking box. I key in the word and hit enter. Nothing happens. Well actually it does, but i dont see the word it just found because the damn dialog box is in front of the higlighted word, hiding it from view. Compare this with Firefox where the Find box is a neat little bar at the bottom and my searches are not only searched as i type, but are automatically found and higlighted and immediately visible. For the love of god, i cannot understand why the developers at microsoft and internet explorer (yeah yeah i know the IE team of MS have been dormant and non-existant for the past couple of years, till firefox shook them up with a kick up their arse), would use a modal dialog box in the user interface of the world's most used software. Was it just lazy programming or maybe they were just waiting for the feature request, so they could come out with a new version with associated hype and not to forget fresh set of bugs. On a sidenote if every other browser nowadays has multi tabbed browsing, what is keeping IE from implementing it in theirs.
Posted by Nikhil on Wednesday, 29th June 2005 in TechnoBabble | Humour | Embarrassing | Fun
Comments
Sorry for too many comments :-).. But why is it that you have no <title> for the blog pages? -Rajesh
Posted by: Rajesh Goli on Thursday 30th of June 2005 06:29:35 AM
Actually every blog page has the <title> dynamically retrieved from the article's title. If you were to reference the file as http://www.nikhilzkingdom.com/articles.php/2006/06/29 you will see that title at top browser match the title of blog post. However using AJAX, only body of the article is retrieved and replaces the current text of the content-body tag. A non lazy programmer would also retrieve the title of the post requested even before someone posted it in the comments section. Sadly i do not fall in that category of blessed programmers. - Nikhil
Posted by: Nikhil on Thursday 30th of June 2005 11:49:13 AM