Monday, January 22, 2007

More random thoughts

Ever since 2007 began, I've found that I'm unable to focus on anything properly. I don't know why. I thought that a probable reason is multiple responsibilities at work, and the pressure of having to deliver on all of them simultaneously;but that has been the case for the past three years at least, and isn't new. Well, it may be some untoward pressure at home, but that too isn't new. :) And that is reflecting on my writing. My posts are turning into collections of random thoughts, as opposed to being a (hopefully) clear argument on a topic.
Anyways, my first random thought is GUI design again. Now, Blogger, Gmail, and other services prompt you to save your work if you try exit the page. But how does that prompt read? "Are you sure you want to navigate away from this page?" And the options are "OK" and "Cancel". Now, consider a real life situation - A shop-keeper asks: "Would you like to pay by credit card?" Do you say: "Cancel"? Your mom asks: "Would you like some coffee?" Think what her reaction will be if you say "Cancel"! Why can't they simply use: "Yes" or "No"? "Are you sure you want to navigate away from this page?". "Yes". Are you sure you want to kick those UI designers where it hurts? Yes. And do you want to change the topic? A definite YES.

Next, is the Nanny State. Funny how both software and government tend to babysit everyone, treating their customers and citizens as three-year-olds. Consider, for example, the entire Shilpa Shetty incident. A second-rate person in a third-rate show called her something. And by God, India is insulted! The government even goes to the extent of issuing tongue-in-cheek ads in British newspapers, inviting Jade-whatever to come to India!? Why? Is Shilpa Shetty a three-year-old who didn't know the 'anything goes' rule of reality shows? Is she a defenceless rape victim who cannot afford a lawyer? Wait - there were rape victims in Noida - what did this government do about them? How did they help relieve the pain and suffering those parents endured due to State incompetence?

Banning TV shows. Issuing tirades against foreign citizens. Reneging on contracts. All contributions of the Manmoron government. Go, moron, go!

Sunday, January 14, 2007

Random thoughts on a lame Sunday

After a rather hectic early-weekend, I decided to cool off, and take it easy on Sunday. I did nothing but sleep and watch the tube. And of course, now I'm putting down my random jottings on (e-)paper.

BSNL has finally increased my bandwidth to 2 Mbps. Free of charge. By God, does the connection rock!? My favourite videos (one of them here) on YouTube download like I'm downloading them on the corpnet! And how does BSNL inform you about it? In true PSU style. No, they don't take out TV commercials. They don't even bother sending you an e-mail. The director mentions it in passing, at a press conference, and your service records show your new bandwidth!

On an aside, this is the kind of mixed economy that Nehru envisaged. A healthy private sector that competes. Free PSUs that drive the private sector to better its services without only competing on price or on monopolies. Remember, it is BSNL's initiatives that have made broadband so cheap and accessible, not to mention reliable.

While on the topic of freedom, there is another debate going on about the incendiary video of an actor depicting Gandhiji in poor light. The nation's leaders are furious. They want to censure two channels for telecasting the video, and may have already asked YouTube to delete the video. All this begs the question - is the nation insulted by a ridiculous video, or is it insulted by these 'leaders' - who in the immortal words of Nissar Ahmed, fatten up on the flesh of the poor? What would Gandhiji have been more ashamed of? The fact that there are still people in this country that go without a square meal everyday, or some idiot depicting him doing a pole dance?

A free nation that can't tolerate humour, however tasteless it may be, is not a free nation. You cannot have freedom of speech and expression without getting people agitated when you exercise your right to it. And by bowing to the agitated, we only destroy the idea of India. We destroy the idea that a 5000 year old nation, however steeped in inequalities it may be, can aspire to a democratic life. We destroy the tolerance, nay, acceptance that is the hallmark of Indian life. We destroy the hope of sustaining a argumentative society of 1 billion. the recent days, there has been a great deal of focus on the education sector in India. On how to improve primary education, how to make university education more research-oriented, and to sum it all up, on how to make India an educated country. Here is my suggestion to improve primary education - particularly in government schools.

Force every bureaucrat and politician to send his/her child to a different government school such that all government schools have a significant number of politician/bureaucrat kids.

