How Freelancers Save Time on Releases Using Deployment Tools
Life as a self-employed developer can be great fun – sometimes it’s the perfect job with interesting projects, working from home or coding in a nice little (beach) café. Other times it can be challenging, especially when working on a larger project or developing software for more than one customer.
Being a freelance developer has a lot of benefits. For example, you have flexible working hours and don't need to commute to work. Also, you get to choose your own projects and customers, and of course, you can pick your favorite programming language. Most freelancers appreciate the freedom of choice when it comes to their work environment: There is no need to sit in a cube or work in a noisy office – code where you like and where you feel creative.
Jack of all Trades
Of course, let's not forget about the drawbacks: Apart from not having a secure salary or paid vacation, a lot of freelancers struggle with the different roles and jobs. As a freelancer you're not just a developer, you're also a salesman and responsible for your own marketing, you can be a software architect, a technical writer, and occasionally the support hotline for your customers.
My friend Chris, a freelance Python developer (check out his GitHub repo), recently told me that some clients expect him to be the sysadmin as well as the developer. While he is happy to look after his own Linux servers, he prefers not to install several different operating systems, compiler, or Python versions. On the other hand – it’s vital that you test your software before you release it.
Most freelancers neither have the time nor the resources to manage various testing and production environments. Also, and according to Chris, this is even worse: Once you leave your developer’s mindset to look after a server or install a new test machine, it takes a certain amount of time to get back to coding and being productive.
Test, Deploy, Publish!
So, it’s important to run thorough tests to make sure the software works on many different systems and not only on the local machine. A tool like DeployBot can supply you with the right infrastructure and connect your Git repositories (GitHub, Bitbucket, GitLab, self-hosted) to one or more hosting accounts. i.e. your own server, a web service (DigitalOcean, Heroku, Shopify, AWS, etc.) or a Docker container. By default, DeployBot comes with its own Docker containers, but it's quite easy to create your own containers based on Docker Hub.
A deployment tool also helps to set up a consistent process for shipping your code. It’s a good idea to develop a certain release routine to avoid mistakes. Apart from that, automation can improve your workflow. With DeployBot you can group your servers and execute multiple deployments to multiple machines and locations at the same time. Also, you can deploy different parts of the repository to different locations. DeployBot can deploy every repository commit (automatic deployment), or a deployment can be initiated manually. So, for testing/staging environments you could set it to automatic, and deploy manually in your production environment to stay on the safe side.
Last, but not least, you should inform fellow developers and your clients about the progress you’re making. Of course, you could send out emails – it’s much easier, though, if your deployment tool can send out automatic notifications. DeployBot can help you to improve the communication, release more often, and save time. A nice side effect: You can see who deployed what and when, so the documentation of the deployment is included. Happy coding – wherever you are or will go!