Friday, July 24, 2009

Sudden stupid decisions with grave consequences

Recently I happened to see a new Ice Age movie: Dawn of the Dinosaurs. Well done, with nice and cute characters, but stuffed with absolutely stupid jokes. What a disappointment!

They are our children who are supposed to enjoy this cartoon; and its nice and cute characters are making our inexperienced children think that the characters’ stupid and ugly jokes about farting, about snots, about genitals, are real humor. Humor is a reflection of intellect, and this implies that palming to our children such rubbish off as real humor, the cinema-guys are impairing kids’ intellect. Children’s brains harmed by a cartoon. Sounds terrific, however per se it’s true.

What’s worse is that this harmful stupidity is not necessary. It is not that “We have to provide stupid jokes because they are more natural for an average person”. No human being is by nature predisposed to stupid jokes. To nicotine, to alcohol or to drugs – yes, there exists congenital addiction to these harmful things, but for stupid humor – never; for this misfortune there can be only acquired addiction. Why cultivating it? I could now turn to the questionable path of discussing some conspiracy theories about somebody’s sinister plan to stupefy the society, but I would rather avoid it. The authors of such movies are not members of some evil organization like Ian Fleming’s SPECTRE, neither they are just silly people. Quite to the contrary, I am sure they are nice and clever. Nevertheless, once these nice and clever guys do a silly thing: They decide to produce a movie jam-packed with stupid jokes.

Unfortunately, it’s not that this situation with Ice Age is exceptional, rather not: It just shows an example of a very common thing in our life. Absolutely normal people sometimes strangely tend to show unexpected stupidity in personal life, in common life, and in business. In business such unexpected and unnecessary stupidity, exposed only once, can destroy serious deal.

For several years we used to do a lot of challenging and interesting work for our customer from Boston, MA. Project to project, task to task it was good working atmosphere: Comfortable though exacting. Such happy times lasted until one day the customer decided to hire a new employee for a newly started project. It was a challenging project about developing own BPMS from the scratch, and the new employee was supposed to be responsible for providing our team with all the necessary contacts, information, etc. Vacancy was published, several guys applied, and one of them has been chosen. He was nice and clever, no hint of evil omen, absolutely. As we are in outsourcing software development business, the guy said he needs to visit our premises to get acquainted with the developers. Okay, it was not the first time our customers visited us, so we arranged everything as usually: Meetings, discussions, sightseeing. The guy was reasonable and friendly, he was planning a lot of activities with us, and after several days he said good bye and returned back to Boston. In a few days our customer forwards me the report by this guy. Report is saying that we are a team of unprofessional developers and shameless cheaters; that the project will never be done, and the customer is just wasting his money. Like thunderbolt. I was perplexed and just answered to the customer “No comments”, because what could I comment? Best comments were our previous successful projects. The customer reacted in his own way: The guy was fired, the information about his strange behavior spread among a lot of software companies, and a lot of doors slammed in the guy’s face immediately and forever. Justice was done, but what wrong had been with this guy? Why? He had great prospects, he was moving forward, and suddenly he does something that not only closes these particular prospects, but also makes him persona non grata for hundreds of his colleagues and potential partners. I can only make a try to formulate his sudden stupid decision, it might sound something like: “The project is promising, and it is on the way. Why not throw out the current team then to replace it with my own one?...” Just my guess, but I cannot find any other more or less plausible explanation. Anyway, though explanation seems plausible, the action itself still remains stupid. Like a nice and clever guy has kind of instant brain blackout, and here we are, with all the disappointing consequences.

Unfortunately, such situations happen from time to time in software development projects: Sudden blackout of developer, or tester, or customer, or manager, or whoever, and here we are - long lasting problems for the project.

Lord, save us from such blackouts of our own and keep us faraway from blackouts-prone people, even if they are nice and clever!

Friday, July 10, 2009

Software development business: Peculiarities in delivering results

How software development differs from other types of business? At a first glance there should be no difference whether you sell custom developed software product or some made-to-order material product. Be you a tailor or a software developer, a customer just comes to pay you for a product he/she needs, be it a shirt or an application.

Unfortunately, it’s not so simple. The difference is caused by the nature of product: Software app looks like something absolutely “unmaterial”, like an idea, just a product of somebody’s thinking process. If such, a customer at any given moment feels free to require changing of any single, big or smallish, part of it instantly. When ordering a shirt from a tailor - its model, fabric and buttons are being agreed before the work begins; and as the shirt is made, no sane customer would ever dispute, for instance, number of sleeves or would say that he/she wants a collar to be done inside the shirt. For a shirt there remains only one issue: Whether it fits or not. This becomes absolutely another thing if we speak about software: Post-requirements similar to having three sleeves or a pink collar inside the shirt, at the waist level, are quite habitual.

Okay, software app is something different to a usual material product. If so, can we judge a software app as a bespoke artwork? Unfortunately, my answer again is: No, we can’t. If you order some portrait or a landscape, you would judge the result in general terms: “I like it!” or “It’s awful!” I hardly imagine a person saying that the landscape is perfect, but that grass under the third tree if counted from the left should have been painted 1.5 inches longer. With respect to software app, you would never be surprised with similar judgment.

