For the better part of the past decade I have been a programmer for every type of company under the sun, but there’s nothing I’ve loved so much as working for myself as a freelancer. Being a freelance developer is equal parts amazing and exhausting. It is all risk and all reward. No boss to protect you when things go badly, but if you are good at your job, you have the freedom and flexibility to work how, when, and where you want.
I love it.
Ask any freelancer, though, and they’ll tell you that the worst part about freelancing is the stuff you can’t bill for. Accounting, business management, and marketing are all pretty common time-sucks, but as a developer there is a whole extra set of issues that can be tedious to manage: project repositories, documentation, development and staging environments… The list goes on and on.
Don’t get me wrong, some freelancers charge for things like documentation and staging environments, but I personally feel that those are necessities. When you buy a car, the last thing you want to see is a $50 surcharge for the owner’s manual. But just because I don’t charge for something doesn’t mean that I want to spend all my time dealing with it. Managing staging environments and deployments for half a dozen projects at the same time is overwhelming.
In a typical organization, development teams only have to deal with one or two projects at a time, but as a freelancer you can be faced with dozens of projects at any given moment. This rules out both commercial deployment platforms that charge on a per-project basis, as well as custom deployment scripts that grow in complexity with every new project.
Introducing Wercker
The Wercker Dashboard
As my portfolio has grown, finding a solution to this problem has become a critical need. I was spending more time dealing with multiple deployment workflows than was worth it, so I hit Google and sampled every solution I found, unsatisfied at every step until I discovered an amazing product called Wercker.
Wercker is, in their own words, “a continuous delivery platform focusing on changing the way developers build and deploy their applications.”
That description couldn’t be more on the nose. And did I mention it’s free?
It’s been about a month since I’ve started using Wercker, and it has completely changed the way I manage my freelance projects. While the learning curve for setting up deployments was a little steep at first (the documentation could be a little more up-to-date), I now have the workflow down, and Wercker has empowered me to quickly and efficiently test, build, and deploy new code to staging sites in a matter of minutes (or less, in the instances where automated deployment is appropriate).
Now, don’t get me wrong, Wercker isn’t the end-all-be-all. As a freelancer, I am often at the mercy of my clients’ technology requirements. Some of my clients, for example, already have preferred deployment workflows. This is what you sign up for when you decide to become a hired gun, but just because they have a process in place doesn’t mean I have to use it directly.
The Perfect Dashboard
The Perfect Dashboard
Wercker’s deployment functionality is incredibly flexible (thus the steep learning curve mentioned earlier). Unlike other platforms, where you plug in the deployment path and build commands, Wercker requires you to manually configure your deployment workflow. From setting up authentication to actually uploading files, you are in complete control. Wercker simply provides a platform and and interface to manage it all.
The true beauty of this type of system is that it means I can trigger deployments on any other platform! If a client prefers to use Beanstalk or DeployBot, I can configure the Wercker deploy script to simply make an API call in lieu of a regular deploy script. I now have much more than a continuous integration tool —I have a true multi-platform deployment management dashboard. It is incredible.
Now all I have to do is find a way to reconcile the 15 different project management apps I have to log into on a daily basis…