Do this, and every government school will rival DPS. And the quality of education will automatically improve.

(Post script: If you ever see this idea get implemented, remember you heard it first here. :) )

Sunday, January 07, 2007

Technology notes Vol 1, Issue 3 Jan 07

Welcome to the third issue of Technology Notes. This time we'll talk about silver bullets in software development and GUI design. I'll also write about a related topic: that of managing technologists.

* Graphical User Interface design

Most people incorrectly think that GUI design is simply a matter of dragging and dropping cute (or not-so-cute) buttons from a toolbar onto a flat surface. Furthermore, many UI designers go by the adage "Cute is user-friendly" - i.e. the fancier the interface (metallic buttons, colourful pictures and the like), the better. Form over function. Just like the times.

Ofcourse, it is ridiculous. And the best example comes from nature. Look at any predator on Discovery, Animal Planet or NGC. A cheetah in full flight is one of the most amazing sights in nature. Why is it so sucessful? Simple. every bone, every muscle, every organ in the cheetah is designed for one thing - catching prey. Nature gives no room for excess baggage. Unfortunately, with software you have a lot of leeway. While every bit of software we write must be designed towards meeting the user's need, often we see more focus on frivilous form...often at the cost of functionality.

Such features are common place. Heavy e-mail interfaces that take ages to load, instead of plain HTML. Tiny, non-standard, fancy buttons that are hard to access and understand, instead of neatly placed standard buttons and icons. Gimmicky features that force users to upgrade their machines. Don't get me wrong. I'm not saying that all fancy UIs are bad, or that they don't have their place. For instance, a program that teaches kindergarten arithmetic cannot and should not use a standard Windows interface. However, user interfaces should never sacrifice the principles of orthogonality, affordances, learnability, closure and consistency over ephemeral feelings that won't last beyond the first use. See (an old) UI hall of shame here. See Microsoft guidelines here and in the interests of balance, the Mac guidelines here.

* Silver bullets in software engineering
(This is based on a discussion I had with a friend in the corridors at work.)

Fredrick Brooks wrote a seminal paper on software engineering where he mentioned that there were no silver bullets in software engineering or that there was no one technique which provided a solution for the various problems of complexity and cognition that software engineers face. However, with every new technology that is introduced today, we hear choruses of cheer - that the complexity of software development is conquered. Recall the hype over Java, Graphical User Interfaces, Rapid Application Development, and the dozens of technologies that we don't even remember today, and you'll appreciate what I'm talking about. However, we still haven't gotten over our search for silver bullets. Consider the problem of performance. The answer? multi-threading. Consider user-land complexity: how do you solve it? Simple, make it a Graphical User Interface! Never mind that multi-threading works only when the threads perform more-or-less independent tasks. Never mind that command-line UIs work really well for most applications, provided they offer a little bit of user-guidance to flatten the learning curve. BTW, try using Intervideo's DVD creator to make a data DVD and let me know if you wouldn't rather have an app that does this:

cd /home/fordvd
dvdwrite -f data /home/fordvd/* /dev/dvd

Anyway, lets move on to the final topic of this edition:

* Managing Technologists.

Before I write anything on the topic, let me acknowledge that I haven't managed people formally. I've led small teams, mentored people, worked with super-cool teams and am having an amazing run of luck as far as managers are concerned. Anything I write here is based on those experiences. Here are some things I think are a must if you're managing technical people:

- Good quality of work. Ok, you may not be able to ask your people to work on a static analysis project that defies the decidability of the halting problem. But the work you ask people to do must challenge their intellect. Suppose all you do is maintenance, see if you can get an additional project that furthers your product. If you do product development, try and find cool problems that your engineers can solve.

- Respect your engineers. Never ask them to do something you wouldn't do yourself. Don't shift the grunt work onto the shoulders of your reportees. Don't ask them to build a system twice. Don't ask them to solve a solved problem. Trust them - but question their assumptions. Praise honestly and publicly when they do well - rebuke gently when they don't.

- Be the "Facade" pattern. Shield your reportees from the politics of your organization. Make their achievements public. Remember that their failures are yours but their successes their own.

I'll add more when I get them.