Archive for June, 2011

How Not To Do Software Development

I’m not sure what to make of the following tweet from an ex-colleague of mine:

“Dear User – accept the fact that I only like making things work on a computer – making them look pretty? That’s a job for someone else.”

While at first glance it might look OK – this person really only wants to develop APIs and back end systems – I think it shows the wrong attitude, and highlights the dangerous ghettoisation that I see happening in software development.

Software development is all about good user experience, after all without users where would we be?

You have to consider how people are going to use your software. Even if you are writing an API someone is going to take it and use it to put something in front of a user. How that is presented to the user will have a huge bearing on what you need to develop. A lot of the time you can be sure that you’ll need methods to read and write data from and to a database. However, what if “making them look pretty” requires that you pull out a different set of data, or you need to pull out all the data associated with that user/transaction?

Taking this latter requirement as an example, this is going to have a requirement that you return a potentially large data set as quickly as possible, even in real-time. This will have a significant impact on your design, from the business logic right down to the actual database design.

Your code will “work” but it won’t meet the requirements.

As I mentioned above, it also demonstrates one aspect of the ghettoisation of software developers. You have web developers, iPhone developers, database designers, user interface designers, etc. and never shall they meet (except at the weekly project meeting). Why is this dangerous? Well, if nothing else it promotes an “us and them” attitude and a tendency to allow one group to blame another if things don’t work correctly.

© 2011, Chris. All rights reserved. If you republish this post can you please link back to the original post.

,

1 Comment