Introduction

When I graduated from college with a degree in computer science, it’s fair to say I had a layperson’s understanding of the science and theory of creating software. I had studied databases, algorithms, compilers, graphics, CPU architecture, operating systems, concurrency, and more. And I had, to some extent, a framework that related these technologies to each other.

Because I was writing software outside of classes—mostly for summer jobs—I also knew that translating academic knowledge into building a product was a distinct challenge. More accurately, it presented challenges, plural. Selecting and implementing the right algorithm was generally the easy part. Working with a large code base, creating a functional user experience, testing ...

Get Effective Software Architecture: Building Better Software Faster now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.