Teaching: The OS Divide

4 November 2013

I spend much of my time in the OS community teaching. I teach kids, I teach beginners, I introduce experts to new concepts. At nearly every conference, I will at least attempt to teach a class. I love teaching, and I also try to talk others into teaching as well.

There’s one problem I’ve noticed with those that are interested in teaching, and it’s something that’s not really discussed openly. Normally, people make a single snarky comment, then walk away. The topic?


Why is this a problem?

When I’ve taught classes, I’ve almost always taught to a mixed crowd of Macs, Windows laptops, and the odd Linux machine. The more novice the class, the more likely it is that I’m going to be dealing with Windows people.

People in beginner classes expect you, the teacher, to know how to deal with their hardware. Yet, when I bring up the Windows problem, people scoff. The most common answer?

“They should get a better laptop.”

I’ve endured tirades about how they should just install Ubuntu, or how a Mac is really just as cheap as a Windows machine. I get to hear about how many years it’s been since they touched a Windows machine. I’ve heard so many stories about how people moved their loved ones onto Ubuntu or Mint or a Mac and that they loved it and everyone else should just do the same.

It’s a problem because it’s snobbery, and it doesn’t belong in education. Why do people buy Windows? There are many reasons why people might own a Windows machine. Maybe they like gaming. I know that’s why my husband and I keep Windows laptops around. They may not have a choice, since that’s what their work gave them (not all of us can demand MacBook Pros). Maybe the suite they work with only works on Windows. They might be like my parents, and scared to learn a new OS.

Or, maybe the decision is economic.

The cheapest Mac starts at a grand. I can easily find laptops for less than that. Sure, they may not have the screen or build or battery life, but that’s not the deciding factor for a large part of the population.

When money is unstable, it can be hard to save money. Savings are pecked away at by daily life and a host of things that cannot be cut. When you’re in this situation, you tend to get chunks of cash in on an irregular basis. You get a Christmas bonus, someone dies and leaves you a bit of cash, or your tax return clears.

Everyone I know who lives at the lower end of the middle-class spectrum or lower has a death or taxes laptop.

If you only get these bits of income in every now and then, you try to make them count. You get things replaced. You pay off a large debt. You buy big ticket items. A laptop is a common choice, but you want the most for your money. You won’t be upgrading in two years. You may be using this laptop for the next eight. So you go for the most memory, space, and video that you can get for that little pile of cash you have.

And if you want that, you’re going to get a Windows machine.

We can shout all we want about stability, or how you still have a MacBook from 2002 that works fine, or how you know of an indie seller that has cheap Linux laptops. At the end of the day, the Windows line is going to win. They are not the enemy At this point, the people I talk to often get mad at the users. They’re blind! Sheep! Technophobes!

The users are not the enemy.

Sure, we’ve all had our infuriating experiences with Windows. Some of us have watched the political wars, both from afar and in the trenches, and we have bad tastes in our mouths. We’ve been held hostage at parties to an infected install of XP that we’ve been asked to clean up, while everyone else takes in holiday cheer. We’ve realized that our children’s school system has been locked into a contract that only exposes the kids to Windows. I get it. But you’re getting mad at the wrong people.

These people did not buy the OS they did in order to make you mad. Really. They did it because it was the cheapest option, or the one they were the most familiar with, or they had specific needs with regards to their OS, and they weren’t confident enough to research alternatives on MacOS or Linux. So stop being mean to them by being snarky or ignoring them.

But if they would just try…

There’s probably something in your life that you use, but you’re not 100% knowledgeable about. How would you feel if someone ran in and, without explaining themselves or gaining your trust, told you to get something wildly different and foreign? For me, I felt this way the first time I walked into a bike shop. I was interested in getting a bike to tool around town. I had grown up with this sort of bike:

A simple Huffy bike. No fills!

It’s basic. One gear, break by pedaling backwards. The bars were at a certain angle, one you could grab while leaning over or sitting up straight. Sitting up was common, because who doesn’t want to pretend to be Julie Andrews now and then? You got one kind of tire. The one choice you got was color.

