├── CONTRIBUTING.md ├── CODE_OF_CONDUCT.md ├── LICENSE └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | You are kindly invited to contribute to this collection by sending a Pull Request or starting a conversation by [creating a new issue](https://github.com/softwarecrafters/awesome-software-crafting/issues/new). 4 | 5 | Please add a summary/short overview to the resource you're recommending, explaining which topics it covers and further links to e.g. reviews or discussions. 6 | 7 | You are invited to use an icon as follows to indicate the type of resource: 8 | 9 | | Icon | Category | 10 | | --- | --- | 11 | | 📝 | Article / Blogpost | 12 | | 📖 | Book | 13 | | 🌐 | Website / Online Resource | 14 | | 🎥 | Talk / Presentation / Video | 15 | | 🎧 | Podcast | 16 | 17 | The categories given in the [`README.md`](./README.md) are a first suggestion. Feel free to add a new one or to rename them as you see fit. 18 | 19 | An example: 20 | 21 | > ## 🤔 Cognitive science, Systems theory 22 | > ... 23 | > ### 📖 [Systems Thinking: A Primer by Donella H. Meadows, Diana Wright](https://www.goodreads.com/book/show/3828902-thinking-in-systems) 24 | > A fairly short book (240 pages) giving a great introduction to Systems Thinking, or how to model and understand complex systems. The book always uses practical examples, such as economical or biological systems, to illustrate certain system behaviours. 25 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at raimo@softwarecrafters.org. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Software Crafting Resources 2 | 3 | In the spirit of [awesome-software-craftsmanship](https://github.com/benas/awesome-software-craftsmanship) and many other [awesome lists](https://github.com/sindresorhus/awesome), this repository strives to provide well-curated material for different topics around, and beyond software crafting. 4 | 5 | It's supposed to go beyond listing resources, but giving guidance about approaching a topic and what to expect from reading a book or listening to a talk. 6 | 7 | See [CONTRIBUTING.md](./CONTRIBUTING.md) on how to add your recommendations to this collection. 8 | 9 | ---- 10 | 11 | ## 💡 General 12 | 13 | ### 🌐 [List of awesome people](https://github.com/lscc/socrates-uk/wiki/List-of-awesome-people-to-recommend-to-new-devs) 14 | 15 | A list of interesting people (not just) in tech by topic and with further links to their social media profiles or websites. Compiled at SoCraTes UK 2018. 16 | 17 | ### 🌐 [Awesome Software Craftsmanship](https://github.com/benas/awesome-software-craftsmanship) 18 | 19 | A curated list of resources around *Software Craftsmanship*, *Clean Code* and related programming practices. Comes with a list of [conferences](https://github.com/benas/awesome-software-craftsmanship#school-conferences) and [communities](https://github.com/benas/awesome-software-craftsmanship#school-communities). 20 | 21 | ## 💻 Coding & Practice ‍ 22 | 23 | ### 📖 [Test Driven Development: By Example](https://www.goodreads.com/book/show/387190.Test_Driven_Development) by Kent Beck 24 | 25 | In this fairly short book (240p), the reader gets a short theoretical introduction to the techniques and practices that form TDD. The reader then immediately follows Kent Beck in his journey of implementing two projects from start to finish using TDD: a money example in Java and the creation of unit testing framework in Python. 26 | 27 | Having already attended several coderetreats, reading this book was my ([@tdpauw](https://twitter.com/tdpauw)) biggest a-ha moment in understanding how TDD works and how to apply it. 28 | 29 | ## 🏗️ Architecture, Design & Modelling 30 | 31 | ## 🚀 Software Development, Process & Delivery 32 | ### 📖 [Working Effectively with Legacy Code](https://www.goodreads.com/book/show/44919.Working_Effectively_with_Legacy_Code) by Michael C. Feathers 33 | 34 | Introduces legacy code as "code that isn't covered by tests". It explains different techniques and refactoring patterns to tackle legacy code by putting it under test. Very detailed (464 pages), but worth if you're working with legacy code a lot. The examples are in Java and C++ 35 | 36 | ### 📖 [Release it!](https://www.goodreads.com/book/show/1069827.Release_It_) by Michael T. Nygard 37 | 38 | 300 pages easy to read book explaining all the patterns to turn your application into an operatable application. This should be required reading for every software engineer. 39 | 40 | It touches things like circuit breaker, bulkhead, zero-downtime deployments, networking in datacenters (most machines have 2 or more NIC's, make sure your app connects to the right one), gracefull startup, gracefull shutdown and many more things. 41 | 42 | Every chapter starts with a real life disaster scenario coming from the experience Michael had working in operations. 43 | 44 | Most of what Netflix has done in his cloud transformation and what they released now as open source tools is based on this book. 45 | 46 | A second edition has been released in 2018. 47 | 48 | ### 📖 [The Goal](https://www.goodreads.com/book/show/113934.The_Goal) by Eliyahu M. Goldratt, Jeff Cox 49 | 50 | A novel that introduce the reader to the general ideas of the [*Theory Of Constraints (ToC)*](https://en.wikipedia.org/wiki/Theory_of_constraints) and the [*Five Focusing Steps*](https://www.tocinstitute.org/five-focusing-steps.html) through the struggle the protagonists go through as they try to save a failing manufactoring plant that is threatened to be closed because of bad efficiency and accounting figures. 51 | 52 | The talk **[🎥 How To Break The Rules](https://www.youtube.com/watch?v=hZFShSjAhlQ) by Dan North** serves as a great introduction to the principles applied in the stories of both books and the work of Eliyahu Goldratt. 53 | 54 | The twitter moment [*Theory of Constraints #toc #tocot*](https://twitter.com/i/moments/1063540260179726336) introduces Theory of Constraints in 30-something tweets. 55 | 56 | ### 📖 [The Phoenix Project](https://www.goodreads.com/book/show/17255186-the-phoenix-project) by Gene Kim, Kevin Behr, George Spafford 57 | 58 | **The Phoenix Project** is a similar novel as The Goal, but this time applied to a struggling IT department. It tells how the protagonists fix their department by implementing DevOps practices. 59 | 60 | During the story, the reader is taken several times to a factory to explain the problems the IT department is facing in terms of physical manufacturing problems. 61 | 62 | The Phoenix Project puts less the emphasise on Theory of Constraints, but more on the 3 backing principles of DevOps called [*The Three Ways*](https://itrevolution.com/the-three-ways-principles-underpinning-devops/). 63 | 64 | About *The Phoenix Project*: 65 | > This is the IT swamp draining manual for anybody who is neck deep in alligators. 66 | > 67 | > -- Adrian Cockcroft, Cloud Architect at Netflix 68 | 69 | ### 📖 [Rolling Rocks Downhill: Accelerate Agile using Goldratt's TOC](https://www.goodreads.com/book/show/25460979-rolling-rocks-downhill) by Clarke Ching 70 | 71 | Yet another novel based on **The Goal**. This time a software project that has been running late since day 1 and that needs to launch on an impossible early date, or else. 72 | 73 | While **The Phoenix Project** mainly tells the story from an IT operations manager's point of view, **Rolling Rocks Downhill** tells the story from a software development manager's point of view. 74 | 75 | During the story, the reader is taken several times to the company's cafetaria that several years ago was threaten to close because of too less customers but managed to over achieve by implementing the concepts behind the Theory of Constraints. 76 | 77 | The reader is also introduced to the concept of the [*Evaporating Cloud*](https://wikipedia.org/wiki/Evaporating_Cloud), a conflict resolution diagram. 78 | 79 | There was a time the book could be read one chapter a day in 60 days by subscribing to a mailing at https://rolls.rocks. You would then receive one chapter every day in your mailbox. But it seems to be not available anymore. That was very funny as you got at the beginning and end of every chapter some funny comments from Clarke. 80 | 81 | Starting from chapter 24, every chapter ended with this quote to make sure the opposite happens: 82 | 83 | > Please don't think of small batches, okay? 84 | > 85 | > Promise? 86 | > 87 | > -- Clarke Ching 88 | 89 | ### 📖 [The Bottleneck Rules: How To Get More Done at Work, Without Working Harder](https://www.goodreads.com/book/show/40279575-the-bottleneck-rules) by Clarke Ching 90 | 91 | Very short book (108p) one can read in a day. It is basically an introduction to bottlenecks, the key concept behind [*Theory Of Constraints (ToC)*](https://en.wikipedia.org/wiki/Theory_of_constraints). 92 | 93 | Although Clarke studied ToC for 2 decades and he is a big fan of Eliyahu Goldratt, he had to realise that **The Goal** is too advanced and too much focused on managers of big corporations trying to solve big problems that 99% of the people will never come across. It's a 300-something pages big book and you only get to bottlenecks around page 203. 94 | 95 | Clarke created this book to help everyday, ordinary people find and manage their bottleneck quickly no matter what industry they work in. The book contains examples from different domains. 96 | 97 | The book explains what bottlenecks are, how to find them and how to manage them. For the management Clarke introduces the FOCCCUS formula, which is just a reformulation of the [*Five Focusing Steps*](https://www.tocinstitute.org/five-focusing-steps.html) in a more concrete and more understandable way than the original version. 98 | 99 | If you want to read one book on ToC, I would suggest this one. 100 | 101 | ### 📖 [Measuring Continuous Delivery: The what, why, and how of measuring Continuous Delivery](https://www.goodreads.com/book/show/35508935-measuring-continuous-delivery) by Steve Smith 102 | 103 | Yet another book about [*Theory Of Constraints (ToC)*](https://en.wikipedia.org/wiki/Theory_of_constraints), this time applied to the technology value stream aka your Continuous Delivery pipeline, i.e. from code commit to deployed in production and released to users. 104 | 105 | Continuous Delivery is a holistic approach to software delivery. Adopting Continuous Delivery involves a bunch of technological and organisational changes. It is not these technological and organisational changes that actually make adopting Continuous Delivery hard. It is the application of them to the unique circumstances and constraints of your organisation. Your organisation is a complex, adaptive system in which every individual has a limited amount of information and the cause and effect of any event can only be established in retrospect. 106 | 107 | So, where do you start? Which technological or organisational change are you going to adopt first? 108 | 109 | In this book, Steve explains how by using [*The Improvement Kata*](http://www-personal.umich.edu/~mrother/The_Improvement_Kata.html), measuring the pipeline using the 4 throughput and stability metrics from the [*State of DevOps Report*](https://puppet.com/resources/whitepaper/state-of-devops-report) and [*Theory Of Constraints (ToC)*](https://en.wikipedia.org/wiki/Theory_of_constraints) to you can identify your bottleneck and identify which experiments to run to eliminate that bottleneck. 110 | 111 | ### 📖 [Accelerate](https://www.goodreads.com/book/show/35747076-accelerate) by Nicole Forsgren, Jez Humble, Gene Kim 112 | 113 | This book is the summary of the findings of 4 years of research in the context of the [*State of DevOps Report*](https://puppet.com/resources/whitepaper/state-of-devops-report) (starting from 2014). It confirms lots of the beliefs we've build up over the past 2 decades in the agile community. And it also has some surprising outcomes. 114 | 115 | From the findings, you understand how different aspects ranging from transformational leadership, technological practices that make up Continuous Delivery, lean product development and lean management all influence software delivery performance, rework, organisational culture, burn-out, job satisfaction and in the end organisational performance from a financial point of view and non-commercial performance. 116 | 117 | The book also explains how this research has been performed and how you can apply the type of questionnairs that has been used for the research to measure how well your organisation is performing. 118 | 119 | ## 🤗 Team Culture & Collaboration 120 | 121 | ## 🤔 Cognitive science, Systems theory 122 | 123 | ### 📖 [Systems Thinking: A Primer by Donella H. Meadows, Diana Wright](https://www.goodreads.com/book/show/3828902-thinking-in-systems) 124 | 125 | A fairly short book (240 pages) giving a great introduction to Systems Thinking, or how to model and understand complex systems. The book always uses practical examples, such as economical or biological systems, to illustrate certain system behaviours. Contains a lot of diagrams, so maybe get the physical book and not an ebook version. See [The Donella Meadows Project](http://donellameadows.org/systems-thinking-resources/) for more resources on systems thinking. 126 | --------------------------------------------------------------------------------