Wednesday, July 9

Hitting Developer Traction

I finally feel that I've found some kind of "developer traction", that state of mind in a project where you know where you want to be and so can more easily code toward it. You see, good code mostly writes itself as the demands of a system become more clear and defined - formally we're even taught to write code from a pre-considered and thought out design. In practice however, time and interest usually makes us jump the gun a bit code blindly.

The start of a project when everything is so abstract and fuzzy in your head can be a hard time, especially for someone like me who needs all the answers to all possible questions before he sets out on a task. Those that know me will see this overbearing delay in getting anything started as one of my general characteristics/flaws and perhaps I need to get over this fear of making mistakes, trying things multiple times or throwing away first goes. Perhaps two steps back is sometimes the fastest way to move one step forward?

At this point I reckon I've spent way too much time on planning things, both technical and business-wise. I'm sure this planning was useful, particularly the technical specifications and designs I created, but even with those I've had to change as I code quite a bit as the process of development forced me to consider situations I never would have at a theoretical level.

Getting on with things also, perhaps obviously, helps with progression itself. For example I was struggling to think of what access procs I'd need for an API I had yet to write - I mean how can you possibly figure out what functionality a client would need? Well it is possible, just a bit difficult, especially when working alone. The answer is to write a client yourself and and create an API "on demand", that is to work on the hierarchy vertically rather than horizontally. What usually happens is that a single high level requirement sparks off the creation of a library that would be useful for other higher level requirements. From now on I'm going to try to keep as high level as possible when describing goals and targets, and leave the details to be determined practically. I wonder how long I'll last?

Anyway, since I'm not worrying about progress as much as I was before (I'm even playing MGS4 while working!), I can start talking a bit about what I've found so far. I can already sense the eyes glazing over for the majority of you and I apologise in advance for that. But I think it'll be helpful for me to put it all down (as well as the two other people who actually read and enjoy my computing posts), and I'll try to make them vaguely interesting to read if I can.