This is a series of posts about how software development and programmers have become increasingly reliant on developer communities like Stack Overflow and search engines to help them develop and ship code. We think this is a fundamental shift in the nature of software development that has wide ranging implications, but first a little story.
- Part 1 - A Story
- Part 2 - Diagnosing SAP
- Part 3 - How Many Programmers are SAPs
- Part 4 - Causes & Effects of SAP
- Part 5 - Refactoring the Programmer
Part 1 – A Story
One day about 2 years ago while working at my previous company, in the middle of a heavy development cycle, I and my entire development team lost our internet connection for about a day. That morning as a project manager getting into work and finding no external network connection I quickly did a run-through of my mental checklist of “Things We Need to Ship Code” ©.
- Are my source code repositories locally hosted (Check)
- Bug and task tracking database locally hosted (Check)
- Test & Development environment on local network (Check)
- No external dependencies on license servers or other stupid stuff (Check)
- Production servers hosted offsite with redundant net connections (Check)
I began to congratulate myself, my decision to resist the lure of hosting my code repos and bug tracking database online and to eat the maintenance cost of self-hosting had finally paid off. Here was the perfect argument for self-hosting, the network goes down but you can still be productive and write code as if nothing had happened.
But as with all good stories there is a twist. This isn’t the story about the fragility of networks or the dangers of trusting mission critical resources to external service providers. No, this is the story of how I learned that my mental checklist of “Things We Need to Ship Code”© was missing something very important, something without which myself and my programmers could no longer effectively do our jobs.
But I am getting ahead of myself, back to the story. After congratulating myself on my cleverness and talking with the team to confirm my cleverness and devise a plan for the day we sat down, pulled up our issues on the bug tracker and set to work. Everything seemed to be going along fine, I actually thought the lack of email etc for the day might be a bit of a productivity boost. But as the day progressed I started to notice that I felt… slower…. everything was just that little bit more difficult and bugs or features which I knew should have only taken a few minutes, were taking much longer than I anticipated. The reason quickly became clear, every time I ran into an unfamiliar error or needed to look up the name of an infrequently used class or method, my first instinct was to reach for my friendly search engine. But there was no internet and no search engine and I was less productive as a result.
Things I knew I could solve in seconds with a quick query were taking what seemed like forever. I had to use a debugger to debug stuff that I knew millions of other developers had already debugged, found the solution and posted to the web. It felt like I was coding with a blindfold, wasting time, reinventing or re-debugging things which I wouldn’t have had to if I could just run a quick search.
It was when I pulled out my phone to search for an exception on a miserable GPRS connection that I knew I had a problem, I had contracted SAP - Search Addicted Programmer. I was an addict and I knew it, but looking around I could see that same frustration and craving etched on the faces of my fellow addicts.
We were all SAPs (I'm sorry I couldn't resist that one)
In my next post, I attempt to quantify how addicted to search I and my team had become.