- It’s just not cricket
- Best laid plans
- Apropos of nothing
- Couldn’t put it down
- Forward planning
- The back of the bus…
- Lee Evans
- Pronounce this
- Holiday
- Bygone days
24
Aug
Best laid plans
Tuesday, 24th August, 2010
I enjoy developing software. I’ve often said that if I could just be locked away in a room writing code, without having to answer phone calls and deal with all the normal day-to-day stuff my job entails, I’d be very happy.
Mostly I’m self-taught, but I have had some formal training (OU) in Java programming, and on software development techniques in general. All good stuff, and I’m sure well intentioned and structured, but how relative is it to real life situations?
My last OU course was on software development, from the ‘software analyst’ stage (trying to get a comprehensive idea of what features and functions the software should contain) right through to unit testing and maintenance. In an ideal world, yes, it would be great to sit down with the ‘end user’ of the software you’re about to write, and have a clear and very structured document that says exactly what the software should achieve and exactly how it should achieve it.
It would be good then to get into the cycle of developing this software, based on modelling and testing, presenting to the ‘client’, taking feedback, developing further, testing…etc. I know how to write class descriptions that are very clear and that have very definitive functions. I understand how to create loosely coupled software with high cohesion. I get all that. I passed exams in it.
In the real world though, the time to sit down and create these plans is a luxury that is sadly lacking. I’ve been working on a project for a few weeks, writing a software package for my company to solve a specific problem, and ultimately save some money (always a good thing for a company!) I would have loved to go through the techniques I’ve been taught to develop this software, but instead, I’ve been writing it as I go along. None of the classes have been particularly well thought out, the coupling is horrendously high, and none of it will be particularly reusable. I have two A4 notepads (one at home, one in the office) that have pages of notes on how I expect the software to function; on how I expect the classes to interact. As I write the code, new ideas for functionality or features occur to me, and I have to adapt previously written code to allow these to exist.
In short, despite my knowledge, training and experience, ultimately sometimes you just have to ‘get on with it’ and be prepared to make decisions and re-do things that you thought you’d already finished, just to get the job done.
All of that said, I’m enjoying this project, it’ll be good when I get the software out there onto some PCs to get some beta testing done, and get some feedback from the users.
Then comes the bug fixing and maintenance…