I had a couple of coming togethers of things recently that made me start to wonder and then become a post.
It started innocently enough; a student wanted to know some advice for post-secondary plans in computer science. The student shared his experience with a few of the languages that he knew. It was interesting and the passion is there.
I remember a couple of words of advice.
In my first year of Computer Science at the University of Waterloo
“Most of you will graduate from this university with a degree and will end up in a Computer Science job but very few of you will actually be programmers”
Later at a professional development day with a professor from the Faculty of Computer Science at the University of Windsor when a secondary school teacher asked what programming languages that we should be teaching in order to prepare the students for university.
“We don’t care what language you teach. We start with the basics of the language that we use and go from there. We might be using a particular language this year but might change next year so don’t try to keep pace. Just make sure your students know how to solve problems.”
I think they’re still great words of advice.
I do think that the student interested in programming has terrific options today.
- Join GIT to get involved in projects, even if it’s just to read source code written by others
- Get involved with a Linux distribution – understand open source and the opportunities that it affords developers
- Install an application development tool at home to develop personal programs
- Write a lot of little applications for personal enjoyment to extend what’s required in class – programming is fun – develop all kinds of algorithms
- Listen and read whenever Linus Torvalds speaks – never has access to a programmer with a vision on the big goal been easier – what better mentor
But there’s more.
This morning I read this article “Read the email a Google recruiter sent a job candidate to prepare him for the interview“. It’s a good read with lots of things to think about. One of the questions was NOT “Pull out your computer and write a Python program to do this”. Instead, it was things like this.
So, what’s a person supposed to do if they’re planning to study in this field?
I think there’s a great deal of advice in the above. The actual programming ability undoubtedly is important but is it the only thing?
By this point, I’m sure that you know that the answer is no.
It’s the other things.
- Can you solve a problem?
- Can you look at a system and understand how it works?
- Do you have an eye to the future?
- What’s trending and what will be the next big thing?
- Can you deal with people?
- Can you write documentation or support a piece of software?
- Can you work as a productive team member?
In the Computer Science classroom, where do these things fit?
Is the course so complete with all the time devoted to programming skills and techniques that these things are overlooked or minimalized?