The OS landscape is changing and, yes, you can learn and run network automation tools on Windows.
After a hot, dry June day in Richmond I boarded an empty train. It being just myself and a couple opposite we struck up a conversation, awaiting the train’s departure. Over the next twenty minutes, as the train slowly worked through a procession of sun-baked stations, I discovered that my companions worked in IT, but in a much earlier time. The white-haired gent confessed to be a C programmer back in the 60s. We talked about software, home lab specs, and genial conversation flowed from mutual interests. However, when I idly announced ‘Microsoft have really changed, Windows has greatly improved’ the C gent gave my comments short shrift and cut them down with:
‘They can’t change, they’re too big.’
No matter, it was a serendipitous meeting that enriched a dull train journey.
That encounter stuck with me, especially the rejection of Microsoft, and I was reminded of it last week in a brief exchange with David Bombal on twitter. The #netdevops guys put together a video about using Windows as a developer environment and David mentioned some negative comments they had received from those that are sniffy about using anything but macOS or Linux to write code.
Admittedly Windows Vista was terrible, IE6 one of the worst pieces of software ever foisted on humanity but I stand by the sentiments expressed in a stuffy train carriage; 'Microsoft have changed'.
What does this mean for those diving into network automation? It means that, yes, a humble Windows 10 PC is a workable tool for the budding developer. Admittedly you need to load up Wins with a number of tools, it doesn’t exactly come ready-to-rock, but there’s been a huge, and continuing, effort to ensure those with Windows aren’t locked out from the fun of exception handling, TypeErrors and such like.
Why Not Linux or macOS?
My advice for anyone looking to get into coding and network automation is to learn Linux. You’ll find it hugely beneficial if only because it is a major part of the IT landscape today so you’re doing yourself a disservice to remain ignorant of the wonders of GNU/Linux.
However, that being said, most of the people I speak to, those being in networking, are Windows literate and telling someone they need to learn Linux before they start working with Python is just another sizeable obstacle. Thus if you want to get into network automation, Linux skills are advisable but not necessary. Windows is a more than capable platform to get you into this new world.
Over the last few years things have changed. Apple has done little to court the developer community, the 2017 MacBook Pro with the gimmicky touchbar, sticky keyboard, lowish specs and hefty price tag, generated a host of tweets from people looking for alternative machines. The 2018 MBP range is not exactly accessible either, the new 15-inch starts at a loan-inducing £2,349.00.
Moreover, although there is an interesting developer.apple.com program, my impression of it is that it is aimed squarely at those wanting to write code for Apple products. I've got a work-issued MBP and the only benefit I see is the UNIX like file system and terminal. None of the applications I use for my network automation or Python work are macOS exclusive and all have to be installed, just like on Windows.
Thus there is a technical burden with Linux and a real financial one with macOS. But Windows is not just great to use because of negatives on the behalf of the alternatives.
"Developers! Developers! Developers!"
One of the most significant changes in recent years is MSFT actively courting developers. Front and centre in the shop window of this effort is VSCode, the editor that makes other editors jealous, and the cause of breakdown of many long-term relationships between dev and where they write their code. Although I did see on twitter that .NET Core was the original signal that changes were afoot in Microsoft, the masses are feeling the change with VSCode. Case in point, a colleague suggested I try VSCode in May, I didn't like it at first and went back to pycharm, but now it is all I use.
But if VSCode is the vanguard, there's a whole army of initiatives to make Windows the platform for development, from their acquisition of Github, to containers and kubernetes on Wins Server & Azure. Windows 10 has also seen some interesting additions recently with Windows Subsystem Linux & Hyper-V available as standard.
While not everything is perfect at present, WSL could do with being a bit better integrated, and try using SSH to access a Wins client. Nevertheless, the winds of change are blowing (cue Scorpions whistling).
Example Win10 Environment
Here’s an example environment that I would recommend for those looking to get into Python and network automation:
Win10 Pro - Windows Features to turn on:
Git for Wins - Comes with OpenSSH and Git Bash, use the latter as your terminal.
Visual Studio Code - I’m not even going to recommend any other editor anymore.
Postman - for working with REST APIs.
That gives you your OS & Python, git for version control, a virtualization platform and a fantastic editor.
While it might seem contradictory to be suggesting using Hyper-V in a blog praising Windows, there are a number of reasons why you might want to use a VM.
- Checkpoint, cloning and rollback - If you are anything like me, when you first attempt to install a host of new tools, it is good to be able to rollback and run through the process again, without having to go through a full OS install.
- Just because you are using Wins as your base, doesn't mean you always have to. See my recommendation to learn Linux.
- If you are using your primary work machine, you might welcome the isolated, sandbox environment that a VM offers while you hone your skills.
Finally, it can't be understated how much of a time-saver it is to have your apps for work (like outlook, powerpoint and visio) natively available on th OS you're bashing out 'for' statements. That, if nothing else, makes Windows worth a test drive as your dev OS.