Thursday 15 July 2010

Computer Science Degree (VS) Programmer

While browsing stackoverflow.com I passed by a computer science fresh graduate complaint. "Basically I'm graduating with a Computer Science degree but I don't feel like I've learned how to program", he said. I was not surprised because this is the case with most computer science graduates! As a consequence, he cannot find a job, "I'm struggling to find work and am starting to get really frustrated". Then he shows more of his problem when saying: "I've worked hard but don't have the confidence to go out on my own and write my own app". This summarizes his long question. I will discuss his complaint and will light some of the useful comments submitted there. The question and the answers can be found here.

What are the reasons behind that? One of the posts summarizes the fact, it says: "The trouble with school [university] is that the most complicated thing you did there was a project that took 15 weeks to a year and involved a couple other people. The problem domain was well-understood (your professor didn't give you any tasks that didn't fit neatly into your semester). This is not a luxury the real world affords". I believe that I agree with him, I will say it another way: Universities don't throw students between unfamiliar problems leaving them alone to deal with them. Homeworks are always from the last couple of lessons and are similar to something explained inside the lecture. Course projects are not too involved in new things, most of them are within the specific narrow field that the course talks about. Many simple graduation projects pass, and teachers are usually available to solve problems that face students. This is really: "not a luxury the real world affords".

The best solution is what most of the experienced developers suggested to this questioner. It involves two parts: (1) Build your own project and (2) keep learning all the time. Let me light on these two spots now.

(1) Build your own project
Build your own project in your free time. Build it alone because this project aims at developing YOUR own programming skills. When I say "alone" I don't mean that you shouldn't ask, but even when you ask, try to ask non-human resources more, go to the documentations, books, datasheets, the internet ... etc at first, then ask humans.

An important question arises here, what is the best project that I can do? It depends on your current position. If you are a student then most probably you will be asked to build some projects in your courses. These projects are very very very good fields to develop your programming skills. Choose at least one project per semester and do it much more bigger than your teacher wants. Think of any possible extra features and implement them in your project. When you want to add something to your project think of something that you don't feel you know, something new and somehow hard. DON'T forget to make a backup of the well-done project before adding these features so if this extra feature doesn't work, you simply have something to give the teacher.

If you have already graduated then you can either build on one of the projects that you have already done at university time, or start a new challenging project in which you might not know where to start.

(2) Keep learning all the time
I may talk about this in another post later, now this one is long enough :)

To conclude, the university doesn't FORCE you to be a programmer, but it NEVER PREVENTS you from that! Your time is your property and you can develop yourself at home with the help of the internet. Many teachers will encourage you when you boost your course projects. Some teachers are frustrating but you never work for their interest, you work for yourself, so don't be frustrated! If don't work hard to be a programmer, your computer science (or engineering) degree will not hire you as a programmer.


9 comments:

  1. If you agree or disagree or have anything to say, feel free to post here :)

    ReplyDelete
  2. I totally agree with you in what you have said last.Even if you got the highest grades that doesn't mean that you are a programmer. Grades mean nothing in the real world. So you have to practice and practice .... And as I always tell my fellows "Knowing the rules doesn't make you a player" -actually this quote is mine :P- so memorizing the syntax or some snaps of code are not the correct way , you must study in a dynamic way in order to be able to mix what you have learnt with each other to invent new features .... but that doesn't mean that i put the biggest part of this problem on our schools

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Good one Basel, although the title is misleading.
    I do agree with most of what you said but I'd like to add something I expected to see in your post when I first looked into the title. People should understand that CS is not programming. Programming itself is not a specialization, it's how we let a computer do things. So people from all disciplines of science, including CS, can do programming to get their problems solved. That's why an average CS or Computer Engineering student doesn't graduate with enough programming experience

    ReplyDelete
  5. @Ghassan Sela : nice qoute "Knowing the rules doesn't make you a player" this matches with the case here.
    I don't blame schools as much as I blame students. This guy who wrote the question is (I think) American. And many of the replies are by Americans who seem to admit that this is a general issue that they have too!!

    ReplyDelete
  6. @Fuad : Maybe that was the meaning that came to your mind!! And I would thank you for a nice idea for a new post later maybe ;)

    The title matches with the issue I have presented here as well as with the thing that came to your mind, sorry for misleading ;)

    And yes, "an average CS or Computer Engineering student doesn't graduate with enough programming experience". You are totally right.

    ReplyDelete
  7. i think school gives concepts of how things works then learning the tools is up to us and do do do do do do do do projects is the best way always try

    ReplyDelete
  8. i totally agree with you,although id like to add,if a student/fresh graduate can find a mentor to help them find their way into programming it would be much efficient use of their time, a well experienced system analyst/QA engineer can lead them to discover what programming field they're better in.

    ReplyDelete
  9. well, Ahmad

    Can you provide us with a link or something??
    Can you recommend us with something here?

    ReplyDelete