This is a curated list of the most didactic and/or deeply detailed must-read resources about software development.
Is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.
-
Articles / Papers
-
Books
-
Videos
A database is an organized collection of data. It is the collection of schemas, tables, queries, reports, views, and other objects.
- Books
- SQL Indexing and Tuning by Markus Winand (Free web-edition)
In computing, a logfile is a file that records either events that occur in an operating system or other software runs, or messages between different users of a communication software. Logging is the act of keeping a log.
- Articles / Papers
Object-Oriented Design is the process of planning a system of interacting objects for the purpose of solving a software problem.
-
Articles / Papers
- Applying Design by Contract, by Bertrand Meyer
- Command Query Separation (CQS) by Firat Atagun
- Dealing with Properties by Martin Fowler
- GRASP
- Keep It DRY, Shy, and Tell the Other Guy by Andy Hunt and Dave Thomas
- Tell, Don't Ask (Examples)
- The Law of Demeter Is Not A Dot Counting Exercise by Phil Haack
- SRP: The Single Responsibility Principle
- The Open-Closed Principle
- The Liskov Substitution Principle
- The Interface Segregation Principle
- The Dependency Inversion Principle
-
Books
-
Videos
Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring improves nonfunctional attributes of the software.
-
Articles / Papers
- Code Smells by Jeff Atwood
- Dont Repeat Yourself (DRY) by Andrew Hunt
- On the Criteria To Be Used in Decomposing Systems into Modules by David Parnas (Decomposing)
- Towards a Principle-based Classification of Structural Design Smells by Ganesh Samarthyam, Tushar Sharma and Girish Suryanarayana (Design Smells)
-
Books
-
Videos
- Get a Whiff of This by Sandi Metz (Code Smells)
- All the Little Things by Sandi Metz (Small Objects)
Revision control is any kind of practice that tracks and provides control over changes to source code.
-
Articles / Papers
-
Books
A service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. The basic principles of service-oriented architecture are independent of vendors, products and technologies.
- Articles / Papers
Last but not least.
- Articles / Papers
- Learn Regex by Zeeshan Ahmed
- Semantic Versioning Specification (SemVer) by Tom Preston-Werner
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky
- Time by Emil Mikulic
- The Infinite Hows (or, the Dangers Of The Five Whys) by John Allspaw (Post-hoc/Postmortems)
- What every web developer must know about URL encoding by Stéphane Épardaud
- What Every Programmer Should Know About Memory by Ulrich Drepper
- What Every Programmer Should Know About SEO by Kate Matsudaira
- What's the Difference Between Continuous Integration, Continuous Deployment and Continuous Delivery? by Marko Anastasov
- What technical details should a programmer of a web application consider before making the site public?