Software built by Tools
When I decided to leave my last job one of the guys I worked with took the initiative to sit down with our current managers (yeah multiple) and try to get the ball rolling on finding a replacement so they wouldn't be done a man for a lengthy period of time. When he came out of the meeting, he came over to my desk and said "We're replacing you with tools, not people"... to which we then came up with "Software built by Tools". I was reminded of this earlier this week when I was interviewing for a developer position - pretty standard .NET developer. I find interviews work best as conversations, let people talk about what they have done, what they are proud of and squeeze in some questions in between. This interview, sadly, did not go so well, but throughout the interview, the prospective candidate kept saying "we have tools for that" or "we use tools".
This scares me.
Don't get me wrong, tools, good tools, can help you make the mundane go faster, it can save you time and let you focus on the real features that your users care about (not the database CRUD, or Business Objects, or Interface libraries). What scares me is when people become so complacent with these tools that they stop looking at what is being done, they stop digging into the mechanics of the tool and stop trying to understand what the code is doing. And then the worst scenario happens... a bug... how do we fix it, how do we recover, I've never had to code this.
Deer in the headlights.
I push the people on
my team to dig into every piece of code they work on, if it is a third-party library make sure you know how it works and what it does, how to fix it and understand what benefits it brings you. If the benefits are marginal then it is probably not worth the maintenance. When we have an issue with a piece of code, there is no separation between our knowledge of the app and the tool that might be doing some piece because we understand it all. Perhaps it is my nature, but I find it very scary being responsible for something that I don't have an inkling what it does. Not too mention, the last thing I want to hear is "we can't do this really awesome feature because of this pile of junk tool we're using".
I laugh at this blog title, but I know it exists in real life somewhere. Software is built by People - from developer to product manager to tester - you can't replace that, because that is what makes really good software.