20 +2 Subjects Every Software Engineer Should Know … and the books you need

I recently read an extremely interesting and useful article about the 20 subjects that every software engineer should know or learn….
What is really cool is that it’s not restricted to products, languages but it describes generally accpepted technologies, methodologies and practices.
It applies both to  junior and exeperienced software engineers. The former have a guideline about the fields that need to focus whereas the latter have the chance to re-evaluate their knowledge.
What’s missing, IMHO, is to give the reader a clue about which are the best book(s) related to these subjects so in this post I give my advices on that. Of course the list of books is not complete and it’s just my opinion based on my experience.

Hope you find it useful as well!

1. Object oriented analysis & design

2. Software quality factors

3. Data structures & algorithms: Basic data structures like array, list, stack, tree, map, set etc. and useful algorithms are vital for software development. Their logical structure should be known.
6. Software processes and metrics
8. Operating systems basics
10. Network basics
13. Dependency management
15. ORM (Object relational mapping)
18. Internationalization (i18n)

9 comments

[…] I recently read an extremely interesting and useful article about the 20 subjects that every software engineer should know or learn…. What is really cool is that it’s not restricted to …  […]

[…] A story about Acceptance Criteria and a medical procedure to help your #Agile team || @scoopit bit.ly/NHMnRO #agiledev 2 hours ago Follow @ppapapetrou76 « 20 +2 Subjects Every Software Engineer Should Know … and the books you need […]

So I guess functional programming shouldn’t be considered a suitable topic for a “software engineer” then?

That’s a nice thought. I don’t have the answer actually 🙂 My question is which is more importand OO or functional programming? Which is hardest to learn first? Does OO programming let you easily learn functional programming? Is functional programming so much “famous” ?

Functional is definitely easier first, and this classic needs to be on any list of “essential” books for programmers: http://mitpress.mit.edu/sicp/full-text/book/book.html

It comes as quite a culture shock when you finally come to realise that many design patterns and practices that evolved since Pascal/C++ are just workarounds for not having functions as a first-class concepts in a programming language.

I would add one that only a few know about:

“LISP: A Gentle Introduction to Symbolic Computation”. It explains one of the best languages in the world, and it also explains some very basic concepts in programming in a very smart way (including recursion, which, according to my experience, is one of the most complicated concepts to explain to wannabe programmers).

Thanks a lot for your contribution Fadi!

[…] I recently read an extremely interesting and useful article about the 20 subjects that every software engineer should know or learn…. What is really cool is that it’s not restricted to …  […]

[…] I recently read an extremely interesting and useful article about the 20 subjects that every software engineer should know or learn…. What is really cool is that it’s not restricted to …  […]

Leave a reply