Julie Andrews on a bike

Then, I went into a bike shop. None of the bikes looked like that. They pointed me towards something like this thing:

A complex looking bike. Wires, tiny seat, weird angles.

Wait, there’s wires everywhere! And the handlebars are so tiny… And what’s with the seat and handle angle? My arms would need to be four feet long to sit up! Wait, the brakes are where? Why can’t I just pedal backwards? And that seat! That’s not comfortable looking at all. Wait, why are you asking me about tire choices WHY IS THIS EVEN A THING?

Whenever I feel the desire to rush a Windows person to a new OS, I remember the feeling of being slightly panicked and wondering if this salesperson was just trying to con me into a bike that wouldn’t work for me, and I back off. I earn their trust by showing that I do know how to deal with Windows, and that I can get Python working on their system. Then, once I have their trust, I start to explore whether they might be interested in checking out another OS.

And note that I say might. They might never move over. That’s okay, because that’s their choice.

What do you need to know how to do?

If you haven’t run away at this point, good! Let’s talk about what you need to know in order to work on a Windows machine.

You’ll need to know how to get the command prompt up. In general, all you need to do is hit the Windows key and type ‘CMD’ + Enter.

You need to know how to figure out what version of Windows you’re on. Don’t just ask the student. This is a chance for you to prove that you’re not going to break their machine. Pull up the command prompt and type in ‘ver’ or ‘systeminfo’. At least one of those should work.

You need to know how to install Python on Windows, both two and three. This is not the time to be Ultimate Nerd. Use the installer. You might even want to trust the defaults, though I know you’ll probably look, anyway. If you stick with defaults, the student will have an easier time debugging down the road.

There’s a good chance you’ll need to update the system path. If you pull up the command prompt after installing Python and get an error when you type ‘python’, your path needs help. This is slightly different for each system, so some googling might be in order.

If you’re teaching something other than just Python, you need to make sure that you know how to install THAT package as well. Oh, and while you’re at it? It’s a good idea to get pip and easy_install working as well.

Finally, you should get familiar with some sort of editing program for Windows. I generally show off IDLE first (since it’s great for beginners), but it can fall short when you’re trying to work in a project that has items other than Python files. I like Notepad++. It’s free. It’s updated pretty often. It looks fine. It’s not crazypants like Eclipse.

And that’s it. That’s not a huge list, all told. But just knowing how to do those things can open you up to a much wider community of learners, and give you a chance, after you get friendly, to maybe move them over to your OS of choice.


Related tags: python teaching


1 Mike Crichlow says...

Thank you so much for this. Just... thank you! I love programming and I'm so thankful for anyone that takes the time to help others (since so often there seems to be an undercurrent of arrogance and meanness within the Comp Sci community). Thanks again and have a great day! :)

Posted at 12:35 p.m. on November 4, 2013

2 Ben Rousch says...

I am one of those people who groans and rolls my eyes when I have to work with Windows (which is nearly every day), so I created a series of scripts to help me get a reasonable Python environment up and running with minimal effort. https://github.com/brousch/WinBootstrapPyEnv

One thing it doesn't do is modify the system path. Since I often have multiple Pythons installed, I prefer to type the whole path.

Posted at 3:16 p.m. on November 4, 2013

3 Chris Arndt says...

Python 3.3 makes running different installed versions of Python easier:


See also the PEP for this:


Posted at 5:09 p.m. on November 4, 2013

4 Corbin says...

I have to say I agree with that switching a beginning programmers OS is a very bad idea. This just creates extra confusion when they are trying to learn, but I would also never teach them on a non unix machine.

