November 9th, 2007
Since The Economist is publishing a special report on technology in India and China this week, I thought it was about time I wrote something on the subject. That way when I read the special report I can either congratulate myself on my deep insight or slag off the hacks for getting it so obviously wrong. Since I spent last year working in Bangalore and the best part of this year in Xi’an and Beijing, I think my credentials are as good as anyone’s. There’s nothing controversial here for people who are familiar with the Indian and Chinese markets, but anybody whose only source of news is the Northern press might find it interesting.
September 11th, 2007
When I became a manager, there were a bunch of things I knew I would have to get used to. Lots of time in Mingle, Excel and PowerPoint creating finger charts and project status reports, being responsible for the process of the team, spewing forth a welter of emails, learning to use the “follow up” flag on Notes, keeping a holiday calendar, kissing goodbye to Linux. However it turns out that I am also now a line manager – responsible for the well-being of the members of my team (thanks to my wife, Rani, for explaining to me what a line manager is). Since I believe that a happy team is a productive team, I thought I had better do some research on what makes a good line manager. Read the rest of this entry »
January 6th, 2007
I attended a talk today given by Sarah Bloomer, a usability design consultant with 20 years experience who has come to Bangalore to attend Easy7. She talked us through the anatomy of a typical three to six week engagement, which turned out to have a lot in common with how we start off projects at ThoughtWorks.
December 17th, 2006
I’ve learned some important things from my most recent project, a (rich) client – server application written in C# / .NET 2.0 that stores data in SQL server. Probably the most crucial thing is how important it is to get your service layer right. As described in a previous post, we initially sent domain objects over the wire, using what was basically RPC (the .NET WebService attribute). We fixed the problem of circular references in our graph by using a modified version of XStream. We then addressed the proliferation of web services by moving to a single web service which passed across a document-style message containing the names of the class and method to call (instantiated using introspection) and the object graph. The issue of updates from one screen not propagating to others was resolved by having a dictionary of all objects on the client side so that when an object was updated, it was visible to the other parts of the client. We fixed the poor performance of sending huge graphs across by using this dictionary as a cache. However the “services” are still very fine-grained RPC and basically useless to anyone else – although still a good solution for the problem they solve.
For one reason or another, software development over the years has taken inspiration from the construction industry, whether in the form of design patterns or the Gantt chart. Nevertheless, there are obvious differences such as the fact that suspension bridges cannot easily be refactored, and are hard to reboot when they crash.
June 19th, 2006
I’m currently working on a client-server application with a .NET 2.0 WinForms GUI. We’re using the standard WebMethod RPC stuff to bounce things back and forward between the server and client, with .NET taking care of serializing everything into XML and back again and NHibernate handling persistence. So in theory, the only work should be designing our domain and our forms, binding the domain objects to the forms, defining some services, writing some Hibernate mapping files, and the occasional bit of business logic when things get dull.
Read the rest of this entry »
May 5th, 2006
I was lucky enough to be asked to speak at Agile India 2006 on the deployment production line, so I popped along today to check out the opening talks. Craig Larman, Cheif Scientist at Valtech, gave an entertaining, well-researched talk on agile vs waterfall, covering the history of both and the evidence in favour of agile. For me, the most compelling argument he presented was the long list of historical figures who promoted agile practice. Read the rest of this entry »
April 25th, 2006
One of the “late-breaking features” of C# 2.0 was nullable types. They are supposed to make object-relational mapping easier, being effectively nullable primitives which behave more closely like the types in SQL. However I have just spent an hour debugging a problem which demonstrates very clearly how language features such as this simply make life more difficult for developers. Read the rest of this entry »