A few months ago I sold all my things except the things nobody wanted, I quit my apartment in Berlin and I bought a one-way ticket to the most interesting looking country from a list of cheap flights. I wanted not so much to travel but to get away for a bit and reset myself. Since then I've been to six countries so far and seen quite a lot of unexpected things .
The thing is, while I wanted to escape for a bit, I have been running my side project Landscape in my spare time for about 4 years now . It has grown in usage to the point where it requires constant maintenance, and I wasn't quite prepared to just walk away from it. So I had to marry the idea of travelling for freedom with also being ready to jump onto my computer to fix bugs and respond to emails.
I don't think I found the perfect balance, but here are the things I learned about how to both develop software and travel at the same time. Now I have to say that there are plenty of "digital nomads" who do this, people who work remotely, so there is certainly lots of advice that is good out there. My slight difference is that rather than working full time and moving around, I wanted to travel as if I were on holiday. So this is a slightly different post to those, but probably there's some overlap too.
I wanted to be in a different place every few days, which posed its own set of challenges.
Where to actually work
Step one is always to find a comfortable place to sit down and concentrate long enough to get something done. The thing is, even in your home city this can take a bit of time. There are quite a few criteria - good wifi? Power sockets? Somewhere they don't mind you sitting for hours and hours? There are even sites like Work From to help you figure this out.
I've now learned to thoroughly research hostels with spaces to sit and have good wifi before I pick one, rather than just going for the cheapest one closest to the bus depo, which was my initial plan.
Depending where you are, it's not likely to find somewhere with wifi and power, so minimising your requirements for both is a good idea. Kill the applications eating your power as much as possible, swich IDEA for vim if you have to...
Internet connectivity or lack thereof
It's amazing how tethered we are to a data connection these days. Whether it's a constant stream of notifications for emails or social media updates, or checking latest sports scores, or just bored and not doing much and need a distraction, we're very keen to always keep a constant stream of bits flowing towards us.
This expectation and dependency has become so ingrained that it's quite hard to break away from. Not just from a psychological point of view - we're all guilty of constantly checking our phones like a nervous tic in case something has happened and we missed it - but also from a practical point of view.
As a developer, and especially one who writes mostly web-based software, so many of the tools and infrastructure you use expects an internet connection. Some things are obvious - you can't push to a remote git repository with no connection - but some are a little more insidious and these are the ones which cause the problems when trying to develop and move about at the same time.
As far as possible, build your development environment to function offline too. One problem I ran into at the beginning was that I had been working a lot with several vagrant boxes in order to simulate the "live" connectivity between machines, to catch issues with firewalls and so on. However when you start a vagrant box, it will check for updates to the base box, and if there is no internet connection, then you can't start your box. I immediately had to spend time getting a version of the webapp which didn't need a real message queue to function.
The benefit of this effort is that I can work not just in cafes or hostels with spotty internet connections but also on trains or busses while travelling between places.
If you're building something web-based, it's quite often necessary to use some API on a web service. Can't do that with no internet. However there are useful tools like VCR and Betamax to record your HTTP requests while you have a connection, which you can then play back when you don't. Caching depenencies (now mercifully built in to pip by default) is also a good plan.
And last point about internet connectivity, before I stop harping on about it: if you're running a service or have your own website or anything at all which requires deployment or publishing, see how much of that you can move away so that all you need is a single connection. By this, I specifically am trying to address my own problem where deploying a new version of the Landscape webapp or checker requires uploading a tarball and running several ssh commands and since the internet connection might go away at any point, the deployment process can end up just half finished. It'd be better to have a big "deploy" button somewhere to do this for me.
Your mobile phone becomes very useful to tether
Since often the wifi connection won't work or perhaps doesn't even exist, it's a good fallback to have a smartphone with tethering option and a 4g SIM card in it. Ideally this is just a fallback but it's good to have, and SIM cards with a few GB of data cost less than $10 in SE Asia.
Just make sure that your phone is willing to accept arbitrary SIM cards. I think the days of handsets locked to a certain carrier are over, but I have only bought the handset with no carrier for a long time so I have no idea.
I also really would like to plug the LG 4G as an excellent phone for developing while travelling for a couple of reasons. As well as being just a pretty good phone, it has a battery you can take out and switch. This meant I bought a couple of spares before I went and am able to just drop in a new one if the tethering eats through the battery without needing a USB charging thing. Very useful in a pinch. Also the 4G has a programmable IR emitter, very useful for controlling aircon in rooms where you are supposed to pay extra to turn it on. Of course I would never do that.
Travel or Develop
Something I haven't manage to balance yet is whether my priority is to travel or to work on my side project. On the one hand, having freedom to do it full time instead of also balancing responsibilities with clients and jobs seems like it's a great opportunity to take it into "actually making money" territories. On the other hand, I probably won't get many times in my life where I can spend several months just travelling in amazing countries.
I think therefore setting out a goal at the start is necessary and I wish I had done that instead of just sort if winging it. It is certainly possible to spend months moving about and working, but you have to be dedicated to working and do things like spend a week in a place just because you find a good place to do that work.
If I were to plan again I'd accept that each country might take as much as two months to be able to get a useful amount done on Landscape and also see enough to satisfy my wanderlust. Setting a schedule, a real plan of 5 days a week, and accepting that it takes a week before moving on, would have been much better. Since money is now running low we'll see if I can continue that - I'm hoping with the sponsorship drive for Landscape I can actually start working full time and still manage to maybe get away for weekends, but we'll see.