Moving forward despite COVID-19 - A message from Codeweavers' CEO

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.

The Classics

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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.

Find on Goodreads here

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?

Find on Goodreads here

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).

Find on Goodreads here

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?

Find on Goodreads here

Online Articles

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.

  1. Things You Should Never Do, Part I 
  2. Chrome will start marking all HTTP sites as not secure in July
  3. Blazor a technical introduction
  4. The Practical Test Pyramid
  5. 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.


Tech

By: Codeweavers - 20/02/18

More stories by Codeweavers