I have a history of web development using LAMP + html/css (though I admit the LAMP aspect isn't in great depth) and would like to follow the career path of software developer, so I'm currently learning C, after which I'll look at C++.

I was wondering if anybody could give me a list of subject area's within computer programming as a whole that are important to fully understand, right through to a 'senior' level of career progression?

Obviously I know it's the mindset and knowing when to use various techniques that makes a good programmer, but you have to start somewhere!

By topic areas I mean for examples:

  • Data types
  • Variables
  • Functions
  • OO
  • etc.

Many thanks.

  • 3
    I'd observe that if you want to learn C++, it's best to do it straight off, without learning C in the interim. C++ can do everything C can and more, and it's much easier to use. – Neil Butterworth Jun 15 '11 at 11:15
  • 4
    C++ easier to use than C? I beg to differ. – user281377 Jun 15 '11 at 11:17
  • 2
    It isn't easy to come up with a global list, as the skills you need vary quite a lot depending on the type of apps you want to code. For example, many business apps are database dependent, whereas games tend to be less so. – Kramii Jun 15 '11 at 11:20
  • 1
    Learn as much of the descrete mathematics as you can. Fundamental knowledge is always useful, whereas you can pick the practical tricks just as you go. – SK-logic Jun 15 '11 at 11:25
  • Well, I've been learning C for ~1 week and by the 3rd day I could write a word counting program. I'll let you know how long it takes me when I get round to C++ lol. – Anonymous Jun 15 '11 at 12:20

Apart from the concept of a Von Neumann architecture, I'm not sure there are any "global" concepts. Certainly, the way an assembly language programmer thinks about the world is going to be radically different from how a Haskell programmer does.


I'm going to be a sophomore in college, but here are some things I picked up from stack exchange that they don't teach in school but that I learned from this site:

  1. Refactoring
  2. Unit Testing
  3. Source/version Control
  4. Understanding Design Patterns

Having an understandable style, commenting well, and understanding how to work in a team are all important aspects of the profession but not necessarily CS theory. If you want to learn the fundamentals, I'd say go to MIT OCW and look at their CS curriculum and go through the classes to learn the important topics.

Principles of Data Structures using C and C++ by Vinu V Das (or any book that sounds like that) will be great to learn data structures and algorithms from. Read some good books like the Pragmatic Programmer and Code Complete so that you have good habits on top of a solid theoretical foundation.

Not the answer you're looking for? Browse other questions tagged or ask your own question.