Developing on the Road with Windows
As a software & technology professional that's on the road significantly more often than not I figured I'd share some common and not so common-sense advice that will help keep your sanity levels in check and your productivity levels as high as they can be. This is by no means an easy task and anyone who claims to know it all likely simply lacks experience.
I develop on and for every major platform in the world, but I currently use Windows 10 w/ virtual machines as my primary operating system on my dev machines. This post will focus on some of the nuance details involved there and hopefully help others like me stay productive and awesome.
Every Network is a 'Metered Connection'
If you're like me you likely have dozens of different e-mail addresses for personal and professional use.
You may have to have even a 'personal' account for your professional persona and one for your actual personal life.
Every company you work with will often want you to have your own e-mail address, identity, picture, signature, profile, etc associated with their company that makes it look like you're associated with that organization and they much prefer you use that e-mail address for all matters of business related to their organization. There's a plethora of reasons for this ranging from security, auditory & legal to plain ole' professionalism - and that's just a few of the reasons.
All of these e-mail accounts generally come with personalized organizational OneDrives, Google Drives, DropBoxs, and other "cloud synced storage services" beyond just the e-mail account and many will use more than one.
These are just some of the background services that'll start spinning up and using up all your network and computing resources without you realizing it the moment you're connected to the internet.
There's probably a lot more going on behind the scenes than you'd like - depending on what browser you're using, VMs you have setup, your network configuration, what all options you have turned on in Windows 10 and countless other combinations of settings & situations.
When you set these public, shared Wi-Fi connections - regardless of the amount of bandwidth or number of active connections they have - you're probably going to notice a dramatically better Interizen work experience with them set as 'Metered Connections'. It doesn't matter if they're metered or not - Windows will naturally switch into data 'sipping' mode (along with power, CPU, memory, etc usage). This doesn't mean you'll receive lower bandwidth - quite the opposite - this tells the operating system "I have a limited amount of resources available to me and, unless I explicitly tell you otherwise, dedicate those resources to what I am actively working on now.
Just as an example - where I'm currently writing this has absolutely horrible public Wi-Fi. When I set it as a metered connection a 200MB download takes ~5 minutes. When it isn't, it gives me 4-8hr estimates.
When you're truly on the go, an hour is a godsend - best not waste it having a few dozen cloud synched drives, e-mails, spam, et al. eating up all your bandwidth when you're just trying to push that one commit out.
No one is paying you to wait.
No other part of my business activity is hampered by this except the fact that every e-mail account in the world isn't constantly looking for updates in the background. So some responses to e-mails may be a little delayed.
As most experienced professionals know - this could very well be a positive thing.
This also means you may not immediately see that heated "VIP e-mail" from someone wanting you to drop everything you're doing to respond to their request.
The reasons for this are numerous and incalculable - and not without their trade-offs as I'll discuss in the following section - but here's a list of reasons why not having an instant impulse on your work (or personal, for that matter) e-mail can be a good thing:
Heated e-mails often drive the desire for heated responses - so stopping what you're doing to read the e-mail that's going to demoralize you for the rest of the day - and make you begin looking at what all other opportunities are out there - isn't doing anyone any favors.
Most of those heated e-mails are looking for results on what you're already "in the zone" working on; usually right at the key moment where you have everything figured out and are churning out code a solid 10-50x the normal rate. Stopping to even read the notification you got an e-mail will disrupt this. Respond to them and the delays in results gets worse, has you in the position of explaining a "work in progress" and completely throws all productivity and happy work out the window. Your work will likely be left in a broken state with you trying to remember where you were before being interrupted and nothing but bugs, bad emotions, crappy products and delays result. Having a polished finished product ready and tested before you even know you received the e-mail enables you to respond back calm & collected. Often that "angry e-mail" will have countless bullet points, extraneous emotions and just pure unproductiveness. When you can respond back with a simple "Hi, I just received this e-mail - if you would, please just refresh the page and you'll notice all this functionality is implemented, tested & live. If you would, please review and give me your feedback at your earliest convenience so I can continuously improve our product" goes over a lot better than the alternatives.
You're paid to create. Create amazing things. If you're reading this, there's statistically only one of you per few thousand to hundreds of thousands (and, in many more cases than people care to acknowledge - millions) of people capable of doing what you're capable of doing in the entire world. No one's paying you to write e-mails. That doesn't mean stay in complete radio silence for eternity but a wise man I looked up to most my life and finally got to meet once said "The great thing about e-mail is that there is no expectation of an immediate response" - that's basically true, except for when it's not. Some people get extremely sensitive when their e-mails aren't responded to immediately so consider your circumstances :)
For every time a developer is interrupted when "in the zone" it takes him/her 15 minutes at a minimum to get back to the same state as before. Nevermind all the hugely complex problems they had solved that they were in the middle of solidifying to code when suddenly asked something that completely wipes them out. I'd be willing to bet that this is where a solid 90% of bugs in software are created today. Rather than beat this dead horse I figured I'd just link in those that have already said it and done so better than I could:
This could also be a bad thing
The more experience and knowledge I obtain in life, the more uncomfortable I feel giving advice. Virtually all success I've achieved in my life has been from doing the exact opposite of what was advised to me - so who knows.
I've had clients and employers that demanded non-stop constant communication at all time, while also expecting non-stop results at the same time - suffice it to say, these were never very enjoyable relationships. Daily status reports where your only status report is that you spent the entire previous day compiling the various different daily status reports don't exactly go over very well.
Anyway - beyond all the gibber jabber the only point of this article was just to point out to "developers on the go" how much marking an otherwise "Unlimited" connection as a metered one may dramatically cut down on your downtime and internet connectivity frustration.
As an aside - it also turns out to be a decent way of silently cutting down on e-mail spam and over communication at the workplace while maximizing employee efficiency.
As always - your mileage may vary but your feedback is always welcome.