Skip to content

Latest commit

 

History

History
311 lines (221 loc) · 13.5 KB

_cs-software-development-and-engineering.md

File metadata and controls

311 lines (221 loc) · 13.5 KB

Software Development and Engineering

Learn from everyone. Follow no one.

Books serve to show a man that those original thoughts of his aren't very new at all.

What we think, we become.

Content



  • Clean Code : A Handbook of Agile Software Craftsmanship (2008) by Robert C. Martin, Prentice Hall
  • Code Complete (2nd, 2004) by Steve McConnell
  • The Practice of Programming by Brian W. Kernighan
  • Hacker's Delight by Henry S. Warren Jr.
  • Writing Solid Code by Steve Maguire
  • The Art of Readable Code by Dustin Boswell, Trevor Foucher
  • Think Like a Programmer: An Introduction to Creative Problem Solving by V. Anton Spraul
  • 码出高效:Java开发手册 by 杨冠宝, 高海慧
  • 码农翻身 (2018) by 刘欣

Refactoring

  • Refactoring : Improving the Design of Existing Code (2nd, 2018) by Martin Fowler, Kent Beck
  • Refactoring to Patterns by Joshua Kerievsky
  • Working Effectively with Legacy Code by Michael C. Feathers


  • Test Driven Development: By Example (2002) by Kent Beck
  • Growing Object-Oriented Software, Guided by Tests by Steve Freeman
  • Effective Unit Testing by Lasse Koskela
  • xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros
  • The RSpec Book by David Chelimsky
  • The Art of Unit Testing: With Examples in .NET by Roy Osherove


Jenkins

  • Jenkins 2: Up and Running: Evolve Your Deployment Pipeline for Next Generation Automation by Brent Laster
  • Jenkins: The Definitive Guide by John Smart
  • Learning Continuous Integration with Jenkins by Nikhil Pathania

Container

  • Docker in Action
  • Continuous Delivery with Docker and Jenkins by Rafal Leszko
  • Kubernetes in Action by Marko Luksa


Git

  • Pro Git by Ben Straub and Scott Chacon
  • Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development by Jon Loeliger
  • Professional Git by Brent Laster
  • Git Pocket Guide: A Working Introduction by Richard E. Silverman

Maven

  • Maven: The Definitive Guide
  • Apache Maven Cookbook by Raghuram Bharathan


  • Software Engineering (10th, 2015) by Ian Sommerville
  • The Essence of Software Engineering by Volker Gruhn and Rüdiger Striemer

UML

  • UML distilled by Martin Fowler
  • Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development by Craig Larman

Design Patterns

  • Design Patterns: Elements of Reusable Object-Oriented Software (1994) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  • Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
  • A Philosophy of Software Design by John Ousterhout
  • Head First Design Patterns (2004) by Elisabeth Freeman
  • Head First Object-Oriented Analysis and Design (2006) by Brett D. McLaughlin
  • Object-Oriented Analysis and Design with Applications by Grady Booch
  • Object-Oriented Software Construction by Bertrand Meyer
  • Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
  • Patterns of Enterprise Application Architecture by Martin Fowler
  • Beautiful Code: Leading Programmers Explain How They Think by Andy Oram, Greg Wilson

Tutorials



  • Site Reliability Engineering: How Google Runs Production Systems by Betsy Beyer
  • The Site Reliability Workbook: Practical Ways to Implement SRE
  • Seeking SRE: Conversations About Running Production Systems at Scale by David N. Blank-Edelman
  • The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
  • Infrastructure as Code: Managing Servers in the Cloud by Kief Morris
  • Systems Performance: Enterprise and the Cloud by Brendan Gregg
  • Web Operations: Keeping the Data On Time by Jesse Robbins and John Allspaw
  • Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann
  • Database Reliability Engineering: Designing and Operating Resilient Database Systems by Charity Majors and Laine Campbell
  • Practical Monitoring: Effective Strategies for the Real World by Mike Julian
  • Building Microservices: Designing Fine-Grained Systems by Sam Newman
  • Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services by Brendan Burns


Application Architecture

  • Patterns of Enterprise Application Architecture by Martin Fowler
  • Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
  • Enterprise Integration Patterns by Gregor Hohpe
  • Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann
  • Implementing Domain-Driven Design by Vaughn Vernon
  • Clean Architecture by Robert Cecil Martin
  • Building Evolutionary Architectures: Support Constant Change by Neal Ford, Patrick Kua, and Rebecca Parsons
  • The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise by Martin L. Abbott, Michael T. Fisher
  • Web Application Architecture: Principles, Protocols and Practices by Leon Shklar
  • Software Architecture: Foundations, Theory, and Practice by Richard N. Taylor
  • Java Application Architecture: Modularity Patterns with Examples Using OSGi by Kirk Knoernschild
  • System Architecture: Strategy and Product Development for Complex Systems by Bruce Cameron, Daniel Selva, and Edward F. Crawley
  • Just Enough Software Architecture: A Risk-Driven Approach by George Fairbanks
  • Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives by Nick Rozanski and Eoin Woods
  • Building Scalable Web Sites by Cal Henderson
  • Web Scalability for Startup Engineers by Artur Ejsmont
  • Scalability Rules: Principles for Scaling Web Sites by Martin L. Abbott, Michael T. Fisher
  • Scalability Rules: 50 Principles for Scaling Web Sites by Martin L. Abbott, Michael T. Fisher
  • 企业IT架构转型之道:阿里巴巴中台战略思想与架构实战 by 钟华

Distributed System Architecture

  • 大型网站技术架构 by 李智慧
  • 大型网站系统与JAVA中间件实践 by 曾宪杰
  • 分布式服务架构:原理、设计与实战 by 李艳鹏 / 杨彪
  • 亿级流量网站架构核心技术 by 张开涛
  • 架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践 by 王新栋

