Top 10 Concepts That Every Software Engineer Should Know

Check out Top 10 Concepts That Every Software Engineer Should Know. The key point here is concepts. These are (arguably) part of the foundation that all good software engineers should have:

  1. Interfaces
  2. Conventions and Templates
  3. Layering
  4. Algorithmic Complexity
  5. Hashing
  6. Caching
  7. Concurrency
  8. Cloud Computing
  9. Security
  10. Relational Databases

From a practical point of view, this still comes down to a Selecting Books About Programming issue. This list is just more focused on specific software technologies and techniques.

So many books, so little time...

UPDATE (7/30/08):

Here's a career related post with some good advice: Becoming a Better Developer.  Learn a New Technology Each Month (#5) seems like a little much. I guess it depends on what your definition of "learn" is.

One Response to “Top 10 Concepts That Every Software Engineer Should Know”

  1. andy says:

    Strange list really, as it contains elements from all over the place. While I agree with most of the elements on the list and they seem to be a haphazard sum up of general topics of a CS Master (or even Bachelor) I cannot really see what Cloud Computing (and a so wide concept as security) does on a list of more fundamental and age old concepts such as hashing, interfaces and layering…

    Saying you should know about security is like saying “we should write bug free software”. Nobody strives for bad security, but security can be implemented in a multitude of ways (more than possible to describe really, from physical lock and key to organisational policies…)

Leave a Reply