Reflections on a Quarter Century
This post is neither about Facebook applications nor Testing, but rather something of a more personal nature.
Today marks the day when I would have been inducted into the IBM Quarter Century Club had I stuck it out in IBM all of these years, and I would have earned the right to put this cool logo on my business cards. But the truth is, I left back in 1996 to join a small startup where I learned that I’d be much happier as a small fish in a small pond rather than a small fish in a big pond. Twenty five years is a long time, and I learned a few things along the way:
- IBM was a great place to start out.
- I got to work with some really great people, and learned about developing software professionally in a great environment, something that they don’t (and really can’t) teach you in school. IBM allowed me to work on lots of different and interesting projects, paid for my Master’s degree, moved me halfway across the world, and actually paid me a salary the whole time.
- Leaving IBM was a good idea.
- Towards the end of my tenure at IBM, the company wasn’t doing so well, so to turn things around management created this mass hysteria known as Market Driven Quality (MDQ). We were told that it “wouldn’t be one of those Quality programs where you get a coffee mug, and that’s the end of it”. Big mistake. It shouldn’t have existed past the coffee mug stage, but it ruled our lives for a few years. You don’t hear about it anymore, and there’s not even much on the Internet about MDQ, but an interesting description can be found here. One thing it did do was to start to convince me that IBM may not be the place for me. Fortunately, after John Akers was removed as CEO, much of this nonsense was gone and the company really did recover. Except …. without me.
- It used to be really hard to bring new ideas into IBM.
- Back in 1992 I worked on an IBM product called BookManager, an early attempt at softcopy books (think Adobe Reader, but a lot less sexy). It looked terrible, but had a very sophisticated automatic indexing and search facility so you could search through large stacks of IBM manuals. A friend of mine and I wrote a proposal to apply this indexing/search technology to the nascent Internet, so you could search for information there (although we weren’t sure why anyone would want to do this …). This is pre-Google, pre-Yahoo, pre-Mosaic! The management we spoke with asked compelling questions such as “What IBM platform does this ‘Internet’ run on – MVS, VM, or OS/2?”. That was the end of that, although I did read somewhere that those Yahoo and Google guys did fairly well for themselves with “Internet search”.
- There’s always something new to learn.
- Over the past 25 years, I can’t even recall the number of languages, operating systems, scripting languages, IDEs, development tools, and protocols I’ve had to learn and have since forgotten. But that’s good as it keeps you fresh. Last week I learned Jersey, a cool system for writing RESTful Web services in Java. But I still refuse to learn Rails.
- Being a software developer is a cool thing to do.
- I’ve been able to do it professionally in three different countries. I’ve started my own company. I get to work on something I like doing, and feel like I’m making a contribution to the world. I even wrote a compiler despite the fact that I refused to take Compiler Theory in university because I thought “How many compilers does the world really need anyway?”.
- We’ve come a long way.
- My first job in IBM was working on this monstrosity for the US Air Force with hundreds of other developers. The team I worked with was involved with something called “packet switching”, kind of cutting edge back then but so ubiquitous today that you never even hear the term used. Sort of like turning on the tap and having clean water semi-miraculously pouring out, packet switching does the same with bytes. The fact that it’s so invisible and pervasive reminds me of how far we’ve come.
I have loads more stories to tell, but also lots of real work to do, so I better get on that. Let’s hope that the next 25 years is as good as the first.












A short time ago, a company that we’re doing some work with asked us to sign a Non-Disclosure Agreement (NDA). Things like this are fairly common, and I had no qualms about signing it or keeping things confidential. The truth is, we really do take these things seriously when we’re asked to sign. We even have our own NDA that we’ve asked others to sign in the past, but not recently. I started to think about why that was and I realized that NDAs do have their function and place, but in this Social Media-ized environment an NDA seems so dated. I was thinking about why that was and realized that what we really needed and wanted was a, well …











Facebook has recently made some significant changes to the Platform, and in doing so has deprecated some functions from the API. Deprecation is a developer’s way of getting a do-over. A way to create something better than what’s there currently. However, if developers have applications that depend on those APIs, you can’t just yank them away. You need to to give some warning first, perhaps a transitional grace period, and then you can yank them away. Since the Facebook Platform is so volatile, it’s worth thinking about how to protect your applications in such an environment, and what we should be testing for.











