In the software industry today, we have well defined roles. We have developers, testers, managers and technical support. The tech support role is less sought after and therefore doesn’t pay much (At least in India). The recruitment process for tech support is not stringent as it is for developers. People are expected to do repetitive tasks like analyzing server log and changing configuration files on production. Most developers think that production support is boring and are very weary of working in production support. So was I (and some others), when we were asked to work in ‘Development Production Support’. Because we had worked on the development team for quite some time, we had better insight into the code and were expected to help the tech support guys with problems in production which they couldn’t figure out. We were put out of our comfort zones and were doing stuff developers weren’t supposed to. After the initial lethargy, I started enjoying the work and learnt stuff I could never learn just by writing code. Server farms, deployment strategies, new user scenarios; you name it. But probably the best thing I ever learnt is that tech support is also a customer for a developer writing code. We had thousands of exceptions being logged into the server logs. Most of them weren’t even supposed to be logged. A lot of them didn’t even have enough information required for fixing the exception. In short, they were hardly exceptional (pun intended). All the arrogance in me was flushed out. What I thought was beautiful code with it’s entourage of unit tests, integration tests and end to end to end tests didn’t seem that beautiful anymore. My stint had taught me about production more than any ‘pure development’ role ever would.
We developers live in our dream world, where we think that perfect software design is Nirvana and perfect code is the path towards it. The truth however is different, we are selfish, we write code to satisfy our own fantasies. In reality we are paid to write code so that it makes life easier for other people (read make more money). Making more money means making the end user happy (so that he continues to use the app) and also spending less on production issues. Code is useful only when it’s in production. Developers come of age only when they take the red pill and see the real world. Sometimes I wonder how it feels to be a tester or project manager. Maybe next time, I’ll take another red pill.