Two years ago this week, I started working at 37signals. I couldn’t make a web app to find my way out of a paper bag.
When I started working here, my technical skills were in tools like Excel, R, and Matlab, and I could muddle my way through SQL queries. I had the basic technical skills that are needed to do analytics for a company like 37signals: just enough to acquire, clean, and analyze data from a variety of common sources.
At the time I started here, I knew what Ruby and Rails were, but had absolutely no experience with them – I couldn’t tell Ruby from Python or Fortran. I’d never heard of git, Capistrano, Redis, or Chef, and even once I figured out what they were I didn’t think I’d ever use them – those were the tools of “makers”, and I wasn’t a maker, I was an analyst.
I was wrong.
Six or seven weeks after I started, I made my first git commit: “Add Clicky tracking to Basecamp marketing site”. All I’d done was figure out how to clone the marketing site repository, search for the existing Google Analytics snippet, and copy-paste the Clicky tracking snippet.
In March or April of last year I built my first “web app” for 37signals. It was a single page dashboard on our support caseload, and since I didn’t know any Ruby or Rails, I did it with R.
When one of our system administrators mentioned that he had some ideas for integrating various third party data sources into a single dashboard, we started working on a Rails dashboard that we use to this day. Twenty months and more than 3,000 commits later, more than half of the company accesses “dash” every day and it has its own iOS app. I’ve written client and server-side instrumentation frameworks, released an open source timeseries data storage system, and deployed a Hadoop cluster with Chef.
By no means am I an especially good developer: my code isn’t always idiomatic, and I still get someone to review anything of substance in our customer facing applications. Still, I’m able to do things I never would have dreamed of when I left management consulting just over two years ago.
No romance here
I learned to work with these “maker” tools, but not because I had the intrinsic, almost romantic, desire to create things that drives many people. Rather, two more pedestrian concerns led me down this path:
- It was faster. I work with some great developers, but they’re busy – we have millions of users to support and new products and features constantly under development. Rather than waiting for a developer to have time to help me, I could just do it myself. Business intelligence is about much more than statistics or machine learning – there’s a full “stack” involved from data acquisition to storage to reporting to testing. If I couldn’t do that, someone else would have to, and being part of a small company places a constraint on how much can be devoted to things that aren’t directly customer facing.
- Creation is the language that’s spoken most at 37signals, and people here engage with something that you’ve made differently than something that you’ve written or presented. Before I could actually make things, I felt like an outsider – who was I to provide advice to these people who actually made things? I suspect every former consultant experiences this “outsider” feeling at some point; for me, learning to make things was the critical step to feeling like I was really a part of 37signals.
It all starts with a step
I didn’t learn to make things because someone told me to or it was a job requirement. I could have done a credible job of what I was hired to do without ever delving into reporting or instrumentation myself, but I decided that I could do a better job and help the company more by learning to do some new things that I’d never imagined doing.
Learning to make things doesn’t have to be a big or intimidating undertaking – it all starts with a step. In my case that first step was adding something I copy and pasted from a vendor’s website. What will your first step be?