I just came upon a really interesting piece by Alex Pszczolkowski. He thought he wanted to become a digital nomad, but really didn’t.
Alex brought up some really interesting points about why ‘Digital Nomadry’ does not work for him. The crux of the matter pretty much boils down to: “Can’t concentrate on coding while traveling“.
I’ve been traveling and coding for almost 2 years now (2 year anniversary on September 28th, YAYY!!) and I can tell you that there have been times when I:
- Wished I had a big screen
- Wished I had faster internet
- Wished I was in a better time zone
- Wished I was working with a team, discussing ideas, writing on a whiteboard, getting excited about solutions and the future
- Wished I was working at a startup somewhere – trying to change the world
- Wished I was working with really smart people on cool stuff
I tried to satisfy those needs through a few projects. i.e. moved to a place, started working with a team. What ended up happening though was that after two weeks of being in a place with all those needs satisfied I ended up wishing that I could work from a beach somewhere/or just head out somewhere/or just be on a bus to somewhere. I ended up realizing that “hey, I don’t really need this big screen” or “even half the internet bandwidth I have right now would be twice of what I need”.
We’re all different but personally for me, the case always ended up being one of the ‘grass being greener on the other side’. When we travel all the time, we crave that feeling of home, curling up on the couch and just watching TV/Netflix/whatever. When we’re at home, curled up on the couch watching Motorcycle Diaries, we suddenly wish that we were out there – doing cool things!
Alex brings up a great point about being able to manage only simple projects on the go. This really depends on the kind of person/client you are dealing with. You need to be REALLY good at using asynchronous communication tools (Email, Trello, etc.). More often than not, if you are traveling, the internet connection is the second limiting factor. Your first limiting factor is your time zone and resulting schedule mismatch. The issue is that if you’re in Bangkok and working with someone in the US, you’re pretty much on opposite time zones. If the person in the US is not going to be able to deal with “Hey it’s Monday morning, why doesn’t this guy reply to me ?” then you will definitely feel a lot of pressure. This needs to be hashed out at the beginning of any new client relationship. Most programmers do understand time differences due to our long hours lurking on IRC, watching different people bob in and bob out, but a lot of business types (especially those that don’t have prior outsourcing experience) do not.
I don’t personally face this problem a lot because most of my work is on independent projects (meaning things that I start up on my own). However, the few times that I do work with clients, it’s always understood that emails have a minimum 24 hour turnaround time (unless it’s urgent..) and usually we follow a pattern where we first finalize the specification, then I deliver, and then iterate if needed. The first step by far is the most communication intensive. Everything else could be done on a local environment with no internet access. (I once created an entire mobile site in 2 weeks in Cuba with no internet access!) I’m not saying that everything can be done without internet access, what I am saying is that there are several challenges that one may face but there are solutions or working patterns that can be used to make life easier.
This brings me to the next bit where Alex talks about furthering his own skills and his coding abilities. I couldn’t agree with this more. Working with good people definitely improves you in ways that you never thought were possible before. But so does picking up new skills like surfing, diving, salsa or a new language. As far as furthering programming skills is concerned, you may not have the benefit of pair programming or getting a brutal code review. You can definitely acquire the latter by contributing to open source software. I decided to start doing this for a number of reasons but mostly because it gave me the pleasure of being a part of something bigger than just myself. I also like to tweet at people about their programming nitpicks and follow a lot of programming info on twitter/hackernews/etc. just to keep myself up to date. This way I don’t feel too far removed from my sauce.
Some of the new technologies that I ended up working with while traveling, bear in mind that I am mostly a backend programmer (PHP & Python)
- Responsive web design
- PostgreSQL (I always used mysql before)
- Openstack cloud deployments
- APIs (Google, Paypal, Tumblr, Twitter, Facebook, etc.)
- even wordpress for stuff to do with this blog
- and tons more..!
Sometimes I miss the camaraderie of working with a team. Sometimes I get too entrenched in arguments on twitter about certain things. But, at the end of the day Zara puts it best: “Why are you arguing with him online? He’s sitting in a boxy room without a window arguing with you in 140 characters and you’re here sipping mojitos looking at the sun setting over the Pacific”.
Self development in your area of expertise is definitely hard to come by but with time, and varying projects, it’s certainly possible. There are plenty of 9-5 programming jobs which do not allow for any creative freedom/self development.
I’m a strong proponent of location independence. It’s very nice to take short trips to places but to really be somewhere and experience a culture, to notice its nuances and celebrate them, takes a while. There are times when Zara and I are moving constantly (every 2-3 days) and work piles up. During those times we just decide to take a break from moving a lot. We rent an AirBnB or something for a week or two and just stay put. There are a number of variables that we look at when we try to fix up a place like this but the most important by far is the quality of internet connectivity. That’s why we chose Phuket for this week as opposed to Ko Phi Phi. Would you call that location independent? I certainly would call it highly location independent if not 100%.
Lastly I would like to address this:
“Even though it might be obvious, during my travels I found out the hard way that creative, meaningful work, requires some routine. Changing your location once a week, working from benches, hammocks, cafes, bars and hostel floors is a cool way to fund your vacation, but it certainly doesn’t help you when tackling hard programming problems.”
I just want to say here that I guess different people operate differently. I have been able to mull over and solve some of the hardest programming challenges of my life on long 9 hour bus rides in South America. There’s just something inspiring about the mountain scenery drifting by that helps me think for long periods about what kind of architecture my next project should use.
Yes, in the beginning you are not going to make any serious coin. In fact, you’re lucky if you’re able to sustain your travel expenses. However, over a period of time things do tend to get better, especially if your focus from the start is on doing your own thing (meaning, no client dependence).
This goes out to Alex and anyone else out there reading this. Programming on the road certainly isn’t for everyone. There are numerous challenges that you may face. There comes a time when you want to be in a certain place and do certain things with certain people. But there’s a time in your life (before kids, old parents, etc.) that you can actually take to the road like you own it.
And that’s why I say: Programmer’s it’s time to pack your bags!