Showing posts with label education. Show all posts
Showing posts with label education. Show all posts

30 November 2013

The faculty fallacy -- how university education confounds pleasure and applicability and miseducates millions

Whenever I see a fresh university graduate struggle to find a job I feel sad. The choice of university program to take seems so easy and seamless for someone who just graduated from High School. Many students will just think of their grade school subject which they liked the most and study that. So easy back then! Such a nice transition.
But once education is over and young people have to choose an actual career, things can be way harder for them. Of course, some university programs have a strong connection to practice and lead directly to a certain kind of job or group of jobs. But there are other programs where the mapping is harder and jobs often require a range of skills which are not covered by the university program at all. And then there are programs which could lead to a whole lot of different jobs and besides needing some decision or commitment to a certain area they also often need additional skills and training which the university program doesn't provide. Often students just have to learn really important things during internships because there is just no course on it. (And I am talking of skills that are actually teachable in courses. It's simply that academia is not interested in teaching those important skills.) Even worse, there are programs which lead to a certain group of jobs, but the number of jobs available in the area is consistently and gapingly smaller than the number of students educated in that field. The gap is sometimes and order of magnitude. And this has been so for decades without anybody fixing it.

Old universities still have structure that too much resembles their medieval (and pre-medieval!) roots than their presumed contemporary purpose. When the first universities were founded, their purpose was not prepare the majority of young people for their adult professional life, but they were educating a small minority of people of the upper classes who didn't need to work. Only later they started "professional education" for theologians and lawyers. But, on the other hand, "liberal arts" and the "humanities" in particular are still to a large extend based on an education ideal of the leisure class from two thousand years ago.

A recent McKinsey report found that a large proportion of college graduates feel "overqualified and underprepared" at the same time. Many students even from the top 100 universities "couldn't get a job in their chosen field". For liberal arts graduates the report blandly states that "they fare worse than average in all measures". In my opinion the reason for this is very simple:

  • universities teach a lot of not-very-useful things
  • universities don't teach a lot of very important skills (especially soft skills like self-management, project management, interpersonal communication, holding meetings, ...)
  • the catalog of courses of a university mentions highly practicably applicable courses (like medicine, most or all kinds of engineering, marketing, law, ...) next to courses who don't have any direct (or even just not any) application in professional life. There is no warning sign for the latter kind of courses!
I think the fact of mixing professional classes like the ones mentioned with leisure-and-passion type classes like literature, fine arts, and music is not necessary a problem per se. Aesthetics and beauty are part of being human and there is nothing wrong with that kind of beauty flourishing at universities. But what would be fair towards all the hopeful young people who enter university is to tell them clearly which courses have professional value and which ones mainly serve the spirits. 
Of course, it is possible to study music or literature and later make a living as a musician or a writer. But for the majority of music-making or fiction-writing people, this art will rather be a hobby than a profession. And it might all be fair and right that universities don't just prepare for the work life, but also prepare for a good human life by teaching some good hobbies and high-cultured pass-times. If you think that those intellectual subjects teach at least some critical thinking skills then that's wrong for about half of the students according to a studies explained in a book which is aptly called "Academically Adrift". 
The problem with the current system is simply that those hobbies are listed right next to the professional courses with the effect that our society is in the double-crises of lacking professionals in fields like engineering, medicine, and leadership, while at the same time being confronted with tens of thousands of arts majors of whom only a fraction can actually make a living of their original education while most of the others (according to the Kinsey study) end up "in restaurants and retail".

PS: If you're interested in alternatives to the current broken system, UnCollege seems to be a promising one. Forgo college until it is fixed ;-)

shadow internships -- do nothing, learn more

Everybody knows the joke about the office intern who mostly makes coffee for people and copies and carries papers around because they're lacking the skills and the experience and knowledge about the specific company to do any real work. And nobody at the company wants to spend the time to teach them.
Here's a proposed improvement to that situation: to train your intern just let them become your shadow. Don't let them do anything. Just let the watch and hear everything. There should be some occasional explaining, but not too much and always making use of the context to keep it short. If you keep your intern that way, without any expectations to accomplish anything except for learning and understanding, they will soon become helpful with real work tasks. For example, one great use for an intern trained in this way is as a discussion partner when you need to verbalize some thoughts in order to think them more effectively. Maybe the intern won't be able to contribute anything to the discussion. But it will still help you think. And it will help them learn.
Even when your intern will be able to do real work by themselves, it will be very helpful to keep them shadowing you or someone else regularly. To learn new things. To keep up to date with the progress of the project. To be right there when the context enable to teach an important lesson with very few words.
Let there be more shadow internships and less interns sitting in corners working on small independent projects!

