I’d be interested to hear from Windows developers. I do most of the stuff on this list already, but I’m on a Mac and have been for a few years. Are the ecosystems noticeably different?
I'm a "corporate" windows-based front end developer at a large non-IT organization that employs hundreds of developers. I'm more up on this stuff than most of my co-workers, but I've never used git, requireJS, node, any css pre-processor, or any automated javascript testing.
Some notable things that are common around here that aren't on the list are creating WCF services and sharepoint web parts, and various Microsoft stuff like that. It's a whole different world.
It is. Microsoft development shops that d0 websites for businesses still primarily use WebForms even though it has been essentially deprecated for a few years now. Creating controls is a common paradigm in windows programming going back to the Delphi days so WebForms is easier to learn (even though the html it produces is sacrilege).
I do front-end development on Windows, and yes, it is a liability (though I'm also not a fan of command-line apps, regardless of platform, which is another liability, since it's much easier to build powerful tools that only expose the crappy, but efficient UI of the command line than it is to develop robust and efficient GUIs).
- Git on Windows is (finally) not bad. You've got Git Bash, Git GUI, TortoiseGit.
- I don't see why the author thinks the CLI is vital for these:
* ssh - Putty
* scp - WinSCP
* ack, grep, find - I like IDEs, when they fit the job, but while I haven't found any suitable for web dev, most handle this task easily. I use Notepad++, which has a decent selection of plug-ins, including one to quickly find and open files in a project.
I do frequently see Windows support as an afterthought, or a non-thought, in the fast-paced world of web dev tools - code linters, compressors, languages/compilers (Coffeescript), build tools. With a decently powered workstation VirtualBox and a Linux VM help ease the pain a bit.
As someone who works with Linux and Windows, I agree with what you're saying here.
I hate Putty though.
I use Aptana for writing my code, and quite like the built-in terminal in that for SSH.
You may already have tried Aptana, but I find that I use Notepad++ only for quick jobs these days, rather than longer coding sessions, so it seems to make my life easier.
I'm not a Windows developer but I've tried my hand and work with a lot of people who are getting into the things described in the article using Windows.
Things really are harder and it's something I've been trying to explain to people I'm mentoring and they're finding it out the hard way. The thing about that statement is that a lot of times people will start a holy war over it. No one is saying Windows sucks here. It may or may not suck but that's beside the point. The reality of the situation today is that the majority of the open source community is creating things that will eventually be running on a Linux server. IIS is just not used all that much at all outside the corporate space and even they are moving toward Red Hat these days.
But any time I explain to someone that they'd have a much easier time on a Mac or Linux distro they start an argument and give me that "you're an elitist" look. I'll tell them to use Git but they need a special program for it. I show them SSH and they need another app for that. Same for Ruby, most local dev servers, etc. and then every mundane command for me turns into twice the work for them because they have to do what I'm doing plus whatever extra steps plus configuration on their machines.
It's really frustrating for them and they give up. A lot of times a person who has learned some basic HTML and CSS who wants to level up and start doing some version control and set up a remote server ends up giving up on the whole thing.
So the whole ecosystem really is different as everything is built with a nix environment in mind. I'd been working on a Mac for a long time and needed a laptop. I got a cheap Windows laptop and thought I'd dual boot with Xubuntu so that I could deal with certain Windows file types and have an easy way to test sites in IE. Well, I ended up booting to Windows less than 10 times in 6 months and eventually got rid of it altogether because there was nothing Windows did that my Mac or Xubuntu couldn't. I even tried to write so,e desktop software and do some web dev and found that Windows is awesome for desktop apps... If you're only developing for Windows... and Windows is great for web development... if you plan to use an IIS production environment and/or you're going to program in ASP.net or C# exclusively.
But again, this isn't a Windows bashing party here. It's just the reality of working with open source and web dev in 2012. There are certainly things that make nix systems difficult to work with depending on the context but as it stands we're living in a time where *nix is the default platform for web development.
I show them SSH and they need another app for that. Same for Ruby, most local dev servers, etc. and then every mundane command for me turns into twice the work for them because they have to do what I'm doing plus whatever extra steps plus configuration on their machines.
Oh, God, yes.
I teach a class of aspiring hackers on the weekends, and they're all gamers and they come in with their windows laptops. Every once in a while I'll have a piece of a lesson where they need to install some dependency or compile some code they wrote in a text file, and it just brings the lesson to a screeching hault.
Having them download a python cli so I could show them how to use python as calculator in one of our earlier lessons ended up being more trouble than it was worth.
Windows is just not developer friendly if you're working in anything but .Net - and I think C#-.Net-Visual Studio programming for windows desktop applications is the best programming experience there is. I just don't have many clients asking for that.
Ruby and Python take like 10 secs to install on Windows these days. Not sure what you're doing wrong. The only annoying thing is occasionally you come across a python library that needs compiling and that turns into a veritable nightmare.
Simple trick I do on my windows machine is to create a bin folder and add it to the PATH settings so you can just bung things like curl and sqllite in there without faffing around.
I'm not saying it's great and windows is definitely cli hostile, but you're exaggerating the problems.
Just teach your hackers win key+r or on win 7 they can just hit the win key, type cmd, press enter. Then type irb or python, enter. Done.
It may take you or me only 10 seconds to install python on Windows, but my students need my help for every step. Even if I tell them to get up and I do it myself, it's still 10s X N students to get everyone up to speed.
Compare that with zero seconds for Mac or Linux, both which come with python installed.
Unfortunate truth. Microsoft made a major error in abandoning the command line so many years ago and it is crippling for developing in not-.NET. powershell isn't the solution. Windows doesn't even ship with an unzip cli tool
It doesn't ship with a curl equivalent and to get curl you have to go to a page with pop-up ads and download some other dependencies on top of it. Windows doesn't ship with a Screen or Tmux equivalent. All of these things are unacceptable.
Played with Win7 today in a VM, trying to test IE stuff - you can't even drag the command line window handle to make it bigger. Your options are taller window or full screen, but the text just gets larger. Pure garbage. Glad I switched to OSX a long long time ago (Linux is also equally awesome, but I like the hardware/software integration Apple gives me).
This is possible to do, but you need click on the icon in the top left corner and then properties. Full instructions here: http://stackoverflow.com/a/319317/478893.
You can also do this by running a third-party console app.
As a post earlier in the thread indicates, you can often do the same things on Windows but it requires a little extra work.
First thing, if you're required to use a Windows workstation, is install Cygwin, and I really like puttycyg[1] as a terminal.
One fairly simple install gives you all the basic unix utilities, and almost anything else, yes even X11 stuff, is available in a fairly usable click-to-install management interface.
I installed Octave on my windows machine last year in order to participate in Stanford's Open Classroom Machine Learning course and was surprised to find all of the gnu-tools installed (MinGW) and that they worked seamlessly in the Cmd console or in Powershell.
As much as I love Linux and find that I learn much more about C and computers in general by using Linux, it isn't as difficult to go back and forth as you say.
While MinGW is great for some things, I prefer Cygwin, which is more complete and the package manager is a particular godsend.
It's common for Windows ports to package their own MinGW version (Strawberry Perl, MSYS-Git, ...), which is less than awesome, but you can compile the things you need from source. It's often a bit tricky, though (I used to compile Git and Perl from source because at the time the Cygwin packages were either non-available or outdated, but it's not for the faint of heart).
As Cygwin comes with MinGW cross-compiler packages, I no longer keep a separate MinGW/MSYS environment around, and I'm reasonably happy with this setup.