Although dozens of new framework or languages coming every year, there are time tested fundamentals in software development that will not change in the next decade. Here are the gems of classic & modern software development books every developer should read that will teach you how to become a better software engineer.
1.Clean Code: A Handbook of Agile Software Craftmanship
Writing code is easy, especially when your software size relatively small and you do it by yourself. Problems begin to arise when your software grows larger month by month and you are not the only one who responsible for the code.
You need a coding framework that can be easily followed by your peers and will make your codebase maintainable. If you are serious for writing maintainable code then you must read this masterpiece.
2. Code Complete : A Practical Handbook of Software Construction
One best gift world can give to a developer is a compilation of software development best practices. Steve McConnell’s wisdom has helped thousands software engineer around the world to write good code. With years of experiences, he presents priceless advice in coding. Read this one to level-up your software development skills.
3. Mythical Month Code
Most of the time, a large software development project needs careful planning to increase the success rate of project delivery. There are many myths in software development that existed for years. How many developers do you need to build X size project? Should we hire a couple more dev to speed up the project? etc. This book will help you to answer all of that question.
4. Working Effectively With Legacy Code
Dealing with hundreds of thousand of legacy code is not a pleasant thing, not forget to mention the “missing documentation”. Who knows the mystery resides in the codebase black hole. Believe me, I have been there and I wished I knew how the proper approach to maintaining the legacy code. While rewriting the entire code seems to be a shortcut to clear all the headache and move on to the next project, it’s not always the best approach.
5. Design Patterns
In the software development world, we often dealing with occurring problems, a similar problem that already solved with proven solutions by other developers. These solutions that we called design patterns will help the dev team to solves difficult problems more efficiently and effectively. In this book, you will find dozens of solution patterns for your large project and will teach you how to design codebase from a different perspective.
6. The Pragmatic Programmer : From Journeyman to Master
Another masterpiece, authored by Andrew Hunt & David Thomas share their pieces of knowledge on building development team, capturing real requirements, test code effectively and automation. Find best practices that will improve your team and projects quality in this book.
7. Refactoring: Improving the Design of Existing Code
I remember when I first wrote my code several years ago when I was a junior web developer. I was so confident and happy with the codebase, the program ran well, the goal achieved, nobody complained. Years later, I keep improving my coding skills, read good programming books like Code Complete and Refactoring, read other programmer Medium, dive into Stackoverflow golden questions and finally I enlighted.
When I re-read my code, I realize that I wrote awful code. The codebase was hard to maintain. I’m so grateful many programmers willing to share their experiences & insight on writing good code. If you still doubt whether you have written good code, check this book. You will get a nice perspective on evaluating your current codebase and help you to improve it.
8. Essential Scrum
According to Standish Group’s 2015 Annual CHAOS report, 66% of IT project tend to fail. A couple of years ago, when software engineering was still a newborn industry, the waterfall becomes widely accepted software development methodology.
Start with feasibility study, requirement analysis, solution design, implementation, testing and then hopefully accepted in UAT. But, the main weakness of this approach is the analyst must be able to capture all requirement in the requirement analysis phase by interviewing the users, reading documentation, etc. (like written on the college textbook).
Unfortunately real world business doesn’t work like that, there are full of uncertainty, ambiguities, business needs can change very dynamically. That’s why agile born. Agile has one main goal, to bring predictability in a software development project.
In this book, you will learn the main principles of scrum and if you are serious about managing your project, you won’t miss this one.
Constantly improving software development knowledge & skills is a golden rule to stay competitive in the software industry. I believe it’s a wise investment to devote several hours a month to learn new things. Good luck with your code craftmanship journey.