views:

416

answers:

5

I've been talking to some computer science students lately who've asked me what they should know after university. They fear to have the wrong skills and knowledge to start a career in programming.

What do you consider essential skills and knowledge to get a good start into a programming career? What do companies demand?

Some other questions come to mind:

  • Is mathematics essential to programming?
  • How much theoretical computer science does one need to know?
  • Should one learn common programming languages, or does one need a foundation in other languages like Lisp or Haskell too, or what other languages?
  • To start a career, does one need a thorough understanding of computer hardware, ICs and physics or more?
  • How much ad what practical experience do you need to show a future employer?
  • How has the job market changed, because of the crisis and do you need to know more and be better to start a career?
A: 
  • Source control.
  • An OO language and a scripting language.
  • Communication skills.
compie
Why the heck was this voted down? Source control and scripting are both vitally important and often missing from the university curriculum.
Cybis
A: 

Communication skills would be right up there.

Haven't really answered your question though. I'm no expert by far, but I'm not sure mathematics, theoretical computer science and hardware are of that much value in the real-world, unless you're doing hardcore embedded systems or some such. But for most "business" applications I would have to say just good communication skills and a quick logical mind are enough. The best thing about university to me is that it teaches you to learn; speaking for myself, when I graduated from my course I didn't actually know anything of use. It's all about how you learn after that.

As for the effect of the economic crisis, couldn't say - we haven't been quite as hard-hit in Australia thankfully!

Gavin Schultz-Ohkubo
A: 

I feel that the ability to evolve your IT skills independently beyound what you have learned at university is the most important skill you need afterwards. In my opinion the study should first and foremost lay a good basement on which you can build further knowledge and skills.

For example, there is no point in learning all programming languages out there during your studies, it is more important that you learn a few plus a structured approach to learning new languages quickly.

Adrian Grigore
+3  A: 

What is important depends on whether you're going to work banking systems, mobile phone games, scientific software, web apps, or whatever. In my experience:

  • Basic math is important. Advanced topics are rarely needed.
  • Basic theory (data structures etc.) is a must, but again, advanced theoretical topics are rarely needed in practice.
  • I think it's more important to know real world languages (C++, Java) and libraries than the ones that are being used at theory classes.
  • Knowledge of hardware can be quite essential. It comes up every now and then, because your code runs on hardware, after all. You don't need to exactly know the physics of how a transistor works, but things like clocks, timings, buses - the ones next to your code - are important.
  • Even a modest actual project completed is more important in my eyes, than some degrees.
  • The importance of versatility and social skills are emphasized when times are harder.
Joonas Pulakka
+1  A: 

A few important things that leap to mind, in no particular order are:

  • The recognition that learning didn't stop after classes are over.
  • A mastery of the written word in a minimum of one living human language.
  • Enough public speaking skill to lead a technical discussion. More is better...
  • Enough math to know when to go find a mathematician.
  • Enough statistics to know when to go find a statistician.
  • Get at least some experience with real hardware: make a PIC blink an LED in morse code, or even better, recognize simple commands in morse code. It isn't critical that they like hardware, but they should at least know there are electrons being herded around by their code.
  • Read the source to at least one OS kernel. Any kernel, at any scale from RTOS to a desktop or server OS of your choice.
  • Basic knowledge of assembly language of at least one CPU, but more is better.
  • Enough knowledge of floating point to know that you don't know all the raw edges.
  • Mastery of some non-programming art or skill.
RBerteig