This is a mini-blog. I'm working to find a compromise between a tweet and a lengthy essay. I find it difficult to complete longer documents because of an obsession with perfection. So this little experiment is to see if I can create a blog of mini articles. Herein I will talk about many technical things generally related to software development and Agile practices.

07 July 2017

Tools should be fast

So a little while back I was talking about the speed of your test suite. That is really important. But your tools should be fast too. I recall a presentation at Codemash by Gary Bernhardt where he talked about tool speed and his dev environment. Then today I recall waiting several times for tools. Starting up an IDE, or opening a new project, and it takes 20 seconds or more.How much time do we waste each day starting up our environments, or waiting for a CI job because the server is roughly the equivalent of a toaster? Too much time is wasted waiting on tools!I think it is really important to make sure we have the most powerful tools and equipment at our disposal. I typically buy the fastest machine I possibly can (although I'm still waiting for a real improvement from Apple). Still, don't go cheap on the hardware. To follow that up though, the tools need to be fast.How fast?You should be able to open a repo in 10 seconds. You should be able to start a Docker container in under 10 seconds. A VM should take less than 10 seconds to start. It should all take less than 10 seconds. And we should be able to do all these things simultaneously in 10 seconds or less. Why?Well for one, we're simply wasting time. But second, it is too easy to get distracted we are waiting for things to happen. I don't know how many times I've gotten bored waiting for an IDE to start and gone off to read my email or check a server status while I wait. That sounds like I'm being efficient, but really I'm being distracted. So, don't go cheap on the hardware and look for tools that are fast. If your tools aren't fast, complain, loudly, to the manufacturer.