Microservices Architecture

  • Building Microservices: Designing Fine-Grained Systems by Sam Newman
  • Production-Ready Microservices by Susan J. Fowler

DevOps Architecture

  • Site Reliability Engineering: How Google Runs Production Systems by Betsy Beyer
  • Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble, David Farley
  • Release It!: Design and Deploy Production-Ready Software by Michael T.Nygard
  • 进化 - 运维技术变革与实践探索 by 赵成
  • The Site Reliability Workbook: Practical Ways to Implement SRE by Betsy Beyer
  • DevOps: A Software Architect's Perspective by Len Bass

Architect

  • Essential Skills for Software Architects by Dave Hendricksen

Articles



Must Read

  • Extreme Programming Explained: Embrace Change by Kent Beck
  • The Mythical Man-Month: Essays on Software Engineering by Jr·Frederick P·Brooks
  • Peopleware: Productive Projects and Teams by Tom DeMarco
  • Scrum and XP from the Trenches by Henrik Kniberg
  • Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland
  • The Goal: A Process of Ongoing Improvement by Eliyahu M. Goldratt
  • Lean from the Trenches by Henrik Kniberg
  • Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency by Tom DeMarco
  • The Software Craftsman: Professionalism, Pragmatism, Pride by Sandro Mancuso
  • Implementing Lean Software Development: From Concept to Cash by Mary Poppendieck
  • The Art of Agile Development by James Shore, Shane Warden
  • The Agile Samurai by Jonathan Rasmusson
  • Rapid Development: Taming Wild Software Schedules by Steve McConnell
  • Lean thinking banish waste and creat wealth in your corporation by James P.Womack
  • Learning Agile by Andrew Stellman
  • Ship It! by Jared Richardson

Some More

  • Specification by Example by Gojko Adzic
  • Agile Retrospectives:Making Good Teams Great by Esther Derby , Diana Larsen,Ken Schwaber
  • Coaching Agile Teams: A Companion for ScrumMasters,Agile Coaches, and Project Managers in Transition by Lyssa Adkins
  • Agile Project Management with Scrum by Ken Schwaber
  • Succeeding with Agile:Software development using Scrum by Mike Cohn
  • Agile Estimating and Planning by Mike Cohn
  • Kanban: Successful Evolutionary Change for Your Technology Business by David J.Anderson
  • User Stories Applied:For Agile Software Development by Mike Cohn
  • User Story Mapping Building Better Products using Agile Software Design by Jeff Patton
  • Manage Your Project Portfolio by Johanna Rothman


Programmer

  • The Pragmatic Programmer: From Journeyman to Master (2nd, 2019) by Andrew Hunt, David Thomas
  • Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman (2009) by Dave H. Hoover and Adewale Oshineye
  • The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
  • Joel on Software (3rd, 2004) by Joel Spolsky
  • More Joel on Software (2008) by Joel Spolsky
  • Hackers and Painters: Big Ideas from the Computer Age by Paul Graham
  • Soft Skills: The Software Developer's Life Manual by John Z. Sonmez
  • The Cathedral and the Bazaar by Eric S. Raymond
  • Coders at Work: Reflections on the Craft of Programming by Peter Seibel
  • The Passionate Programmer by Chad Fowler
  • Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt
  • Effective Programming: More Than Writing Code by Jeff Atwood
  • 97 Things Every Programmer Should Know: Collective Wisdom from the Experts by Kevlin Henney
  • A Brief History of Hackerdom by Raymond. Eric S. Raymond

Tech Leader

  • The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change by Camille Fournier
  • A Elegant Puzzle: System of Engineering Management by Will Larson
  • Accelerate: Building and Scaling High-Performance Technology Organizations by Nicole Forsgern

For Interview

  • Cracking the Coding Interview: 189 Programming Questions and Solutions (2015) by Gayle Laakmann McDowell
  • Programming Interviews Exposed by Eric Giguere, John Mongan, and Noah Kindler
  • Elements of Programming Interviews: The Insiders' Guide by Adnan Aziz , Tsung-Hsien Lee
  • Elements of Programming Interviews in Java: The Insiders' Guide by Adnan Aziz , Tsung-Hsien Lee
  • Programming Pearl by Jon Bentley
  • Java Programming Interviews Exposed by Noel Markham
  • Coding Interview Questions by Narasimha Karumanchi
  • Dynamic Programming for Coding Interviews by Meenakshi and Kamal Rawat
  • Algorithms for Interviews by Adnan Aziz and Amit Prakash
  • Joe Celko's SQL Puzzles and Answers by Joe Celkos
  • 剑指Offer (2012) by 何海涛
  • 编程之美 (2008) by 《编程之美》小组
  • 程序员代码面试指南:IT名企算法与数据结构题目最优解 (2015) by 左程云

Some More

  • The Complete Software Developer's Career Guide: How to Learn Programming Languages Quickly, Ace Your Programming Interview, and Land Your Software Developer Dream Job by John Z. Sonmez
  • The Google Resume: How to Prepare for a Career and Land a Job at Apple, Microsoft, Google, Or Any Top Tech Company by Gayle Laakmann McDowell
  • Cracking the Tech Career: Insider Advice on Landing a Job at Google, Microsoft, Apple, or any Top Tech Company by Gayle Laakmann McDowell
  • Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead by Laszlo Bock
  • Cracking the PM Interview: How to Land a Product Manager Job in Technology by Gayle Laakmann McDowell and Jackie Bavaro
  • What Color Is Your Parachute? 2020: A Practical Manual for Job-Hunters and Career-Changers by Richard N. Bolles

Others

  • The Elements of Style by William Strunk Jr
  • The Visual Display of Quantitative Information by Edward R. Tufte