This is intended as a response to a
post by Alan Skorkin - 3 Things They Should Have Taught In My Computer Science Degree. Aron brings up some interesting points, but I am convinced that while his points are valid, there are more important things to consider. Well, three things that are actually mentioned are:
- Open Source Development
- Agile and other methodologies
- Corporate Politics / Building relations.
Somehow at my school there was always more information and emphasis on Open Source. School had actually maintained couple of Open Source projects where students could participate freely. We had number of courses that deal with Linux, Perl and other things which are normally associated with Open Source. We were not pro-Microsoft, as a matter of fact, my C and C++ coding had to be done on a Unix machine, and it had to compile and run on Unix. Use of IDE was not promoted until we started C#. We had to use Vi or other editors available on Unix to code. I was too lazy to learn VI so I found Joe - a straight up text editor. We had great profs that were passionate about Open Source, for instance Cris Tyler, my Linux/Perl prof would spent lots of time with me trying to help me launch my first eCommerce site. He did it not for money, but because he understood the importance of getting young developers involved in actual coding.
We did not do any Agile on purpose, but for couple of projects, Raf and I had used Agile without even knowing about such thing. It was fun, Raf is a great developer. I don’t think that knowing programming methodologies would really help young developer. You go into a coding shop and you will learn and adapt to the way others work; I don’t think that schools should spend student time on this. It will come as soon as developer starts his first job.
Corporate Politics and Building Relations now this is something I can agree with Aron. Let’s face it, developers are not the most socially adapt bunch, it’s just the way most of us are and some training on how to deal with others would be very beneficial to a new developer.
I can add couple of things to the list - when I got my first programming job this was something that amazed me. I remember thinking that our assignments and projects at school were huge with tons of work involved. At times I thought - no, this can’t be right, this is just too much to do here. But after getting my fist project at work I realised that my definition of huge has to be changed. What we did at school was nothing compare to real world. I guess an experience with a “real life” project would be very beneficial to at least me as a college student.
Another thing was time management. Until I started working, I never truly realized how important time management was. You have a schedule and you must do everything you can to meet your deadlines. Because there are consequences, at times very harsh consequences. Once my employer had to re-schedule a user conference because coders did not meet dead lines and that was something we heard about for couple of years after.
My main point is there are bunch of things that CS students can benefit from, but they would vary from one student to the next. It is nearly impossible for any school to accommodate it all, so this responsibility of preparing yourself in a career in a real world falls on the student himself mostly, but hopefully schools will provide some guidance in this process.