Early signs of creativity
I feel that 2010 will be a big year for me. As I am reflecting on the future, I am also watching junior developers in my team, and this has led to some reflections on some of my strengths as a software developer. I think one of the main ones is creativity. I think that one of the common traits of promising developers is that they develop applications to learn a new technology, and that the result is stunning. While I was thinking about my early steps in the profession, some 20 years ago, memories have popped up, one by one, of noticeable innovations I made in my first jobs. Here’s a list of some of the ones I remember…
- As the fourth hire in the technical support department of a then-fast growing European software development editor, and not knowing anything about the tools I was supposed to mentor customers on, I had to learn the tools fast! As I found the paper-based system to handle calls pretty… outdated, I started to develop a ticket-management system using the technologies I had to learn. The result was an application, called NS-Appel (Call), that came complete with easy ticket editing, knowledge base and a search engine. The whole team progressively adopted it, and it became the standard application for the next 4 years, while the department grew as the company’s customer base grew exponentially after that. The technical support team later attempted a long and painful rewrite to showcase the company’s latest object-oriented development tools, but (unfortunately?) the result never matched the reliability and performance of NS-Appel.
- At approximately the same time, I became interested in a new word-processing library and figured that I could use it to create complex reports, embedded in rich-text documents. I went on to develop a templating engine that would be the equivalent of forms and macros in a modern word processor.
- When I became a consultant on the company’s new Integrated Development Environment, I realized its lack of tooling. I developed a bunch of utilities that plugged into the IDE, and provided features such as a Google-like search engine that supported regular expressions and searched just about every artifact in the source control repository, and a source control log analyzer. These tools quickly spread among my peers, and up to customers (which created some problems when users started playing with the much too powerful global-replace feature!)
- Others started as customer requests, but very quickly and by far outgrew the original requirements. I developed an automated remote builder/deployer, something that I find still missing today in modern IDEs. Using FTP and RSH, the extension copied the generated, portable, C sources, from a developer’s PC to a target mainframe or *nix machine, and remotely triggered the incremental compilation and linking of the application. The whole process was monitored on the PC, with logs being displayed in real time.
- This is not counting the applications I developed while still a student or even (much) before that: a drawing tool with unlimited undo/redo and various games in Basic or Assembler. This included one I created a in a few hours, but played with for a few months, that I called Greta-Kill-Kill. It was dedicated to a Biology professor I developed a love-hate relationship with (unbeknownst to her, of course).