Every now and then as a software engineer you do something that leaves you feeling awesome. It’s rare though. I’d say there are maybe a couple of days a year I leave a client’s site thinking “That’s was something cool today”. Of those couple of days a year days even fewer ever manage to make you go “Yes! That’s why I do this job” – for me maybe once every couple of years.
One of the first times it happened to me was working for Hewlett-Packard. We had a massive piece of software that scanned a SCSI bus, determined which drives were connected to which libraries, built up a model of it all and then outputted it as an XML document. It was used by support to determine the status of a company’s SAN. The problem was that it required pre-requisites installed and ended up with a 20MB footprint on the user’s machine requiring a reboot after installation for something transitory to gather support data.
I was tasked with trying to create something much smaller and self-contained. Before I started at HP my C# knowledge was limited and most of my development had been in Perl for the last few years. This was going to need me to skill-up significantly.
Over the next week I determined the correct course of action was to use the Windows Driver Development Kit and to refresh my C knowledge. I also needed to learn to SCSI protocol to issue commands directly and parse the responses for particular types of hardware as well as the bus at large. A lot of the functions I required appeared to have no documentation – my biggest stumbler was trying to see which device I was sending a message to which turned out I needed to set a value in a structure that said “Do not set this value” in the documentation.
The long and short of it is that after a week of fun I’d come up with somewhat that was under 100KB compiled, hooked straight into the operating system at the lowest level so that no external libraries were required, was lightning fast and I’d also abstracted the code sufficiently that there were Linux and Windows versions available.
Of course the project got canned as this was the early 2000s at Hewlett-Packard, but it was such fun and it’s still one of the most enjoyable pieces of work I had. It involved a lot of low-level work, learning new protocols (I already strangely enjoyed network communications), refreshing my C knowledge and even digging around with Linux. Despite some giant and complex business-critical systems I’ve worked on since I think this particular piece remains one of my favourites for the gratification it gave me. It also happened to be the only piece of work that taxed me remotely in a year.
I decided to write this as I had a similar situation today with something I worked on. I’m going to write up a little bit about that tomorrow but it bought back a lot of memories of projects-past. It’s rare to get these moments but it’s things like this that remind me why I’ll always be a software engineer at heart and why I prefer the term software engineer to software developer.