We live in interesting times where many people think that a university degree entitles them to preferential treatment and a highly paid job. I guess our education system is partly to blame for this what with all the advertising which tells us that without education we stand no hope of getting a good job.
Education is important. There is no arguing about that. I believe that education is the corner stone of any civilized society. However, in my mind, an institution of higher learning, such as a university is not a vocational institution. The role of a university is not to equip its graduates with vocational skills. The primary role of a university is to better the humanity and enrich the society by furthering research in arts and sciences. Through the study of arts and sciences, graduates are equipped with an array of mental skills which will help them for the rest of their lives.
Keeping my intro in mind let’s now look at a typical Computer Science graduate. Young, full of energy, idealistic and… quite naive. So far this could describe pretty much any fresh graduate but many comp sci graduates also seem to think that they know it all. Most of them are under the impression that just because they wrote some clever code for one of their assignments they know how to develop real software. This couldn’t be further from the truth. I know this because I used to be one of those graduates.
So in the spirit of passing on my experience so that those who come after me don’t have to suffer, I would like to offer some reflections to all comp sci graduates who are about to apply for a job with any hi-tech company:
-
Don’t get upset when people with years of experience assume that you might not know something that they know. Knowledge comes with time and experience. Use your research and learning skills to show them that while you may not know it all you know how to learn about it.
-
Don’t think that what you’ve been taught at the university is immediately practical. This is especially true of programming tools and languages which you have studied. Most of those have been carefully chosen to illustrate certain points and techniques. There is much more that you will have to learn. In particular you won’t be able to solve all problems with just one language. Learn from other professions and use the right set tools for the job.
-
Last, but certainly not least, we come to the point of professionalism. It is the ability to do what is required, in a timely manner, to the best of your ability without loosing your cool. This is much harder than you think and it’s not something that you can study at a university. It is something which you need to foster and develop in yourself through conscious daily application. Only once you had to butt heads with your colleagues or your boss, only when you’ve missed deadlines and taken responsibility for your own or even other people’s mistakes, only then will you really know how hard it is to be a professional.
To close this post, I would like to present to you in no particular order a general list of what I consider essential technologies and skills in any programming job:
- Object Oriented design
- Regular expressions (Perl kind)
- Python and/or Ruby for general programming
- C++ for performance-critical sections of your code
- Debuggers
- Google
- Great music