Over the past 6 months I’ve become acutely aware that a majority of corporate America must run so incredibly inefficiently. There are probably only a handful of companies that run smoothly, everything else suffers from split brain-esque issues. I knew this to be true prior to working in a company that suffers this, after all this is why I started a company of my own, I just didn’t realize the causes for it; I think now I do.
As your size increases you’re expected to master lots of different disciplines. For example software management, content screening, report creation, HR, QA, server hosting, the list goes on for a while. Purchasing these services is expensive, and unfortunately since people do not purchase them readily that market place hasn’t entered a race to the bottom – the only exception to this, in my fairly limited experience, is IT support, which usually amounts to backing up of data before reinstalling windows on the machine. Offering these services in bundles to companies is hard because of the level of bespoke business rules involved, you cannot apply QA tests A, M and X to all products from companies a, m and x.
Software Engineers, being people we are, try their damnedest to fix this. We have built things like Continuous Integration, Unit Testing, Test Driven Development, etc. These provide some concept of baseline which we operate upon, specialization being incorporated. System admins have automated update processes that they can employ from many linux vendors/distributions and MS, etc. You can outsource your HR (but it costs a ton). So there is work going on in this space.
So why is it so inefficient? Am I being ignorant to believe this problem should be solved by now? After all computers have already changed the face of our world indelibly and for the better. Perhaps this is the long tail of the problem?
I would assert that the problem is in fact due to the explosion of computing and the relatively attractive salaries it provides. I have a graph that I draw every so often when explaining why I think computing is going to hit an inflection point where the number of people required to perform our computing jobs drops below the number of people claiming to be able to perform our computing jobs. At that point offered salaries will decrease and the jobs will go to the people willing to ask for less.
The argument, in my mind, stands up because computing is becoming easier; Ruby exists – that simple fact means that my mother could probably throw together a website without too much thought (note: I mean a functional website versus a flat one), this is not a criticism of ruby, merely a statement that computing is becoming easier, we’re achieving a primary goal of making computers an extension of our lives.
However, the general dumbing down of computing means lower quality people enter the work force and as such for the specialized items that are not easy yet (QA, Reporting, HR, etc) are being handed to them. Hiring departments rarely know how to tell a talker from someone that can also walk it, so the signal:noise ratio is high. Net effect underqualified people get these jobs that need to go to specialists, productivity goes down; and it is only going to continue in that vein.
Now I just need a solution to this problem!
I think one of them, and the source of the title of this document, is to just do what you do and do it a lot and do it well. Find other ways to do the things you don’t do as a core competency – start outsource everything that you’re not good at. Embrace trust in other parties – let them be responsible for hiring and have a strict agenda by which they must abide – if bugs hit the real world – replace them with others. By creating that type of market we’ll, hopefully, end up in a utopian world where only the people that are good at what they do are doing what they should be doing!