18 August 2009

What Donald Knuth thinks is worth working on.

From an interview with the Free Software Magazine:

Maybe you feel that some of today’s technologies are still unsatisfactory. If you weren’t busy writing your masterpieces, what technology would you try to revolutionize and in what way?

Well certainly I would try to work for world peace and justice. I tend to think of myself as a citizen of the world; I am pleasantly excited when I see the world getting smaller and people of different cultures working together and respecting their differences. Conversely I am distressed when I learn about deep-seated hatred or when I see people exploiting others or shoving them around pre-emptively.

In what way could the desired revolution come about? Who knows… but I suspect that “Engineers Without Borders” are closer than anybody else to a working strategy by which geeks like me could help.
I totally agree with Prof. Knuth on this!

Maybe the innovations that we need today are more social than they are technological. After all, we all have food, shelter, readily available medical care, and an internet connection. The next thing we'd need is peace and happiness!

11 July 2009

learn to drive before you build a car, learn to read before you write

Although Computer Science as an education is widely available since several decades, many software-development- and in particular programming-jobs are still done by people with a different educational background. Computer Science (CS) departments are struggling to attract as many students as there is demand for educated Computer Scientists, but it seems that the more students they attract (on top of those who would take CS anyways), the more students will fail during their studies. While recruiters say "we need more graduates with CS degrees", professors whine "we are accepting to many students that have no talent."
In programming in particular there seems to be a divide between programming nerds who just seem to understand programming to a point of completing their assignments, while some others always seem to be estrange to programming and struggle even with simple assignments as soon as some variation into problems is introduced. The question which I want to write about here is: how can we teach programming in a way that helps all students?

I have been helping out with teaching programming since I was an undergrad myself. Seeing how awful student programs looked in the first year I helped with the programming lab, I decided to publish some of the best assignment solutions so that the students would have an example to imitate and an idea of how elegant programming solutions can be. Assignment submissions got much better in the second year!

Since that time, Pascal as a beginner's language has been replaced by Java, and Java by Python, but the problems are still the same. I asked one student with a particularly awful program where she he learned the particular construct which she was abusing there. "Oh, that's from my high school teacher."

When after more than half the course was over, the instructor finally taught students about testing. At that point, I started realizing one of the things that went wrong from the beginning: in our course, students were mostly taught to program little functions, but they were never taught how to use those functions properly and how to test them. I could write an entire blog post on the "test first" paradigm of programming, especially it's important in languages like Python which have no static checking whatsoever. But here, let's concentrate on something more fundamental: the actual understanding of programs, what they do, and how they work.

Most students seem to learn by example and the only official good examples of programs that they see in a typical university course are code snippets small enough to fit on a single lecture slide! Given that material, they are supposed to write entire programs with interworking parts. If I contrast that approach with other disciplines of writing, it just seems ridiculous! In literature, students will read entire novels plus probably some secondary literature, before they write essays of their own. In science, students will read a couple of text books plus tens of journal articles before composing a paper of their own. Furthermore, the first writings of students are usually of secondary nature themselves: summarizing, interpreting, or commenting on some primary work (i.e. an essay about a novel, or a paper about some previously published scientific findings). In programming on the other hand, students will get no reading material, and they have to compose primary works starting from their first labs and assignments!

Here are some ideas how to improve this deplorable situation.
  • A large part of the exercises and assignments has to be devoted to reading and understanding programs that have been hand-selected by the instructor as examples of good programming.
  • Possible exercises which train this are: writing documentation for a given (substantial) piece of code, writing test cases for a given program, write an example use for a given program module, and finally, extend a given program by a small feature.
  • Writing of documentation has to be split into external (what does it do) and internal (how does it work).
  • Testing can first be done for a programm that works according to its documentation, and as soon as the students can do this well, let them test and debug an incorrect (but still well-designed!) program.
The important part about all this, is that students have to read and really understand a large corpus of existing code that has specifically been chosen for its good design. Students will then appreciate how easy it is to understand, extend, and debug really well-written code. They will also see how the different programming constructs they know from lectures are best fit together.

I don't know how many of our field's education problems this approach to teaching is going to solve. But I am sure this is the way to go!