So one of my friends has a really great idea. I’m not sure if it’s a profitable idea, but it’s something that needs to be made. And so I made them dinner and gave them an overview of potential technological issues, given that it’s something I know pretty well.
And I thought I’d recount the refrain I kept returning to…
Even if you are doing a ‘fun’ project that’s not your effort to make the next big startup… getting the DevOps and testing situation under control at the start is critically important. Perhaps even more important than if you are doing it as a day job, where it’s already critical to get the DevOps and testing situation under control.
Now, granted, I wish for my friend that their project does incredibly well. Because it’s a really great idea in ways, one that is head-and-shoulders above your average ‘non-technical founder looking for a technical founder to implement my great idea’ person’s plans. My friend is technical enough to not need a technical co-founder, just some advice and occasional help. But who knows what the future holds? It’s good enough of an idea that if it succeeds on a small-and-not-especially-profitable-scale that it really would be a success.
One of my realizations is that you can get away without unit tests or automation at a job for several years. It will eventually catch up with you. But because it occupies a significant amount of your time, there’s a lot of stuff that’s going to be in your short-term memory about it and you will be constantly reminding yourself about it.
Conversely, a ‘fun’ project may involve you needing to take a break from it. Thus, when you return to it, all of your working memory is gone. So you really critically need tests and automation and documentation so that you won’t need to reverse engineer code that, 6 months later, is very much alien to you.
Now, mind you, having worked places with super-solid DevOps, mediocre DevOps, and DevOps so unmaintained it’s got vines growing all over the place… the effort put in for DevOps is the sort of thing that you will look back even after a mere year of effort and thank yourself for doing. Like I said, it’s just the sort of thing you will eventually regret.
So, after we discussed the technological stack, we started talking about starting points. And so, before any actual code was written, we sat down on our respective computers setting things up with Vagrant and Chef and Git and so on. Yeah, it’s a bit of a drudge, although slightly less drudge-tastic with friends and curry and perverted devops jokes. But I know that if you put this sort of thing off for later… it will probably never happen.
It’s kinda sweet, actually. Instead of using hosted Chef, I just made a quickie chef-solo setup that gets checked into Git, vagrant, and then some cute little shell scripts that will spin up and install chef-solo and the source tree on a cloud server, which pretty much mimics the way we’ve got things working at work on a much much simpler scale. And it’s something that I’ve been meaning to do anyway. I’ll eventually have to distill the salient points of how it works into a blog article because the publicly available documentation completely skips out on how to make it work without requiring you to do a lot of digging.