Codeweavers Recommended Reading 2018
It has been over a year since our last reading list and, although a lot of the classic books are still very relevant today, we have found some more useful blog posts, articles and books that you need to check out.
Similar to our last few recommended reading lists, every developer should read these classics, without exception, regardless of experience, or platform.
Clean Code A Handbook of Agile Software Craftsmanship - Robert C. Martin
An important read for all developers, Uncle Bob walks readers through a number of concepts and ideas to help you write better and cleaner code. Most of the concepts are simple and easy to apply, however, at times it's not the easiest of reads, with lots of code samples to get through, but I strongly recommend you stick with it. As the book progresses some of the examples are really worth your time and are more real world than many of the problems presented in other books.
Head First Design Patterns - Eric Freeman and Elisabeth Robson
I probably should have listed the original (and controversial) design patterns books by the Gang of Four but I find the Head First books fun to read. They differ from the normal text book with lots of images and varied formatting, although a little tricky to follow at times well worth it for the entertainment value. As for design patterns, whatever your feelings towards them, they are valuable concepts to be aware of that when applied correctly and confidently can help towards creating a robust system.
The Machine That Changed the World - James P. Womack
The Machine That Changed the World is a 1991 book based on the Massachusetts Institute of Technology's $5 million, five-year study on the future of the automobile, written by James P. Womack, Daniel T. Jones, and Daniel Roos.
Code Complete, 2nd Ed. - Steve McConnell
Widely considered one of the best practical guides to programming, Steve McConnell's original Code Complete has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices and hundreds of new code samples illustrating the art and science of software construction.
Refactoring - Martin Fowler
The bulk of this book is around seventy refactorings described in detail the motivation for doing them， mechanics of how to do them safely and a simple example.
Refactoring Workbook - William Wake
This example-driven workbook shows how to unleash the significant power of refactoring and improving your software. It aims to help identify where problems in a software application exist or are likely to exist.
Applying UML and Patterns, 3rd Ed. - Craig Larman
Good software starts with a good design, and the subtitle of Applying UML and Patterns, An Introduction to Object-Oriented Analysis and Design (OOA/D) and the Unified Process reinforces that that's what this book is about. The first edition of Applying UML and Patterns became a standard.
Object-Oriented Design Heuristics - Arthur Riel
Here is the first object-oriented development book to provide specific experience-based guidelines to help developers make the right design decisions. This book offers the next step for readers that know the basics of object-oriented development and now need to know if they are doing it right and making the right choices.
Perfect Reading Material For Students
These books help to move from focusing on the code to seeing the implementation from a higher viewpoint and improving the integrity of the project as a whole.
The Pragmatic Programmer - Andrew Hunt
The Pragmatic Programmer cuts through the increasing specialisation and technicalities of modern software development to examine the core process - taking a requirement and producing working, maintainable code that delights its users.
Patterns of Enterprise Application Architecture - Martin Fowler
The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered, object-oriented platforms, such as Java and .NET, have become commonplace.
Test-Driven Development - Kent Beck
Follows two TDD projects from start to finish, illustrating techniques programmers can use to increase the quality of their work. The examples are followed by references to the featured TDD patterns and refactorings.
Refactoring to Patterns - Joshua Kerievsky
In 1994, "Design Patterns" changed the landscape of object-oriented development by introducing classic solutions to recurring design problems. In 1999, "Refactoring" revolutionized design by introducing an effective process for improving code.
Develop Your Skills Further
These books move towards more "putting it all together", wrangling the software development process, and getting into the "science" behind computer science.
The Mythical Man-Month - Frederick Brooks
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system.
User Stories Applied by Mike Cohn
You’ll learn what makes a great user story, and what makes a bad one. You’ll discover practical ways to gather user stories，even when you can’t speak with your users. Then, once you’ve compiled your user stories, Cohn shows how to organize them, prioritize them, and use them for planning, management, and testing.
Agile Software Development or Agile Principles, Patterns, and Practices in C# - Robert Martin
Written by a software developer for software developers， this book is a unique collection of the latest software development methods.
Applying Domain-Driven Design and Patterns - Jimmy Nilsson
Patterns, Domain-Driven Design (DDD), and Test-Driven Development (TDD) enable architects and developers to create systems that are robust and maintainable. While the examples in this guide are in C# and .NET, the principles can be used by developers using any language and IDE.
Rapid Development by Steve McConnell
A fundamental software engineering project management guide based on the practical requirements of "Taming Wild Software Schedules". Emphasizes possible, realistic and "best practice" approaches for managers， technical leads and self-managed teams.
Extreme Programming Explained, 2nd Ed. by Kent Beck
In this second edition of Extreme Programming Explained, Kent Beck organizes and presents five years' worth of experiences, growth, and change revolving around XP.
Management with Scrum by Ken Schwaber
The rules and practices for Scrum - a simple process for managing complex projects - are few, straightforward, and easy to learn.
Introduction to Algorithms by Thomas Cormen
This title covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study.
Learn To Master The Art
These texts help hone your skills along with improving the efficiency and effectiveness of your team.
Domain Driven Design - Eric Evans
With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.
Working Effectively with Legacy Code - Michael Feathers
Get more out of your legacy systems, more performance, functionality, reliability, and manageability.
Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.
Agile Estimating and Planning - Mike Cohn
Agile Estimating and Planning is the definitive, practical guide to estimating and planning agile projects. In the book, Agile Alliance co-founder Mike Cohn discusses the philosophy of the agile estimate and planning, and shows you exactly how to get the job done with real-world examples and case studies. This book is a must-have agile estimation tool for your development toolbox.
Lean Software Development - Mary Poppendiecks
This remarkable book combines practical advice, ready-to-use techniques, and a deep understanding of why this is the right way to develop software.
Perfect The Art
Although not to be seen as compulsory as the above texts, what follows will assist in taking you into the realm of pure computer science. At the very least, they serve to demonstrate that our work has solid foundations in quantitative science.
The Art of Computer Programming, Volume 1 Fundamental Algorithms, 3rd Ed. - Donald Knuth
The first revision of this third volume is the most comprehensive survey of classical computer techniques for sorting and searching.
Concrete Mathematics A Foundation for Computer Science - Ronald L. Graham, Donal Knuth and Oren Patashnik
This book introduces the mathematics that supports advanced computer programming and the analysis of algorithms. The primary aim of its well-known authors is to provide a solid and relevant base of mathematical skills.
More Reading Material
We have also included a list of some additional reading material not strictly focusing in on developer material.
Deep Work - Cal Newport
Deep work is the ability to focus without distraction on a cognitively demanding task. It's a skill that allows you to quickly master complicated information and produce better results in less time. Deep work will make you better at what you do and provide the sense of true fulfillment that comes from craftsmanship.
How to Win Friends and Influence People - Dale Carnegie
In today’s world, where more and more of our communication takes place across wires and screens, Carnegie’s lessons have not only lasted but become all the more critical. Though he never could have predicted technology’s trajectory, Carnegie proves a wise and helpful teacher in this digital landscape.
The One Thing The Surprisingly Simple Truth Behind Extraordinary Results - Gary Keller
The One Thing explains the success habit to overcome the six lies that block our success, beat the seven thieves that steal time, and leverage the laws of purpose, priority, and productivity.
Grokking Algorithms - Aditya Y. Bhargava
An algorithm is nothing more than a step-by-step procedure for solving a problem. The algorithms you'll use most often as a programmer have already been discovered, tested, and proven. If you want to take a hard pass on Knuth's brilliant but impenetrable theories and the dense multi-page proofs you'll find in most textbooks， this is the book for you.
Elegant Objects - Yegor Bugayenko
This book is about object-oriented programming from an idealistic and, maybe, a bit of a futuristic point of view. There are 23 independent recommendations for a practical OOP designer on how to make code cleaner, classes more solid, and architecture more visible.
The Imposter's Handbook - Rob Conery
You've had to learn on the job. New languages, new frameworks, new ways of doing things - a constant struggle just to stay current in the industry. This left no time to learn the foundational concepts and skills that come with a degree in Computer Science.
Agile Testing A Practical Guide for Testers and Agile Teams - Lisa Crispin
Testing is a key component of agile development. The widespread adoption of agile methods has brought the need for effective testing into the limelight, and agile projects have transformed the role of testers. Much of a tester's function, however, remains largely misunderstood. What is the true role of a tester?
Marketing Reading Material
A new edition in this years reading list, we have decided to include some of our favourite Marketing books.
The Dip - Seth Godin
A little book with a big idea, "The Dip" reveals that the system is stacked against the people who don't know when to quit (and when to stick).
Contagious Why Things Catch On - Jonah Berger
What makes things popular? Why do people talk about certain products and ideas more than others? Why are some stories and rumors more infectious? And what makes online content go viral?
As in our previous reading list, there is a large amount of content online from articles to blog posts, we have compiled a few of our favourites below.
- Things You Should Never Do, Part I
- Chrome will start marking all HTTP sites as not secure in July
- Blazor a technical introduction
- The Practical Test Pyramid
- Netflix Technology Blog
We hope you found our recommended reading list useful, still not enough? Have a look at our 2016 reading list, it is still just as relevant today.