Why Should Software Engineers Read Books Even in the Future?
BY MARKUS SPRUNCK
Twenty years ago - when I started with software development - the only way to learn software engineering was to buy & read books, take lectures at university and/or attend expensive commercial training. During the last 10 years this changed completely. Today, almost everything can be found in the internet and this mainly for free. So, "Why should a software engineer still buy and read expensive books?"
The Jungle Metapher
Learning a new technology, library, programming language, tool and working with a new large code base is like being cast away somewhere in an unknown jungle.
In the first place, you see just land covered with dense vegetation. By the time you discover different sources for foot, small trees, clean water and shelter for the night. For sure there will be dangerous animals, pitfalls and toxic vegetation.
Anyway, it is very helpful to have a good map of the jungle, a compass and a book about things-you-should-do-to-survive. This book may have the title 'The Wilderness Survival Guide'. For some basic skills like martial arts or a good level of fitness you may need years of practise.
Unfortunately, you may starve to death before you have had time to read this 'The Wilderness Survival Guide'. You need some skills before you realize it. When you face a poisonous spider you may not have time to google how to escape (even if you have a mobile and an internet connection - what is not very likely).
The same principles are true for your daily work as a software engineer. In a meeting with clients, your project team and/or some architects, it is usually not possible to say: "Excuse me for 15 minutes, I'd like to google some basics." This does not mean that you have to know everything, but you should have at least a wide knowledge about fundamental principles.
What Kind of Books Should a Software Engineer Read?
Reading a good software engineering book gives you a comprehensive overview about a complete topic and/or understanding of fundamental concepts. The following Books are - according to my opinion - in the category good-software-engineering-book:
- The Algorithm Design Manual ($74.72; 746 pages),
- Code Complete ($27.89; 960 pages),
- Software Requirements ($26.04; 730 pages),
- The Practice of Programming ($32.60; 288 pages),
- The C++ Programming Language ($60.73; 1030 pages),
- Numerical Recipes 3rd Edition: The Art of Scientific Computing ($78.17; 1256 pages),
- Design Patterns: Elements of Reusable Object-Oriented Software ($47.99; 416 pages),
- Waltzing With Bears: Managing Risk on Software Projects ($26.55; 144 pages),
- Rapid Development: Taming Wild Software Schedules ($22.39; 680 pages),
- The Mythical Man-Month: Essays on Software Engineering ($28.75; 336 pages),
- Effective Java ($39.28; 346 pages).
Good software engineering books are not cheap. The prise for all books mentioned above is $465.11, but you get 6932 pages of high quality knowlege. This makes about 6 Cent per page and for the same amount you would get just one or two days classroom training.
Additionally you have to invest your personal time:
- 6932 pages to read,
- With 250 words per page,
- When reading 200 words per minute
- This results in 144 hours reading for all the 11 books.
Not everything what you read will be interesting and/or helpful for your current situation, but you will remember even years later what you read about and you will find it again. The most important aspect is that you get a broader overview (of the jungle).
Drawbacks of Digital Sources
You may say: "I can get all what I need in the internet." That is correct, you may find everything for free in free blogs, e-books or open lectures from top universities.
To find an optimal solution you should try to find a global optimum. Google will give in most cases a fast answer for a problem, but it is not sure that this will be the best possible one. The pure hill-climber-approach traps quite often in a local optimum. It is important to know more - sometimes a lot more - to find a global optimum.
Blogs have no lectors and/or peer reviewers. Everybody can write without any quality assurance. Even what you read in this article could be absolute nonsense (it's up to you to decide).
- Buy good books - it makes sense to read best quality with more attention. Avoid books with titles like 'XYZ in 7 Days' or 'ABC Version 4.1.3 Explained' or 'zzz by Example'. Some of them are good, but the majority is mass-produced goods.
- If you do not have the money - go into a old fashioned library and/or share book with peers. Most of the really good books are quite old (but still helpful). You can buy them second hand or as earlier editions.