tags:

views:

251

answers:

8

Business travel and a functional coding environment are very contradictory ways of life.

For those that have to travel, what Best Practices of life do you recommend to get in some productive coding time while having to be on the road?

A: 

Carry an extra battery for your laptop for long airplane rides.

Know how to quickly locate power outlets in airports that are located near to seating.

Use headphones and an iPod to shut out noise and distractions.

Get a wireless card for your notebook so you can easily get Internet access anywhere (except aboard the airplane.)

Oh yeah, most important: If possible, get seats in the emergency exit aisle or behind a bulkhead. The seats in front of the emergency exit aisle don't recline. If you can't sit there, get Knee Defenders to prevent the seat in front of you from reclining and potentially damaging your laptop. (I know this experience well. I had a laptop damaged by a reclining seat.) Note: Knee Defenders will not be appreciated by the airline nor by the passenger in front of you.

Kluge
+2  A: 

I code on the plane when on vacation, and used to do the same when I traveled more for work. I usually pack a book at set a goal of either a number of chapters, or the whole book, to cover. I recently packed a Ruby on Rails book with me, and did all the examples beginning to end. I have been looking into PDF versions instead of packing a real book with me.

I also purchased noise canceling headphones, and listen to my iPod while programming to cut out distractions. But I think having a goal probably does a better job of that than anything else.

Jason Jackson
A: 

it's an up-hill battle for me, so i don't. I use the time to read a book or two, or get some research done, or answer some support questions, or any number of work that software engineers have to do that isn't coding.

Dustin Getz
A: 

Get a small mouse you really like. I like my MS Wireless Notebook Presenter Mouse, and my cats like to chase the laser. Bluetooth means you can't use it on an airplane, so I use the builtin mouse alternatives (e.g. touchpad) in the air. I also make a point of learning hotkeys so I don't have to mouse.

If you do most of your work off the plane, you can get a bigger laptop with a bigger screen, a more comfortable keyboard, and faster components. Some allow dual hard drives, which opens up some interesting options. Max out your RAM. Consider an external hard drive so you can really load up.

Travel means no multimon, and your screen resolution is probably lower than at a desk, so you need to apply some tools to compensate:

  • Format code to be narrow enough to have no horizontal scroll bar, even when your other important UI elements are visible (e.g. Solution Explorer in Visual Studio).
  • Factor code well so you can see whole methods without vertical scrolling, even on your smaller display.
  • Remove unneeded UI elements.
  • Learn hotkeys for showing the UI elements that you need occasionally; keep them hidden otherwise.

Pick up a DVCS (I like Mercurial). Push changes back to a server (either 3rd-party hosted or one you run yourself) regularly, so if your laptop dies you don't lose your work.

Jay Bazuzi
A: 

laptop, pen, paper, cell phone

and the last three are optional

that's all you need to Code On The Road - don't be a wuss!

;-)

Steven A. Lowe
+1  A: 

When I'm en-route I find it hard to do actual programming but I have found that I can work out and really delve into the details of high-level design. UML diagramming for example usually can be worked out pretty well.

Nick Gotch
Agree design work is a good way to spend travel time
Robert Gould
+1  A: 

Sorry about my off-beat answer here, but when I travel I take the chance to bond with clients and perhaps some sight seeing... Although I will take a programming book, pen and paper to read during my down times, and reconsider my designs away from the code, its good to breath once in a while.

Robert Gould
+1  A: 

Note that I am assuming work-related development and travel. When I'm traveling for personal reasons I like to do something other than write code. Helps me focus when I get back...

It sounds obvious and stupid, but make sure your laptop is setup to do development on it. This means that you have all your environments, tools, utilities, etc. that you need, access to your source control and bug tracking system, etc. etc. Make sure that it can connect to what you need when you need it. Verify that it works before you travel. Don't expect to be able to set it up on the road. My experience is that by the time you get it set up the way you want, you'll be on your way back. Its also useful to "test-drive" the setup. Take it into work and use your laptop for a day instead of your normal development machine. Of course, if your laptop is your normal development machine, you should be all set (mine is not - I have to keep my laptop in sync with my desktop, and is done by choice because I prefer the power of my desktop to my tiny laptop I use for travel).

Anyway, you would be surprised how many times I have been traveling with someone only to have them tell me they can't get anything done because they forgot some utility or they forgot to install some library. Or they don't have licenses.

Don't count on internet access. You should always be prepared to develop with some minimal amount of internet connectivity. It doesn't have to be your most productive development time, but you need to be able to do something when you don't have internet. Often I will use this time to document or clean code. Since my work is done on a team, I try to avoid major functionality changes when I am offline to avoid collisions and out-of-date requirements.

Having said that - if you can do it (and your laptop is not your regular machine), set up remote access to your development machine :)... When you have an internet connection, just remote into your standard machine. That helps keep everything in one place and synchronized. No need to update libraries or anything else (This is my current mode of operation - despite the lag I still find it to be the most productive since it is always current with the latest project needs - no need to constantly sync and update).

Always have a backup - laptops fail, and you don't want to lose all the code you spent the last 2 weeks working on. This means when you get an internet connection, use it to put your work somewhere safe. Source control on a central server is my preferred place, but put it somewhere. Don't assume you'll be able to recover the data - its just as likely you'll lose your whole laptop or have it stolen.

I have been doing the travel and development thing for a while now (I haven't been in to my office in almost 3 months). Have multiple ways to get in touch with your co-workers. Even for trivial things make sure you email, call, IM, whatever to check in. Find out what everyone else is doing, even if it isn't strictly your business. In a week, it may be and you don't have the benefit of being in place to overhear what happened.

I don't do my development when in transit. I treat development on the road the same as I would treat it in my office. I use my transit time to catch up on reading, sleep and so forth, that way when I get to my hotel, conference, customer site, where ever I am, I am relaxed and ready to go. Travel is stressful enough without trying to cram in an extra 15 minutes of productivity. Plenty of time for that when you arrive.

Brian B.