From time immemorial I’ve had a Swiss army knife in my pocket. My best friend introduced me to this during my engineering days and ever since this Swiss knife MiniChamp has gone on to be an integral part of my life. This Swiss army knife has gone on to fix laptops, fans, a mini surgery to remove coconut husk fiber from the toe to all the way from hitchhiking in Europe, the south East Asia and my daily routines. I had this tool in my pocket for over a decade and had to part this only once when I inadvertently took it to the airport check-in. To me this tool is like wearing a suit. It empowers.
We humans are characterized for our ability to build and use tools to make us efficient. Its that one defining character that terms us “intelligent”. It’s that trait that separated us from the evolving family. We started using flints, stone, levers and sticks all the way to mixers, washing machines, cars, elevators and airplanes to make our lives better. For the vast majority of us we don’t know how life is so simple with the tools that make it implicit and invisibly defining.
Build tools. Builds tools to replace yourself
During my Zynga life when the company was scaling we were constantly pulling all-nighters to keep the games up and running while dealing with variable peak loads. It was evident to my director Manoj Sharma this wasn’t going to be sustainable. Programmers are going to just burn out, he knew. And one day he made statement that had a profound impact. “Build tools. Builds tools to replace yourself”. He probably meant it as a passing statement but the thought grew on me. I’ve always had a hacker mindset and all of us hackers try to maintain DRY. But when I combined this with a tool building mindset I realized we could build an incredibly good hacker culture.
Till then it never struck me that tools should be built with a systematic, focussed and scientific approach (focussed with an emphasis). We have .bashrc files that define us. SSHing to 100 machines is 5 keystrokes for us.
But this is more about a systematic approach and company wide approach. Something that requires a mindset change top down.
At Cucumbertown, we push ourselves to builds tools to make this proactive.
Tools that start with a simple alert mechanics like :
- Informing admins about weird ingredients
- Informing the team about deployments that go to production
- Building toolkits on top of Jenkins to automate everything
- Referrer spike – an email alert tool that lets us know if we got slashdotted
- Search log tools that let us know of invalid search results
- Engineering is right now in the process of building a tool to create a stage subdomain whenever a new branch is pushed from git with a new DB and settings. Delete all the env and domain when the branch is deleted. From a git post commit hook.
Most of these are tools are part of every company/startup in some manifestation.
Building a tool culture isn’t easy. Especially when you are a startup.
- A tool is mostly useful when its 100% complete. Most of us tend to take it to the 80% level. At this level its not good enough for “others” to use.
- Tools are laborious to build. The time required to build a tool might not seem to be worth the end result. At least initially.
- The time that we all fight for.
- The most important is focus. If this is not directed to the solutions we need at that stage of the company, it’s easy to get distracted. For startups time is the most precious currency.
But despite the obstacles, building a tools culture has more benefits than you can possibly think!
- A tool culture immediately differentiates the hackers from the rest.
- Tools bring tremendous attachment to the product/team. The gratification of achievements in efficiency is beyond words.
- Tools set the stage for code reuse. Consequently for open sourcing them. If the stage is set right at the onset, a lot of the problems of encapsulation and project management become implicit.
- Opens source tools are the best evangelists. Think firebug.
- Tools help ramp up new hires. They contribute to it and the eco systems matures.
- A tool culture makes the company sexy. Dashboards, pagers, scripts.
- There is an element of serendipity. Phabricator, Urchin Analytics etc. ended up being companies.
To do this much like a company HR policy, tool building has to be integrated into the engineering manifesto.
- Tool building should be part of an employee’s Objectives and Key Responsibilities.
- Direct focus to ensure this aligns with the company’s strategy at that stage.
- Mechanics should be built to measure a tool’s efficiency but not at the cost of company productivity.
- Above all the founders have to believe.
I’ve realized that tools not only make us efficient but the incredible sense of gratification the author gets by improving an otherwise manual process is unparalleled. The same way I feel watching a Maker video.
Do you think its justified building a culture like this in early stages? What more can I do to get this into the DNA?
What are some awesome indispensable tools you have built?
Oh and btw, yesterday I fixed my teamie’s MacBook pro keyboard with the Swiss knife