I want to talk about outsourcing. No, not that kind of outsourcing.
More on a personal level.
As developers we have a number of skills that allow us to take on and adapt to many different tasks in life. For example, I am pretty handy with general home improvement tasks around my house. Usually, when a mechanical or electronic device that I own is acting up, I attempt to fix them rather than taking them to a professional.
I try to take on pretty much any task that may come my way. This means sometimes I take on things that others devote their careers to mastering and doing daily. I study up as much as possible, fancying myself slowly becoming an expert at these tasks.
Why do I do this? Because, as Developers we often have skills that allow us to troubleshoot, solve puzzles, and it is something that we do every single day. In addition, as developers we dedicate a significant portion of our working life to learning new things, and becoming experts in new tools, languages, and techniques. As it turns out, the very same skills allow us to also easily learn other new things. To puzzle out how plumbing is done, or how proper lawncare is performed.
The end result however, can be that we try to take on the entire world of tasks, many of which we are not yet skilled at, and a majority that we have no desire to become so.
I asked myself this question while I was on my hands and knees on my kitchen floor a week or two ago, desperately trying to level out a floor that could pass as an amusement ride in most theme parks. You see, I decided a while back that installing hardwood floors was both something I could, and wanted to do myself. A task that, mind you, has been "In Progress" for nearly six months (And don't even ask me how long the overall kitchen project has taken).
So I asked myself, did make good decisions here? I had managed to spend over a week on my hands and knees doing work that I was neither particularly good at, nor that I enjoyed. And if I were to look at the very real cost to me, both in terms of happiness, and in terms of time from my life, it likely would look like a pretty poor decision.
I had failed at doing a real, honest, accurate cost-benefit analysis on the project, something I think happens to us altogether too often. Not that I generally embrace being overly business-driven in my personal life, but this particular concept has very real merit, and can be easily applied.
We often focus on the real monetary aspect and forget those more difficult to quantitate aspects like overall happiness, lost opportunity cost for side projects or hobbies, and time with your family. All of these inputs, if ignored, can lead to poor decisions.
Had I done such a cost-benefit analysis, I am fairly certain that it would pretty clearly point out how foolish the decision was to have me be on my hands and knees sanding, and applying concrete for over a week.
As mentioned, quite well, by Scott Hanselman Sometimes you need to say No when people ask you to do things, both professionally and personally. My point today is that sometimes you also need to say, I'm outsourcing this part of my life.
This applies not only to your personal life, but also to the professional life as well. Taking on career tasks that you may have the capability to do, but not the time, is just as destructive. As an Architect at work, I frequently have the leeway to either take on a task myself, or to ask someone else to do it. And, often, I take on the task because that is my default answer. I am a doer.
The reality is, however, I am really good at a set of tasks. I am ok at others, and some I stink at. I need to ask myself, how does performing this task benefit me long term? Could I give this task to someone else who is good at this? Someone who could finish it in much less time, and actually benefit from the experience because it is something they excel at or want to excel at?
We all only have a limited number of hours on this earth, and to waste that limited time doing things we are not good at, and have no desire to learn, is both foolish, and poor time management. We can't do everything, we don't have the time. So focus on the ones that better you, that gain you skills you want, and that are worth doing yourself. Start being honest with your cost benefit analyses.
I am working on it each day. Just the other day I hired someone to mow my lawn. Baby Steps.