1970s At university, I studied Physics and:
- Computer Science
but it had very little to do with computers. It was far more about becoming a
- Computer Programmer
1980s When I started work I heard about the increasing formalisation of the software development process and I wanted to be a
- Software Engineer
1990s I’d moved into server management by the time I qualified as a
- Chartered Information Systems Engineer
which fit in with my thinking that information is the important resource in any organisation but took me no closer to knowing how to make great software efficiently. I became disillusioned by watching people trying to apply the rigorous methods of hard engineering to the uncertainties and unknown complexities of software. I became interested in prototyping, incremental delivery and Agile.
2000s I was increasingly drawn to the idea that constructing software is a design discipline and that a software developer needed to be a
- Software Craftsman
2010s After a few years working with an agile software team, I decided I wanted to try writing software again myself. A few weeks ago, an online MIT course on Python programming introduced me to an idea that I felt very comfortable with: a good developer is a
- Computational Scientist (I’d settle for ‘Computing Scientist’)
and I’d add the option
- Informatician, which overlaps with what librarians do now
Agile development processes are adaptations of the scientific method, to research what customers want and work out how to give it to them in the way that meets their opinion of best value, and I don’t see why software developers can’t be their own customer. Every great new software component starts off as someone’s experiment.