That is why we have requirements. Long live to them! Requirements are supposed to be if not material, but at least a written base of the agreement between the customer and the developer. However, as the work is done, and the customer comes to see the result, you might hear something like: “Wasn’t it obvious, that this button should have been in the upper right corner of the screen?! I remember exactly that in our phone call I insisted that here should be a pie-chart rather than a table!” And your feeble attempts to refer to the requirements would be repelled indignantly: “It was obvious!” or “I remember I told you!” In this case you would better have either patience of Job, or good law department, or both.

So, certainly you must use fitting formal approaches, but it's not enough. One more "must have" is your personal attitude: We should be totally and implicitly friendly to a customer. Saying ‘friendly’, I mean it. Not just routine smile or even high five (still routine, though), but fair intention to do what the customer really wants, often after helping him/her understand what he/she really wants. It’s not pure altruism: Being really good to customer you are good to yourself. No other way to success in developing bespoke software.

Monday, July 6, 2009

Software life cycle: More freedom than in human life

Software development as one of the human activities is part of our life. Hence, it cannot be completely independent from society, from politics, from prevailing lifestyle. That said, it looks strange to me how common software development techniques show obvious tendencies absolutely opposite to the main trends of the society.

The turning point for the society is 9/11. In the morning of 9/11/2001 I was on my business trip in Boston, MA, and thus I have lived through all that nightmare of the first week after The Turning Point with American friends and colleagues. America was under attack, and America began to defend. Nobody could show the enemy, so the defense activities focused on “security”. Why in quotes - because for a few first months it was “kinda” security. For example, one could not visit any normal eatery in the airport beyond the checkpoint. The reason was that after the checkpoint you should not have any ability to possess a knife or a fork that could become a weapon in the airplane. Good! But after that, in the airplane your dinner was served with absolutely normal metal knife and fork. Yes, now they are plastic, but for the first 1-2 months they still were metal. Was it security? No, rather stupidity.

Anyway, at this point the USA has turned to a new way, and the entire world obediently followed it. The new way - the new rules; the new rules - the new regulations; the new rules and regulations – serious shift in the spirit of the society. Rules, regulations and the shift, all of them were about restrictions and about much more control on how people behave. Strictness grew terrifically: recall, for instance, how in August 2001 people in the US airports used to check in for flights near an airport curb, without showing any ID at all; and compare it to how airport check-in is organized now. The same for lot and lot of other places all over the world. Let’s take just a few examples. Look around yourself at any place in London, and you will see couple of video cameras watching for you. Not the single huge and monstrous London Eye, but thousands of tiny electronic London eyes are watching for you wherever in this beautiful city you are at any given moment. Replace the word “London” in the sentence above for “Moscow”, and everything remains true except that the huge London Eye does not have an equivalent in Moscow. Need more examples? Okay, let’s move to the Eiffel Tower in Paris and walk around it. In couple of minutes you will notice well equipped and armed to the teeth officers looking so impressive, that I would never put in doubt they represent some French special forces. These guys with their rifles are not just loafing around, they watch for those who are. Very close to the tower there is a bus – a local staff wherefrom these guys are managed. So, we easily detect presence of the Big Brother in every country now. The Big Brother does not hide himself now, on the contrary - his presence is demonstrative in each country. To a scale of the whole world it really is the Big Brotherhood, or more precisely - the Brotherhood of Big Brothers. Who would believe in this a decade ago? Just a few years of fear, and here is the result.

I was just talking about main trends that work now for the society. Maybe I became a little bit too agitated: All these obvious and hidden cause-and-effect relations are very interesting, and we really depend on all this. Well, now let’s have a look at the main trend in software development PM. If the trend would have been the same as for the society, we should have seen enhancing strictness and control. Do we see it? No, quite the opposite: In managing their projects, software developers more and more move in the opposite direction, to anarchy. The term seems to be too strong? Let us imagine we are, say, in 1985 and while talking to a follower of a waterfall SLC model we describe him/her an agile methods of 2009. No doubts he/she would have indignantly called it anarchy. Yes, until now we do use waterfall and spiral SLC models. It is not that old good approaches have vanished; I would rather say they are out of style. If 10 years ago following something like RUP standards was somewhat innovative, now it is commonplace, and it looks unprofessional if you abandon RUP-like or MSF-like approaches when they are required. But in these days we are talking quite often about agile methods, about mixed Agile Unified Process, and so on. And we really use these comparatively new PM techniques. What’s strange is that these new “irregular” and “anarchist” techniques have not appeared just out of mind, they are not a result of some theoretical research. They only mirror real needs of customers. But our customers are just people and together they build our society. So what we have is that people in their common life vote for enhancing regulations and control, and at the same time they stand for more and more freedom in managing software projects. What is it? Escape to virtual reality similar to the same in computer games? As if we are burying our heads in the sand, like “Okay, I have to waive freedom in real life, but at least when I work on software, I partly compensate it!”