|
| 1 | +# Programming Reading List |
| 2 | +Credits to [/u/CSMastermind](https://www.reddit.com/user/CSMastermind) for creating the list found here: |
| 3 | +* [Part 1](https://www.reddit.com/r/learnprogramming/comments/83xyow/must_read_books/dvmplj3/) |
| 4 | +* [Part 2](https://www.reddit.com/r/learnprogramming/comments/83xyow/must_read_books/dvmpmfs/) |
| 5 | +* [Part 3](https://www.reddit.com/r/learnprogramming/comments/83xyow/must_read_books/dvmpn75/) |
| 6 | + |
| 7 | +More reading list resources: |
| 8 | +* [The Ultimate Reading List for Developers](https://docs.google.com/spreadsheets/d/1jz2dyyDzgZS1zqe_vhY8SYQrhscNzpNfdAkGusWoMUU/edit#gid=0) |
| 9 | + |
| 10 | +## Job Interview Prep |
| 11 | +* Cracking the Coding Interview: 189 Programming Questions and Solutions |
| 12 | +* Programming Interviews Exposed: Coding Your Way Through the Interview |
| 13 | +* Introduction to Algorithms |
| 14 | +* The Algorithm Design Manual |
| 15 | +* Effective Java |
| 16 | +* Concurrent Programming in Java: Design Principles and Pattern |
| 17 | +* Modern Operating Systems |
| 18 | +* Programming Pearls |
| 19 | +* Discrete Mathematics for Computer Scientists |
| 20 | + |
| 21 | +## Junior Software Engineer Reading List |
| 22 | +### Read This First |
| 23 | +* Pragmatic Thinking and Learning: Refactor Your Wetware |
| 24 | + |
| 25 | +### Fundamentals |
| 26 | +* Code Complete: A Practical Handbook of Software Construction |
| 27 | +* Software Estimation: Demystifying the Black Art |
| 28 | +* Software Engineering: A Practitioner's Approach |
| 29 | +* Refactoring: Improving the Design of Existing Code |
| 30 | +* Coder to Developer: Tools and Strategies for Delivering Your Software |
| 31 | +* Perfect Software: And Other Illusions about Testing |
| 32 | +* Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application |
| 33 | + |
| 34 | +### Understanding Professional Software Environments |
| 35 | +* Agile Software Development: The Cooperative Game |
| 36 | +* Software Project Survival Guide |
| 37 | +* The Best Software Writing I: Selected and Introduced by Joel Spolsky |
| 38 | +* Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams |
| 39 | +* Rapid Development: Taming Wild Software Schedules |
| 40 | +* Peopleware: Productive Projects and Teams |
| 41 | + |
| 42 | +### Mentality |
| 43 | +* Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency |
| 44 | +* Against Method |
| 45 | +* The Passionate Programmer: Creating a Remarkable Career in Software Development |
| 46 | + |
| 47 | +### History |
| 48 | +* The Mythical Man-Month: Essays on Software Engineering |
| 49 | +* Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed |
| 50 | +* The Deadline: A Novel About Project Management |
| 51 | + |
| 52 | +## Mid Level Software Engineer Reading List |
| 53 | +### Read This First |
| 54 | +* Personal Development for Smart People: The Conscious Pursuit of Personal Growth |
| 55 | + |
| 56 | +### Fundamentals |
| 57 | +* The Clean Coder: A Code of Conduct for Professional Programmers |
| 58 | +* Clean Code: A Handbook of Agile Software Craftsmanship |
| 59 | +* Solid Code |
| 60 | +* Code Craft: The Practice of Writing Excellent Code |
| 61 | +* Software Craftsmanship: The New Imperative |
| 62 | +* Writing Solid Code |
| 63 | + |
| 64 | +### Software Design |
| 65 | +* Head First Design Patterns: A Brain-Friendly Guide |
| 66 | +* Design Patterns: Elements of Reusable Object-Oriented Software |
| 67 | +* Domain-Driven Design: Tackling Complexity in the Heart of Software |
| 68 | +* Domain-Driven Design Distilled |
| 69 | +* Design Patterns Explained: A New Perspective on Object-Oriented Design |
| 70 | +* Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language. |
| 71 | +* Refactoring to Patterns |
| 72 | + |
| 73 | +### Software Engineering Skill Sets |
| 74 | +* Building Microservices: Designing Fine-Grained Systems |
| 75 | +* Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools |
| 76 | +* NoEstimates: How To Measure Project Progress Without Estimating |
| 77 | +* Object-Oriented Software Construction |
| 78 | +* The Art of Software Testing |
| 79 | +* Release It!: Design and Deploy Production-Ready Software |
| 80 | +* Working Effectively with Legacy Code |
| 81 | +* Test Driven Development: By Example |
| 82 | + |
| 83 | +### Databases |
| 84 | +* Database System Concepts |
| 85 | +* Database Management Systems |
| 86 | +* Foundation for Object / Relational Databases: The Third Manifesto |
| 87 | +* Refactoring Databases: Evolutionary Database Design |
| 88 | +* Data Access Patterns: Database Interactions in Object-Oriented Applications |
| 89 | + |
| 90 | +### User Experience |
| 91 | +* Don't Make Me Think: A Common Sense Approach to Web Usability |
| 92 | +* The Design of Everyday Things |
| 93 | +* Programming Collective Intelligence: Building Smart Web 2.0 Applications |
| 94 | +* User Interface Design for Programmers |
| 95 | +* GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos |
| 96 | + |
| 97 | +### Mentality |
| 98 | +* The Productive Programmer |
| 99 | +* Extreme Programming Explained: Embrace Change |
| 100 | +* Coders at Work: Reflections on the Craft of Programming |
| 101 | +* Facts and Fallacies of Software Engineering |
| 102 | + |
| 103 | +### History |
| 104 | +* Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software |
| 105 | +* New Turning Omnibus: 66 Excursions in Computer Science |
| 106 | +* Hacker's Delight |
| 107 | +* The Alchemist |
| 108 | +* Masterminds of Programming: Conversations with the Creators of Major Programming Languages |
| 109 | +* The Information: A History, A Theory, A Flood |
| 110 | + |
| 111 | +### Specialist Skills |
| 112 | +In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design. |
| 113 | + |
| 114 | +* Peter Norton's Assembly Language Book for the IBM PC |
| 115 | +* Expert C Programming: Deep C Secrets |
| 116 | +* Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming |
| 117 | +* The C++ Programming Language |
| 118 | +* Effective C++: 55 Specific Ways to Improve Your Programs and Designs |
| 119 | +* More Effective C++: 35 New Ways to Improve Your Programs and Designs |
| 120 | +* More Effective C#: 50 Specific Ways to Improve Your C# |
| 121 | +* CLR via C# |
| 122 | +* Mr. Bunny's Big Cup o' Java |
| 123 | +* Thinking in Java |
| 124 | +* JUnit in Action |
| 125 | +* Functional Programming in Scala |
| 126 | +* The Art of Prolog: Advanced Programming Techniques |
| 127 | +* The Craft of Prolog |
| 128 | +* Programming Perl: Unmatched Power for Text Processing and Scripting |
| 129 | +* Dive into Python 3 |
| 130 | +* why's (poignant) guide to Ruby |
| 131 | + |
| 132 | +## Senior Level Software Engineer Reading List |
| 133 | +### Read This First |
| 134 | +* Mastery: The Keys to Success and Long-Term Fulfillment |
| 135 | + |
| 136 | +### Fundamentals |
| 137 | +* Patterns of Enterprise Application Architecture |
| 138 | +* Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions |
| 139 | +* Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML |
| 140 | +* Systemantics: How Systems Work and Especially How They Fail |
| 141 | +* Rework |
| 142 | +* Writing Secure Code |
| 143 | +* Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries |
| 144 | + |
| 145 | +### Development Theory |
| 146 | +* Growing Object-Oriented Software, Guided by Tests |
| 147 | +* Object-Oriented Analysis and Design with Applications |
| 148 | +* Introduction to Functional Programming |
| 149 | +* Design Concepts in Programming Languages |
| 150 | +* Code Reading: The Open Source Perspective |
| 151 | +* Modern Operating Systems |
| 152 | +* Extreme Programming Explained: Embrace Change |
| 153 | +* The Elements of Computing Systems: Building a Modern Computer from First Principles |
| 154 | +* Code: The Hidden Language of Computer Hardware and Software |
| 155 | + |
| 156 | +### Philosophy of Programming |
| 157 | +* Making Software: What Really Works, and Why We Believe It |
| 158 | +* Beautiful Code: Leading Programmers Explain How They Think |
| 159 | +* The Elements of Programming Style |
| 160 | +* A Discipline of Programming |
| 161 | +* The Practice of Programming |
| 162 | +* Computer Systems: A Programmer's Perspective |
| 163 | +* Object Thinking |
| 164 | +* How to Solve It by Computer |
| 165 | +* 97 Things Every Programmer Should Know: Collective Wisdom from the Experts |
| 166 | + |
| 167 | +### Mentality |
| 168 | +* Hackers and Painters: Big Ideas from the Computer Age |
| 169 | +* The Intentional Stance |
| 170 | +* Things That Make Us Smart: Defending Human Attributes In The Age Of The Machine |
| 171 | +* The Back of the Napkin: Solving Problems and Selling Ideas with Pictures |
| 172 | +* The Timeless Way of Building |
| 173 | +* The Soul Of A New Machine |
| 174 | +* WIZARDRY COMPILED |
| 175 | +* YOUTH |
| 176 | +* Understanding Comics: The Invisible Art |
| 177 | + |
| 178 | +### Software Engineering Skill Sets |
| 179 | +* Software Tools |
| 180 | +* UML Distilled: A Brief Guide to the Standard Object Modeling Language |
| 181 | +* Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development |
| 182 | +* Practical Parallel Programming |
| 183 | +* Past, Present, Parallel: A Survey of Available Parallel Computer Systems |
| 184 | +* Mastering Regular Expressions |
| 185 | +* Compilers: Principles, Techniques, and Tools |
| 186 | +* Computer Graphics: Principles and Practice in C |
| 187 | +* Michael Abrash's Graphics Programming Black Book |
| 188 | +* The Art of Deception: Controlling the Human Element of Security |
| 189 | +* SOA in Practice: The Art of Distributed System Design |
| 190 | +* Data Mining: Practical Machine Learning Tools and Techniques |
| 191 | +* Data Crunching: Solve Everyday Problems Using Java, Python, and more. |
| 192 | + |
| 193 | +### Design |
| 194 | +* The Psychology Of Everyday Things |
| 195 | +* About Face 3: The Essentials of Interaction Design |
| 196 | +* Design for Hackers: Reverse Engineering Beauty |
| 197 | +* The Non-Designer's Design Book |
| 198 | + |
| 199 | +### History |
| 200 | +* Micro-ISV: From Vision to Reality |
| 201 | +* Death March |
| 202 | +* Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft |
| 203 | +* The PayPal Wars: Battles with eBay, the Media, the Mafia, and the Rest of Planet Earth |
| 204 | +The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times * and Bad |
| 205 | +* In the Beginning...was the Command Line |
| 206 | + |
| 207 | +### Specialist Skills |
| 208 | +* The Art of UNIX Programming |
| 209 | +* Advanced Programming in the UNIX Environment |
| 210 | +* Programming Windows |
| 211 | +* Cocoa Programming for Mac OS X |
| 212 | +* Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals |
| 213 | +* lex & yacc |
| 214 | +* The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference |
| 215 | +* C Programming Language |
| 216 | +* No Bugs!: Delivering Error Free Code in C and C++ |
| 217 | +* Modern C++ Design: Generic Programming and Design Patterns Applied |
| 218 | +* Agile Principles, Patterns, and Practices in C# |
| 219 | +* Pragmatic Unit Testing in C# with NUnit |
| 220 | + |
| 221 | +## DevOps Reading List |
| 222 | +* Time Management for System Administrators: Stop Working Late and Start Working Smart |
| 223 | +* The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services |
| 224 | +* The Practice of System and Network Administration: DevOps and other Best Practices for Enterprise IT |
| 225 | +* Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale |
| 226 | +* DevOps: A Software Architect's Perspective |
| 227 | +* The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations |
| 228 | +* Site Reliability Engineering: How Google Runs Production Systems |
| 229 | +* Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry |
| 230 | +* Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation |
| 231 | +* Migrating Large-Scale Services to the Cloud |
| 232 | + |
| 233 | +## Entrepreneur Reading List |
| 234 | +* Disrupted: My Misadventure in the Start-Up Bubble |
| 235 | +* The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win |
| 236 | +* The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It |
| 237 | +* The Art of the Start: The Time-Tested, Battle-Hardened Guide for Anyone Starting Anything |
| 238 | +* The Four Steps to the Epiphany: Successful Strategies for Products that Win |
| 239 | +* Permission Marketing: Turning Strangers into Friends and Friends into Customers |
| 240 | +* Ikigai |
| 241 | +* Reality Check: The Irreverent Guide to Outsmarting, Outmanaging, and Outmarketing Your Competition |
| 242 | +* Bootstrap: Lessons Learned Building a Successful Company from Scratch |
| 243 | +* The Marketing Gurus: Lessons from the Best Marketing Books of All Time |
| 244 | +* Content Rich: Writing Your Way to Wealth on the Web |
| 245 | +* The Web Startup Success Guide |
| 246 | +* The Best of Guerrilla Marketing: Guerrilla Marketing Remix |
| 247 | +* From Program to Product: Turning Your Code into a Saleable Product |
| 248 | +This Little Program Went to Market: Create, Deploy, Distribute, Market, and Sell Software and More on the Internet at * Little or No Cost to You |
| 249 | +* The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully |
| 250 | +* The Innovator's Solution: Creating and Sustaining Successful Growth |
| 251 | +* Startups Open Sourced: Stories to Inspire and Educate |
| 252 | +* In Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters |
| 253 | +* Do More Faster: TechStars Lessons to Accelerate Your Startup |
| 254 | +Content Rules: How to Create Killer Blogs, Podcasts, Videos, Ebooks, Webinars (and More) That Engage Customers and Ignite * Your Business |
| 255 | +* Maximum Achievement: Strategies and Skills That Will Unlock Your Hidden Powers to Succeed |
| 256 | +* Founders at Work: Stories of Startups' Early Days |
| 257 | +* Blue Ocean Strategy: How to Create Uncontested Market Space and Make Competition Irrelevant |
| 258 | +* Eric Sink on the Business of Software |
| 259 | +* Words that Sell: More than 6000 Entries to Help You Promote Your Products, Services, and Ideas |
| 260 | +* Anything You Want |
| 261 | +* Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers |
| 262 | +* The Innovator's Dilemma: The Revolutionary Book that Will Change the Way You Do Business |
| 263 | +* Tao Te Ching |
| 264 | +* Philip & Alex's Guide to Web Publishing |
| 265 | +* The Tao of Programming |
| 266 | +* Zen and the Art of Motorcycle Maintenance: An Inquiry into Values |
| 267 | +* The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity |
| 268 | + |
| 269 | +## Computer Science Grad School Reading List |
| 270 | +* All the Mathematics You Missed: But Need to Know for Graduate School |
| 271 | +* Introductory Linear Algebra: An Applied First Course |
| 272 | +* Introduction to Probability |
| 273 | +* The Structure of Scientific Revolutions |
| 274 | +* Science in Action: How to Follow Scientists and Engineers Through Society |
| 275 | +* Proofs and Refutations: The Logic of Mathematical Discovery |
| 276 | +* What Is This Thing Called Science? |
| 277 | +* The Art of Computer Programming |
| 278 | +* The Little Schemer |
| 279 | +* The Seasoned Schemer |
| 280 | +* Data Structures Using C and C++ |
| 281 | +* Algorithms + Data Structures = Programs |
| 282 | +* Structure and Interpretation of Computer Programs |
| 283 | +* Concepts, Techniques, and Models of Computer Programming |
| 284 | +* How to Design Programs: An Introduction to Programming and Computing |
| 285 | +* A Science of Operations: Machines, Logic and the Invention of Programming |
| 286 | +* Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology |
| 287 | +* The Computational Beauty of Nature: Computer Explorations of Fractals, Chaos, Complex Systems, and Adaptation |
| 288 | +* The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine |
| 289 | +* Computability: An Introduction to Recursive Function Theory |
| 290 | +* How To Solve It: A New Aspect of Mathematical Method |
| 291 | +* Types and Programming Languages |
| 292 | +* Computer Algebra and Symbolic Computation: Elementary Algorithms |
| 293 | +* Computer Algebra and Symbolic Computation: Mathematical Methods |
| 294 | +* Commonsense Reasoning |
| 295 | +* Using Language |
| 296 | +* Computer Vision |
| 297 | +* Alice's Adventures in Wonderland |
| 298 | +* Gödel, Escher, Bach: An Eternal Golden Braid |
| 299 | + |
| 300 | +## Video Game Development Reading List |
| 301 | +* Game Programming Gems - 1 2 3 4 5 6 7 |
| 302 | +* AI Game Programming Wisdom - 1 2 3 4 |
| 303 | +* Making Games with Python and Pygame |
| 304 | +* Invent Your Own Computer Games With Python |
| 305 | +* Bit by Bit |
0 commit comments