Blog of Rob Galanakis (@robgalanakis)

Escaping the Windows prison

My friend Brad Clark over at Rigging Dojo is organizing a course on Maya’s C++ API (I am assuming it is Maya but could be another program). He had a question about student access to Visual Studio, to which I responded:

As a programmer, the experience on Windows is pretty horrific. No built-in package manager. A shell scripting language designed in hell. A command line experience that is beyond frustrating. A tradition of closed-source and GUI-heavy tools that are difficult or impossible to automate. A dependence on the registry that still confounds me.

My eyes weren’t opened to this reality until I switched to Linux. I was on a Windows netbook that was barely working anymore. I installed Linux Mint XFCE and suddenly my machine was twice as fast. But the much more important thing that happened was exposure to modes of developing software that I didn’t even know existed (Python, Ruby, and Go made a lot more sense!). Programming in Windows felt like programming in prison. Developing on Linux made me a better programmer. Furthermore, If I didn’t end up learning the Linux tools and mindset on my own, working in the startup world would be basically impossible.

Programming on Windows revolves around Visual Studio and GUI tools. If you need evidence at how backwards Windows development is, look no further than Nuget. This was a revolution when it was released in 2010, changing the way .NET and Windows development was done. In reality, the release of Nuget was like electricity arriving in a remote village. It took ten years for C# to get a package manager. And it is for the rich villagers only: older versions of Visual Studio don’t work with Nuget.

The ultimate problems Windows creates are psychological. The technical differences change the way you think. It echoes the “your Python looks like Java” problem. Is the Windows mentality what we want students to take on? My last two jobs have been on Linux/OSX. I honestly cannot imagine having kept my head above water if I didn’t have a few years of self-taught Linux experience.

Windows still dominates in desktop OS popularity. That is all the more reason to make sure we are exposing student programmers to alternative ways of developing. I want new developers to be exposed to things outside the Microsoft ecosystem. It is too easy to become trapped in the Windows prison.

5 thoughts on “Escaping the Windows prison

  1. dorf says:

    I’ll admit I’ve barely used linux. I do own a macbook air, but can’t stand the OS–

    I can see the appeal of the command line for automating builds etc.

    Compared Visual C++ against what is available on linux:

    Better in VC++(assuming you install Visual Assist pluggin):
    -Debugger is fast and reliable.
    -Excellent code navigation, making it very easy to jump around the code
    -With Visual Assist you get C++ refactoring support, it works quite well
    -none retarded syntax highlighting that you can customize
    -has built in profiler
    -fast IDE
    Worse in VC++:
    -The compiler is not as up to date with C++11/14, this sucks:/
    -The project/solution setup is clunky, but you can automate this, and generate the files yourself instead of letting VS do it.
    -The way they handle precompiled headers is fairly idiotic, and you can’t share them between projects

    I really do want to learn linux properly, but I find it unlikely that developing C++ on Linux is a very enjoyable experience–

    You can automate VS builds easily enough, just launch msbuild and tell it to build your solution file.

    C++ does not have a package manager so that type of thing is basically irrelevant for my purpose.

  2. Jóhann Haukur Gunnarsson says:

    I agree with all your points. However, if you are developing on Windows, Chocolatey will make your life far easier. Yes, it’s “almost” like apt-get for Windows. (https://chocolatey.org/)

  3. robert kist says:

    I’m not that much of a VS fan (maybe because I haven’t dug into some of its advanced features yet?), but I think any course about game / 3D related programming should feature an intro to VS. Not because it’s good, or powerful or whatever, but because it’s a de-facto industry standard. Chances are, that you’ll have to touch it one time or the other when working with C# or C++.

    On the other hand, you don’t want student’s IDE exposure to be Linux lopsided either. Why not aim for a balance and critical comparison? On the same note as I am pro-VS, I think it may also be worth to give a quick intro to XCode.

    As an employer I would be happy if people have some basic understanding of such popular environments, rather than being clueless and starting at zero. And once students have been exposed and got an overview, why not let them pick the best tool for their future needs? The only downside I see is that it could be a problem to cram 3 different platforms and environments into one course… but you can always provide hand picked links to in-depth resources and starter tutorials, which interested students can follow.

  4. Charles Palmer says:

    IDEwise JetBrains C++ offering just went into beta.

  5. “Linux as a better developer environment” should come with “you want to be this tall to use Linux for development”. You won’t really benefit much while you do semi-basic stuff. But then there comes a day when you stumble upon a tool that needs hacks to run on windows, or not available on platform altogether, or is hard to start/configure due to shell limitations and stupid path names, and the pattern repeats, and then you realize it’s easier to just stop fighting windows and switch to something else.

    But, like I said, one should grow into the need for this. Maya developer, alt-tabbing between python editor, VC++ and maya, is not really hard pressed to leave windowsland.

Leave a Reply