How to remove the fear when programmers are asked to work on your codebase
<h2>Problems</h2> <ul><li>Sharing Projects/Codebases within a software development team is hard.</li><li>Programmers sometimes outright say it can’t be done.</li><li>This affects project deadlines negatively.</li><li>This is a type of Muda
((https://en.wikipedia.org/wiki/Muda_(Japanese_term))) Information Waste which is rework<ul><li>the Author already created the codes, debugged it and made it run.</li><li>then the next developer has to do it again because THERE IS NO AUTOMATION NOR DOCUMENTATION (see comic above)</li></ul></li></ul> <h2>Proposed Solution</h2> <ul><li>INNERSOURCING - https://resources.github.com/whitepapers/introduction-to-innersource/</li><li>Borrow proper README
formats from opensource projects<ul><li>there are many guides/templates available online like this</li><li>github.com/PurpleBooth/README-template</li><li>this removes the question of WTH do i do with this repository?
</li><li>this removes the muda
rework because a copy+paste guide is already available</li><li>this allows a new-developer-in-the-project to quickly start working on business requirements and not waste time on technical specifics that should’ve already been handled by the author/initial team who worked on the project.</li></ul></li></ul> <h2>Quick Breakdown of the sections of the proposed README format</h2> <p>greatly inspired by https://gist.github.com/PurpleBooth/109311bb0361f32d87a2</p> <ul><li>Project Title
- a meaningful name that indicates the problem you are trying to solve</li><li>Getting Started
- any piece of context you wish to share to future maintaners</li><li>Prerequisites
- skills you need to have, tools you need to know and software needed installed</li><li>Installing
- how to get the project runnning~</li><li>Running Tests
- how to ensure that the project really works before others start working on it</li><li>Deployment
- how to release the finished project and some details where the application is actually in use right now</li><li>Built With
- tools/frameworks used, to quickly match people who could work on this project.</li><li>Contributing
- Coding standards / Architecture Design Decisions so the codebase will retain looking like it was written by a single person and therefore easier for future maintainers to understand.<ul><li>https://github.com/joelparkerhenderson/architecture_decision_record</li><li>Geek’s Guide to leading teams - Pat Kua</li></ul></li></ul> <h2>Proposed KPI for a maintanable Software Project</h2> <ul><li>Software Developers (Especially Tech Leads) metrics should include “how easy is it to onboard new developers on projects that I led”<ul><li>this is in contrast to smartass developers who take pride in obfuscating their code because it makes them look smart.</li></ul></li></ul> <p>From Wikipedia</p> <blockquote class="wp-block-quote"><p>Muda
is a Japanese word meaning “futility; uselessness; wastefulness”,[1] and is a key concept in lean process thinking, like the Toyota Production System (TPS) as one of the three types of deviation from optimal allocation of resources (the others being mura and muri).[2] Waste reduction is an effective way to increase profitability.</p>From Wikipedia</blockquote>