A close friend recently said to me:

I'm Copying You Since You're So Effective

with respect to how much I tend to get done and I thought I'd elaborate on this a bit since I suspect that why I'm effective isn't always apparent. These aren't really in any order other than the order that I chose to finish them. I suspect they are all pretty important.

Ten Reasons Why I Think I'm Effective

  1. Get Rid Of Anything That Pisses You Off. To the outside world, I'm a pretty chill person. I try very, very hard to never lose my cool and there's a reason for that – I have a bad temper. One of the things I learned early on about myself is that getting upset ruins my productivity. And so what I do is when I find that something pisses me off, I get rid of it – by fixing it. See my upcoming post on Url Soup for an example.
  2. Time is The Only Thing You Have So Do the Math on Everything. I'm a father, a husband and a technologist and I started my first company when I was 19 – and I've pretty much been busy since I was 19. This has always made me very, very aware of just how valuable anyone's time is. I don't waste my time and I hate, hate, hate anything that wastes my time. Just as an example, I used to loathe configuring new laptops. Setting up a new laptop, for a developer, is generally about a week long endeavor until I (or any developer I've ever watched) is really comfortable with it. If you assume that a laptop lasts a developer 3 years and you have 30 years left in your career, that's 10 weeks of your life. Once I did that math then I realized that my figuring out how to configure a laptop quickly and easily was seriously worthwhile and I did (and then I open sourced an example).
  3. Find People Smarter than You – And Copy Them. I'd love to tell you that it was my idea for how to configure a laptop automatically but it wasn't. I stole this, shamelessly, from Jeff Geerling; but I did (and do) credit him. One thing I learned early on is that when you don't know what you are doing, finding people smarter than you in an area and copying / learning from them is wise. I did this with Jim Kearny when I bought my first cell phone, I did this with Wolfram Arnold when I needed to learn TDD, I did this with Matt Mullenweg when I needed to learn logical isolation and SAAS apps and so on.
  4. Messy Beats Perfect Every Damn Time. I write a lot of code and I'll confess something – my code is messy. I fail at coding in all kinds of ways; my Cyclomatic complexity is too high, I use double quoted strings when single quoted are more efficient, I have too much conditional logic and so on. And, in my opinion, that's ok because code is organic and it gets better over time – if it needs to get better. A lot of code doesn't need to get better because most projects, even mine, simply won't succeed. And if it isn't going to succeed then why make it perfect?
  5. Be a Boy Scout. I doubt it will surprise people that not only was a I a Boy Scout but I was actually an Eagle Scout (and then I discovered girls and, well …). One of the best things that scouting taught me was "leave your campsite better than you found it" and I've been doing that metaphorically ever since. My perspective on coding is often pretty simple – I try to leave things better than I found them. So, yes, I'm going to write messy code (see above) but I'm also going to make it better when I pass back through it.
  6. Minimize Discouragement. When doing anything, but particularly when you are starting something new, always try and minimize your discouragement. There is nothing worse then putting a ton of effort into something and then, at the very end, realizing that you can't make it work. As an example, I hooked a friend up recently with my Macbook Ansible configuration repository that installs software on your machine and their first reaction was "Well I don't need all this so I need to customize it". My response was "Nope! Find one thing it installs that you actually need and comment everything else out. Then run it and see if it works at all". It doesn't matter what you do with computers, making one thing work is always easier than N things. This approach gives you a small win which you can then use to encourage yourself to get another win. I got into the habit of this when I became a remote worker and I was always alone. When you are always alone, you need to get in the habit of getting yourself wins and managing your own encouragement because there aren't co workers around to help with this.
  7. Do it the Same Way Personally and Professionally. This was a very, very hard one for me to master. What I've found is that if I do something one way professionally then, well, you do it the same way personally. A good example of that are software development practices with respect to git. My last boss was an absolute perfectionist regarding branch driven development (you always develop in a branch; branches get merged to develop and then develop gets merged to master which then gets deployed). And I've taken that model to heart and now I use it for all my side projects – and I've never been happier.
  8. Make Anything You Do Regularly Easier. I am a huge believer that if you do anything regularly (and I define regularly as 3 times or more in a short span of time) then you figure out how to make it easier – and you do that. When you don't make things easier, you either waste time or you end up getting pissed off (see #1 above for how that affects me). When you work with computers, most things can be made easier, even something as relationally complex as "Do I Buy My Wife Flowers This Week?".
  9. Tools Matter; Learn Them Well. I grew up in a hardware store and my favorite department was the tool aisle. I grew to know the differences between an Estwing hammer and a True Value hammer and why an SK set of sockets was better than Master Mechanic. When I moved over to computer work, I took that same love of tools with me.I've now been using the same editor since 2006; the same language since 2006. I honestly don't think it really matters what tools you use but it does matter that you learn them well. Steven Jobs used to call computes a bicycle for the mind. Well if you're a software person, learning your tools well gives you a motorcycle for the brain.
  10. Write It Down If You'll Ever Need It Again. If you've watched my voluminous output, you've started to realize that I'll write about anything. And the reason for that is that writing things down helps me. I'm an IT professional that deals with large scale, complex systems. When I learn something, invariably, I'm going to need to do it again. If I take the time to write it down then not only have I documented it at least fairly well but I've also taken the time to really learn it.

Note: If I have a favorite one of all of these, it is the last one, write it down. That has likely been the single most profound change in making me effective. And I learned that from Dave Winer; Thanks Dave.