Posts RSS Comments RSS 63 Posts and 83 Comments till now

Some Things About Clothing and Projects

  1. One of my friends just started a cross-Mongolia journalism project. The goal is that she’ll visit every province in Mongolia on a horse with her camera and computer and it’ll be a crowd-sourced and funded project that is paid for by the Internet for the Internet. It’s pretty ambitious but sounds amazingly awesome.
  2. I’ve spent a lot of time recently reading Fables. It’s possibly the best comic series I’ve been reading recently. The downside is that since I’m on the West Coast temporarily every volume I buy right now will need to be transported across the country when I head back east in a few days. Also, I’m reading at a rate where I will run out of new Fables TPBs in a week or two. But that’s okay, because then I finally have time to catch up on Ex Machina before the final book comes out.
  3. Today I wore a pair of girl jeans that I got for two dollars on sale the other day. They are exceptionally comfortable. My biggest complaint about boy jeans is that it’s too tight around the hips and too loose around the ankles. These pants have the exact opposite problem, which is both refreshing and more comfortable.
  4. For the first time in over two years I’ve been invited to a wedding. This means that I need (semi-)formal wear as I don’t have much wedding-appropriate clothing and what I do have is not accessible before the wedding. I just realized how bad I am at picking out (dress) shirts and, worse, ties to go along with them. Sadly, this is not an occasion that I can go to with a work shirt over a patchwork/gypsy/cargo skirt and a pair of work/snow boots; this is what I pretty much always wear, by the way.
  5. I’ve been getting into programming for Android phones lately, partially as an excuse to finally learn Java and to determine whether it is a good language for teaching programming. It isn’t; not where there are better alternatives around. But it’s fun to have time to program again and to remind myself of all the stuff that I’ve forgotten.
  6. This is the first blog post I made about clothing and the first one in a while without a “teaching” tag. It’s only going to go downhill from here because every other post will be about new bags or something.

Computer Science Appreciation

Some time last year my boss and I were discussing the possibility of adding computer science classes to our curriculum. One of the things we talked about is how much computer science should someone know before they go out and get a job in the “real world”? Should they all know how to implement quicksort and know a stack from a queue? Or should they all know binary and hexadecimal and maybe some RPN and Lisp?

I’m paraphrasing and simplifying here: her opinion is that a college graduate should know enough computer science to know how hard computer science is.

And I completely agree with it.

If you are considered proficient in some computer-related task—not just programming, but perhaps web design, graphic design, making Excel pivot tables, or even typesetting a letterhead in Microsoft Word—you probably had a supervisor or manager who at some point grossly underestimated the amount of time you need for a project. For example, think of an editor who “needs” 300 photos edited in a day or a manager who thinks that writing a custom PHP/mySQL payroll system from scratch takes a day or two. (Note to previous employer: I’m not saying you’re an idiot. In fact, you aren’t. I’m just using that payroll system as an example because I know how much work went into it.)

The problem is that, just like a flying car or Jesus turning water into wine, a computer is a magical box that can do things instantly with pixie dust and ether to folks who don’t understand computers at all. It doesn’t help that folks who don’t dig into computers only sees the new, instant, fast things available to everyone. Twitter is instant, right? So computers are instant! Microsoft X lets you generate a Y in T seconds by using the Z Wizard, so shouldn’t creating a custom software package take a similar amount of time?

It’s easy to see that making a physical object like a painting or an automobile takes a lot of work. On a computer the work is not easily visible. The amount of time that goes into writing a program, for example, does not vary directly with the number of lines or characters. Lots of it go into planning, debugging, and just pure thinking.

Remember the post about that guy who wants a custom OS similar to Windows written in ten hours? It was floating around the Internet for a while. A visit to a site like The Daily WTF only confirms this trend.

Anyway, a good, mandatory, basic computer science education isn’t there to make sure everyone knows the difference between pointers and variables. It’s there to make sure everyone can appreciate the folks who do. Just like how elementary schools and middle schools take kids on field trips to see firefighters or construction workers at work—okay, at least they talk about what they do—a good high school or college education should include letting kids know exactly what goes on in the more abstract jobs of today. This does not include just programmers. I mean, do even half our high school students know exactly what scientists or actuaries or civil engineers do? Does anyone in the world know what hedge fund managers do? Do they even know what they’re doing?

Back to programming. Here’s a list of what I think a college graduate should know (either from being taught, or led to the discovery of) about computer science before she graduates and is allowed to interact with professional computer folks:

  1. The difference between 1, 10, 100, 1000, 10000, etc. people-hour jobs. She should know that implementing a quick formula and running a table of numbers takes an hour or two. Maybe writing a custom web app takes a team of four a week. And she needs to know what kinds of projects will bankrupt the company if they actually did it in-house.
  2. What computers cannot do easily. She doesn’t need to know the difference between O(log n) and O(2^n) or what NP-complete means. But she needs to know that while cropping 5,000 photos by the same amount in the same places is a quick Photoshop automation but it may be easier to hire a couple cheap interns than to write a piece of software to rate each image as PG or R.
  3. Nothing is perfect and no techno-buzzword is going to solve all your problems. Open source software does not mean no implementation cost. Web-based does not mean it’ll always be accessible. New versions of software introduce new bugs. Very simple sounding features can take a lot of time to implement for a variety of reasons and not all of them can be blamed on the people involved.
  4. Programming is a skilled trade; in fact, it’s hard. Just because it’s invisible, runs on the backend and doesn’t come with animated GIFs does not mean there’s no work. It’s not something that everyone can do and programmers deserve respect and time like everyone else. Remember the time they made you program in college? Glad you don’t have to do it again? Good.

Anything else you can think of that would be lessons that a “computer science appreciation” curriculum should teach? Not that I’ll implement this any time in the near future (why shouldn’t I, though…) but it’s nice to just have this list floating around in my head.