I still fondly remember what it was like when I first installed Windows (3.11 for Workgroups) on the PC in my room that I’d built out of parts handed down from my dad. It was a wonderful thing and led to me learning how to type (via Mavis Beacon), how to deduce (via Carmen Sandiego), and how to lose badly at chess (via Chessmaster 3000). I was 9 years old and it was amazing. Next Windows 95 came out and I was even more excited than Matthew Perry was in the Windows 95 Video Guide! This made it so that I wouldn’t have to use the autoexec.bat file to run windows on boot, and could instead JUST use WINDOWS! It was (and arguably still is) the biggest thing Microsoft has ever done. It brought along its own frustrations, but that doesn’t impact just how significant it was. I mention this because I have been a loyal and loving member of the Windows community until the past year or so, and that’s when it all started to go downhill.
I’ve started learning web development the past year or so, but only in the past 4 months have I really buckled down and started devoting every spare moment I have to it. I have been doing a lot of work in Cloud 9 because it lets me simulate a Linux environment in the cloud while also being a great editor. The further along I get, however, the more I want to understand the lower level of how these things work and get to writing my code directly in the terminal, and that’s where Windows gets in the way.
If You Want to Develop on Windows, Install Linux
Of course it might not be ideal, but it can’t be too hard to develop in Windows, right? I mean I’ll just have to manually set paths and change some of the commands I’ll use to their windows counterparts in the Command prompt. This is the naivete with which I entered back-end development on Windows for non .NET frameworks (I’ll be fair here and say if you’re working with .NET C# and the like, Visual Studio will do you right). I figured that horror stories were nothing but fluff, and if I looked enough, I’d find the key to easier development on Windows.
I was horribly wrong.
Every single tutorial for learning, improving, or refining these languages is written assuming that you’re working in a *nix terminal of some type. As the owner also of a MacBook Pro, I’ve unfortunately tasted the delicious water of developing back-end apps in Rails using a Unix terminal, and it seems the Internet leans the same way. This is why one of the first steps most answers to “Doing Rails development on Windows” starts with something like “Install Ubuntu in virtualbox, it’s super easy”.
I even tried this. I don’t know why I did that. I guess I thought it could be the same, or give the advantages of both. It has since turned into giving the advantages of none. I spent two days fiddling with weird ways that Linux interacts with the shell simulation and all the while learning nothing about Linux, so I finally decided that I needed to find a better way. My final goal is to set myself up on an iMac with two additional monitors, but for the foreseeable (and realistic) future, I am now using Ubuntu 15.04 Vivid Vervet and after just a couple days of installing, reinstalling, finding out I didn’t have the newest version, and finally updating to said newest version I am now the proud owner of a decked out Linux development rig.
After getting used to this, I have realized that the games I play are all still available on Linux (and more will be available on OS X) and for the time being I haven’t really had much time to play games anyway with all of my free time going into studying and practicing what I’ve been learning.
I find this so much more free and something about removing myself from Windows also freed me from some of my bad Windows habits like always maximizing any window. It’s like all that old baggage dropped out and it feels so much faster, more responsive, and it’s a dream starting a Rails server while also running a test environment, a live sample, and editing the code all at the same time.
I felt that all the time Windows was capable of doing what I needed but it wasn’t the right tool for the job. I like using the right tool for the right job, even if it means sometimes having a few extra tools, or having to change which tools I’m using now that the jobs I’m looking for them to do have changed. Don’t get so attached to your hammer that you can’t use a screwdriver when you need to change the batteries in your remote. I don’t game like I used to, and that was the only real argument I had that kept me using a Windows PC for as long as I was.
Overall, I didn’t feel the right answer was to purchase extremely expensive software like Visual Studio and chop it into doing what I want. I also decided that running my code on a system that is as close to the server as possible could only help, but I’m not going to lie and say that it was something different.
I’ll Miss Windows, but Not Enough to Go Back
Windows will always be my first GUI OS after the chaos (fun chaos, admittedly) of DOS. From running a BBS with my best friend in 5th grade to playing the shit outta some Minecraft, Windows and I have been through a lot. We made it through the sadness that was Windows Vista and the insanity that was Windows 8 through to the awesome that is Windows 10. I’ll be happy to see how Windows grows in the future, but now I’ll be doing it from the sidelines as an observer only. Unless their core framework changes, I don’t see myself returning. It was great while it lasted, but it’s no longer the right tool for the job.