Things that you should learn at college

Ok, so this one goes out to all the sorry asses (like me) that were really clueless at the time of their college education not to take some of the appropriate education courses and feel like they miss some key points in their workshop. You can go ahead and think that once you have a nice job and all that it is not necessary anymore to learn new stuff, but I believe that equipping yourself with appropriate tools of the trade is really going to get you far. Anyhow, whatever language you are coding in there are several things that may come in handy one time or another. Of course the essential skills for a software developer are perhaps not among these, but still:

  1. Compilers. You really need to get this one – is will at least let you realize, that parsing stuff with regexes is not the best choice for many reasons. You do not have to invent your own language, mind you, just get the grasp of how the parsers work and perhaps implement just the parser (not the compiler). It’ll help you solve some problems that seem to be unrelated at the first glance
  2. Data structures and algorithms. This one is essential as well, since you should at least have a clue about the underlying mechanisms of hash tables, lists, trees and similar data structures. Also, some performance issues that you occasionaly run into come from these things.
  3. OO. OK, this may seem trivial – essentially every cs curriculum includes object orientation, doesn’t it? Yeah, but modelling things in terms of objects is not as easy as it seems (at least for some of the programmers that I have met on my way…)
  4. C course – well, this should have been a number 1 thing. Joel is right – some of the people just do not have the part of the brain that understands pointers. And if you can’t get that, you CANNOT be a good programmer (despite what Jeff Atwood says – he would probably get it anyway). This is not really a necessary skill now, since the modern languages abstract these kinds of things away from you, but it is a good test of your aptitude towards being a decent developer (ability to think on several levels of abstraction at the same time, ability to switch context etc). People that do not get pointers end up as managers 🙂
  5. Datatbases – no need to elaborate on that one.
  6. Shell scripting.
  7. Some busisess course, marketing and related issues. How many geeks have you met that cannot communicate with the outside world? This should also be a necessary skill for a developer. Autistic kids are really hard to work with… And this especially important in large organisations. You actually have to sell either yourself, your team or your work. It usually helps to comprehend what the developers call “the politics” and which it really is, but after learnign something about that stuff, you can at least somewhat understand why the “business people” do what they do.
  8. Typing – is this something that you can learn at college? Or perhaps in your spare time in college… That’s it! College time is when I really had time for this stuff. And sadly now I miss on typing a bit, but still trying to catch up with my skills (as with the rest of the list).

Do you have any thoughts on this?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: