My wife has just taken up a new hobby of making teddy bears. Which meant she had to buy a sewing machine. She had a look at the manual and said that looks complicated why don't you look at it, you like gadgets and work in computing. Of course I am a developer and the mere thought of hardware sends shivers down my spine. Anyway I read through the manual, which was very detailed and tried to explain everything. The problem was I had never used a sewing machine and so I was uncertain what I was meant to achieve. Why for example did you need two threads one from above and one from below. I realised I could follow all the pictures but and understand all the words but I was still lost. I especially liked the lever called "dog feeder control". I was half expecting an ultrasonic sound to be issued and all the dogs in the neighbourhood to suddenly appear. Eventually, once we had done everything it all seemed very simple.
So what does this have to do with software development. Quite a lot I think, take a package like SAP. The accountants love it but the users often hate using it. Now I think I know why, they don't know what they meant to achieve with it. The terms it uses are different from the ones that users employ and the interface, though a lot more jazzy, doesn't look like the one used by all the other programs on their computer.
Other great examples are: "hanging indents" and "orphans" in Word. Great terms, invented by the developers. But most users would never think of looking for those terms in the help. Especially in international companies using american software and many non native english speakers.
I don't know the complete solution but I am beginning to realise why so many users do not use the help. Also I beginning to start re thinking how I do user design.
Yesterday, I had an interesting conversation with a couple of friends who work for a .Net consultancy where they also give .Net training. I was curious to know what reaction they where seeing to .Net. The answer I got I would very interesting and gave me cause for thought.
They said initially people are not interested in .Net but when they see it then they like what they see. However, the problem is generally the people who are interested enough to learn about .Net are the elder members of the development community. The younger people, who after all are the future, are much more interested in PHP and Java.
Also people still confuse .Net with Windows 2003 Server which makes me wonder why on earth Sun thinks it is worth spending a lot of money on developing the Java brand. It seems the brand awareness of Java is already very strong really what they should be investing in is improvements to Java. Expanding the brand often dillutes the message, .Net is a great example. It would also seem that .Net needs to be hip and start showing the doubters that in a difficult job market that learning .Net language results in a job and career advancement. Also it would seem to me, and I might sound a little like a hereti, that Microsoft should invest time and money to get Mono finished. Once Mono is there than the cross platform story is much stronger and people can write ASP.NET applications that run on Linux and on an Apache story. I am sure that the Windows Server and client people would say that will remove on our selling points and cause us problems. However, by the time Mono supports .Net Framework 1 or 1.1 then v 2 should be close. Without seeing v2 I am assuming that it will be a major advance on 1.1, which means Windows keeps it's advantage.
I want to write .Net applications that I run on a Linux box, as the customer has been seduced by the myth/reality of cross platform applications.
What do you all think ? Is the observation correct ? How do we make .Net hip and of interest to the next generation of programmers ?