Monday morning at our weekly breakfast meeting we were discussing what it would look like to do web development remotely for Pelago. We brainstormed a few ideas and came up with a pretty cool solution on how we would want to be setup if we had the opportunity to work offsite for a few days, months, or even years. This would be our plan of attack:
- Setup a laptop with a fresh install of Ubuntu Linux. (You could use Mac OSX as well, but then you have to shell out more cash) There are plenty of great IDEs you can install for doing the actual coding. Also, install the requisite development tools — PHP, MySQL, PostreSQL, Apache, Nginx, etc — and you have a fully portable dev environment, at least on the Linux side. See the next step for Windows and Mac.
- Virtualize. VirtualBox is a great Ubuntu app for virtualizing other environments. Install your Windows and Mac images and you are ready to virtualize any web browser on any OS for testing your work while you develop.
- Use versioning. We have a centralized subversion server that autoupdates our internal staging servers. Once you are finished cranking away on code and have it tested enough to submit, commit your code and the development servers at the office will do the rest.
- Centralize using web-based project management software. There has to be a great degree of communication between the remote worker and central command, primarily with the project manager. Using project management software that provides task/bug/issue tracking allows you to update the status of your assignments and notifies the project manager that your work is ready for testing.
- Use Skype and screen sharing for collaborative pair programming. There will be times when you just can’t figure out a development problem on your own, and your Instant Messenger isn’t the best medium to explain the situation. These are the times you need to get on the phone with a fellow developer and go through the code together. Many of our most difficult coding conundrums have been resolved within minutes by applying a second set of eyeballs.
- Find a quiet, remote place to work. We recommend somewhere tropical, the middle of the desert, or a nice mountainous locale. Afterall, the whole point of our brainstorming session was to find creative ways to get ourselves out of the office more often while still being able to get our work done.
- What about design?. Yeah, we do design too. But that problem is easily solved in one of two ways. You can install Photoshop on Ubuntu using Wine. Or install Photoshop on your virtualized copy of Windows or Mac. There is the Gimp as well. We just like doing code more than we like designing, so we mainly geeked out on tailoring Ubuntu to development meet our needs.