

Ask HN: Suggested OS for teaching programming - chriszf

I don't like the term webapp, because it diminishes the nature of the work. When I say programming, I mean writing database-backed multi-user network applications with a web interface. So yes, a webapp, but there's more to it than that.<p>Anyway, I have the opportunity to set up a learning environment to teach a bunch of bright, aspiring developers everything I know about my craft in a very short time, and I've reached the point where I have to choose the machines I'm going to use. Now, because I'm crotchety and apparently just stepped out of a time capsule, I want to teach debian-flavored linux: that's what I develop in and deploy to.<p>On the other hand, a colleague of mine extols the virtues of OSX and indeed, I can't deny the increasing ubiquity of macs in the silicon valley. He's pushing heavily for a mac environment and makes good points in favor of it. I even carry a macbook air when I don't feel like burdening my shoulders with my usual laptop, so I can't argue too much against it.<p>Now, without devolving into a "mac is better than XYZ" discussion, my question to HN is this: does it make sense to teach <i>new</i> developers linux directly as part of their education, or should I let them accrete knowledge of deploy environments and system configuration over time?
======
japhyr
I have been teaching high school math and science for a while, and I am
starting to teach programming within my math and science classes. I am using
linux (ubuntu) for programming work for a number of reasons:

\- It's what web apps are deployed to in the real world, so any student who
will go on in the field will need to know linux.

\- Students love linux. I have had very few students who knew anything about
linux before they came to my school, but everyone enjoys using it when they
have the opportunity.

\- It's easy to get a programming environment up and running.

\- Students get open source. They love that it's free as in price and free as
in freedom.

\- Using linux avoids adding to the education gap between classes. To really
learn programming, you must program on your own time. You can not expect
people to program well if they don't have their own computer. You must be free
to have an idea after dinner, and follow up on your idea that evening. Not
everyone can afford a mac; it is very easy to set someone up with a cheap or
donated laptop running linux.

I'm happy to hear you are sharing your expertise with students. Many students
don't find anyone in their schools that really get programming. That first
contact with a real programmer can easily be life-changing.

------
1331
I recommend Debian for many reasons, but the primary reason to choose Debian
over OS X is package management. Installing the development platform, a
database server, an HTTP server (if required), a decent text editor, and any
other necessary tools is very easy in Debian. Doing so in OS X, on the other
hand, is often problematic.

I taught a Haskell course last year, where participants brought their own
laptops running Linux, OS X, and Windows. Linux was the least problematic. If
I do a similar course in the future, I am thinking about providing a Debian
virtual machine image for anybody who runs OS X or Windows.

------
pestaa

        I mean writing database-backed multi-user network 
        applications with a web interface. So yes, a webapp, but 
        there's more to it than that.
    

Webapps are exactly that. Database-backed multi-user network applications with
a web interface. However, I can understand why you want to explicitly state
the context (the phrase lost credibility.)

However, an index.php with `<?php phpinfo() ?>` in it is not a webapp imho,
but still useful for teaching the network stack.

I'd go with Linux, certainly. If they are really bright and aspiring, they'll
recognize the power of open platforms anyways. Just my two cents.

------
steventruong
One thing for consideration is what system each student has access to. If they
are Window users, you can have them install Linux. The same could not be said
for a Mac (albeit I'm a Mac user myself). It should really depend on your
students and whether or not they have access to a Mac and more importantly Mac
tools you aim to use for teaching purposes as they'll most likely go off what
you're using to teach them even if the tools in the end are different for
different people.

------
jacquesm
Linux comes with every programming language under the sun an apt-
get/yum/pacman away, it is by far the easiest os to teach/learn programming
on.

------
brudgers
OSX doesn't readily scale to the web.

Linux and Windows do.

------
bmelton
If there's a way to poll the students before hand, I'd recommend that. Let the
majority decide. You want to teach them how to do things that presumably are
not "learn how to use an Operating System". Don't get in the way of that.
Another factor is what operating system they're already using. If they can't
take your lesson home and replicate it on their own hardware, what's the
point?

Also depends on your technology stack. What's the burden for getting the tools
you need onto OSX? If it's higher than installing .dmgs, or using Homebrew,
then compare and contrast with that same level of effort on a Linux platform.

It might be that the argument isn't even Linux vs OSX, but which flavor of
Linux. Debian is great, and has tons of packages, but if you're wanting to
support newer packages, Ubuntu might be the way to go, for example.

A point in favor of OSX might be that Linux developers are likely going to be
able to grok OSX greater than the other way around. But in the other column,
Linux is going to work on a much greater variety of hardware.