The good news is I feel like their is a very simple solution. Why not teach them all in Vagrant (http://www.vagrantup.com) this way they will never have to leave the comfort of their native OS but you as the teacher will know that as far as building and running within the command line everybody would be on the same version of Ubuntu

Posted at 7:21 p.m. on November 4, 2013

5 Shawn Wheatley says...

@Corbin, I think this only abstracts the problem that Katie posted about. Even if you're installing the Ubuntu image locally, that's still another OS to manage and another "thing" they need to remember how to use.

@Katie, I think installing both Python 2.x and 3.x is setting the user up for more confusion. I've only introduced Python to a few non-programmers, but when I have, I've only installed Python 3.x. This version has enough out-of-the-box libraries and support for common third-party packages now that I don't feel they need to know that 2.x exists other than as an afterthought.

I still agree with you 100% that teaching on a computer that they're comfortable with is the way to go if your only goal is to teach that person how to program. Great post!

Posted at 12:08 p.m. on November 5, 2013

6 Radomir Dopieralski says...

Running away from a Windows laptop is not snobbery, just like refusing to go to a warzone to help victims is not -- everybody have their own tolerance margin, and trying to make them go beyond it by calling them snobs is simply unfair and... snobbish. You are writing about gaining the user's trust by showing them that I can use their system. But I can't use their system. And I'm very likely to break something on it by installing random stuff, especially when I have no idea what customizations they might have, what toolbars, systray apps, etc. they have installed and how to fix them if they stop working after my class. I'm just not up to take up that risk, and you can call me a snob all you want, thank you.

Posted at 1:22 p.m. on November 5, 2013

7 Ungebeten says...

Thank you for this one!

I probably could have been one of these people who make a snarky comment and walk away. Actually I just don't know these little windows tricks, that make it a useable OS. I didn't know the Windows key-<type-the-command> trick. I tried it out at work and it's great.

It's good to think outside of ones own box sometimes.

Posted at 2:27 p.m. on November 5, 2013

8 Katie Cunningham says...


If you can't handle being in a warzone, don't go. If you can't handle Windows, don't teach. My issue is not with non-teachers not learning Windows, it's with people who want to teach, but then turn away people with Windows machines.

Posted at 5:08 p.m. on November 5, 2013

9 Corbin says...

@Shawn - I should have been more clear. My point is A) It is better to have all the students learning 1 systems so they can help each other and the teacher can focus on learning and teaching that system.

B) If they are beginners then a Unix command line will be no more foreign to them then CMD. So with Vagrant they can continue to use their normal GUI they are familiar with, but also use the consistent system of Ubuntu in the command-line.

This especially important as the Unix command line is not only easier to learn but also far more valuable long term then learning CMD.

Posted at 4:30 a.m. on November 6, 2013

10 Radomir Dopieralski says...

@Katie: I'm sorry for my outburst, I should really have worded it less aggresively. I suppose what really offended me was calling be a snob, when in fact I simply can't afford to buy a copy of every Windows and Mac version and the hardware they would run on just to test my classes on them and prepare binaries. But no matter, I know that you didn't want to offend me.

I still can't agree with the "if you can't use Windows then please don't teach" message. The fact that I'm not ready to go to the warzone doesn't mean I can't help my neighbours. It's not all or nothing. I can teach the people who either use the systems I'm familiar with, or who know how to use their own system enough to do equivalent things to what I do. I see no reason why I should be forbidden from teaching.

Posted at 5:25 a.m. on November 6, 2013

11 Kevin Edwards says...

I sympathize with having to fix people's Windows installations due to viruses and such. That is a shame. Perhaps it is hyperbolically like a "warzone" in that sense, but that is largely because it is so popular and decentralized.

I don't think anyone should be forbidden from teaching, but there is certainly some snobbery in being unwilling to learn the most popular OS.

And on the programming side, its Win32 API has allowed maintaining binary compatibility far longer than both Macs and Unixes, and is one of the main reasons for the OS's longevity. e.g. I run Win95 binaries in Win7. (You could probably just test your code on WinXP to achieve 99% Windows usability).

This standardization of binary interfaces also provides for interoperability and GUI automation solutions such as AutoIt, AutoHotkey, etc. which have no significant parallel on Unixes due to their desktop fragmentation (though Unixes do far better on the command line). Macs are very competitive (and even better) in this respect but they more often break compatibility.

Anyhow, good post, Katie! :)

Posted at 12:22 p.m. on November 8, 2013

Comments are closed.

Comments have been closed for this post.