Headlines for Saturday:


Priorities - A: high, B: medium, C: low; Status - _: unfinished, X: finished, C: cancelled, P: pending, o: in progress, >: delegated. Covey quadrants - Q1 & Q3: urgent, Q1 & Q2: important
AXWrite about past recommendations (mie1407f)
AXWrite conclusion (mie1407f)


1. Computer science: universities and technical/vocational schools

Categories: None -- Permalink
One of the things that always gets me on my soapbox is the complaint that universities' computer science curricula don't meet the needs of the real world because they don't teach the most popular language of the day or because they have classes on artificial intelligence rather than building e-commerce sites.

This frustrates me because people expect universities to be more like technical/vocational schools. They're different. They _should_ be.

Vocational schools are where you learn the skills you need for a job. They should be strongly industry-oriented. They should teach the most popular languages of the day. They should be specialized. People who are interested in web development should take a whole bunch of courses related to web development, while people interested in database management should take a whole bunch of courses related to database management. Vocational education should be short programs so that people can take them, learn new skills, and get into the workplace.

Universities are where you learn the skills you need for _life._ Universities should _not_ be too pressured by industry to teach the most popular languages or tools. Universities should be general, helping students develop skills that can be applied to any field--even fields outside computer science and information technology. Not everyone who takes computer science will go on to be a computer scientist, but the logic and pattern-recognition they learned in their computer science education should help them elsewhere.

Computer science should not be the only thing students learn in university. Students should learn mathematics, technical writing, business, and all of those other courses that don't seem to have any immediate use for a programmer. Why? Because each computer science graduate must have an appreciation for other fields. Computer science itself is a science that serves other fields, and university provides students with an excellent opportunity to take up electives in other areas.

Most computer science graduates might never write their own sorting routines out in the real world. Programming libraries have efficient implementations. Computer scientists should apply that knowledge to real life instead--for example, by teaching other people how to quick-sort by hand. That's what computer science teaches us: not how to program a computer, but rather how to program a _system_--and that system could involve both people and computers.

We bet that this education will pay off years and years down the road. Computer scientists should ask questions and dare to try the unknown. They should wonder if there are better ways of doing things, instead of just following the status quo. They are our ambassadors to new fields, using creativity and critical thinking to find ways to apply computers to new problems.

Vocational schools must prepare its students for work. Universities must prepare its students for the unknown.

Why hire a computer science graduate, then? If I'm just looking for programming experience, then most technical school graduates would probably be better than most computer science graduates, all other things being equal. But if I want someone who can wear many hats, I'd bet on computer science graduates. I'd take the chance that something in their education might give them insights into my business. I'd invest time in training them because technical knowledge can be taught. It's easy to cost-justify a short course on Java programming. It's harder to cost-justify a course on philosophy, which is really more about critical thinking and writing than it is about particular philosophers.

This is one of my causes. I want to do something about this confusion. I want to speak at high schools and help the students learn the difference between vocational schools and universities. I want to speak to vocational schools and universities to help them rethink or reposition themselves when they recruit students.

One of the reasons why it's so hard to differentiate vocational schools and universities is that quality is just _so_ variable. There are a few vocational schools that are pretty good and that even include a number of liberal subjects. There are many colleges and universities whose computer science curricula are almost the same as those of vocational schools. I hope better positioning clears this up, because as it stands, the confusion doesn't help anyone.

2. Conferences and Macs

Categories: None -- Permalink
Picture from Kevin Marks: Bloggercon

I'm seeing a _lot_ more Macs at tech conferences. Heck, I'd go for a Mac if they made them in the size I like (< 12", maybe around 10").

I think this is a Good Thing. =)

3. Teaching software engineering

Categories: None -- Permalink
Mario Carreon writes: <blockquote> Gosh though, one of the things i lack as a teacher is how software is developed in the "real world." It would be great if i could give a glimpse of what happens outside in my classes. </blockquote>

As much as students and professionals complain that teachers don't have enough industry experience, the reality is that most people with industry experience don't teach, and many teachers find themselves forced to teach pretty much anything the school needs them to do.

I taught software engineering before. We had no choice because the regular teacher was on sabbatical. I had to co-teach it with another, more experienced teacher. I handled C++ and design patterns, and he handled the management side.

I was _way_ out of my depth. It was a disservice to my students because I didn't have the war stories that an experienced teacher would have, but at the same time it was better than not offering the course at all. That was the semester I learned to make these compromises. That was also the semester I learned to make the most of my friends' stories about their lives outside the ivory tower.

It was the same in my decision support systems course. I've never built one, but by happy coincidence a new friend of mine had been the database administrator for a large bank that used data mining and expert systems with terabytes of data. I told his stories to my class, and I hope that gave them a little appreciation for the real-life applications for these things.

That's the only thing we teachers can do, I guess. It would be nice if we could work in the industry for a decade or two in order to gain experience, but even if we did that, we'd never get enough experience to teach all the things our schools ask us to do. We have to learn how to borrow bits and pieces of other people's lives, to collect insights from other people and to bring those insights into the classrooms. We are how people in the industry can teach hundreds and hundreds of people throughout the years.

So fellow teachers: reach out to the people in the industry. We need their stories. We need their experiences.

And for those of you in the industry: adopt teachers. Tell them your stories. Share your experiences. Tell them about the mistakes you've made, because they can help other people learn how to avoid repeating those mistakes.