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…

  1. 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.
  2. 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.
  3. 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!)
  4. 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.
  5. 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).

About this entry