{"course":{"slug":"how-software-changed","title":"How Software Development Changed","url":"https://addaly.com/learn/how-software-changed","level":"intermediate","track":"work"},"lesson":{"slug":"what-a-portfolio-proves-now","title":"What a repository proves, and what it stopped proving","url":"https://addaly.com/learn/how-software-changed/what-a-portfolio-proves-now","position":67,"of":87,"minutes":9,"answer":"The finished artefact stopped carrying information, so the signal moved to things somebody else gated or that record the process: a merged pull request, a minimal reproduction, a review you left, a post-mortem.","keyIdea":"The finished artefact stopped carrying information, so the signal moved to things somebody else gated or that record the process: a merged pull request, a minimal reproduction, a review you left, a post-mortem, a commit history that shows a reversal."},"body":{"format":"markdown","text":"## The thing that lost its signal\n\nA personal project used to carry information. It said: this person can hold a piece of work in their head for weeks, make a hundred decisions, and finish. The artefact was evidence of the process because there was no other way to get the artefact.\n\nThat inference is broken. A complete, tidy, well-tested application is a weekend, and every hiring manager knows it. Uploading one is no longer a claim about you; it is a claim about a tool that everybody has.\n\nThis is not a complaint. It is a change in which artefacts carry information, and there are several that now carry more than they used to.\n\n## Commit history beats the final state\n\nThe artefact is cheap. The **record of getting there** is not, and most people do not think to fake it.\n\nA log that shows an approach taken, pushed, run against real data, found wanting and reverted tells a reader something a clean tree cannot. So does a commit message that says why, not what. So does a branch that was abandoned with a note explaining the dead end.\n\n```bash\ngit log --oneline --graph --since=6.months\n```\n\nIf that output is a straight line of forty green commits each adding a complete feature, a reader learns nothing except that you squashed. Consider not squashing on personal work, and writing the *why* in the body.\n\n## Somebody else's gate is the strongest signal\n\nOne merged pull request to a project you do not control outranks an entire solo repository, for a mechanical reason: a maintainer who owes you nothing read it and said yes.\n\nThe same logic ranks the rest:\n\n- A bug report with a **minimal reproduction**: the version numbers, the smallest failing input, the expected and actual behaviour. Maintainers can tell instantly whether somebody did the reduction work, and reducing a bug is the diagnosis skill in miniature.\n- A **code review you left on a stranger's change**, if it is public. This is visible judgment, which is the scarce thing.\n- A **documentation fix** for the thing that confused you. Small, wanted, and it proves you read the source.\n- A **post-mortem** of something of yours that broke. Timeline, cause, what you changed. Almost nobody writes these voluntarily and they read as unmistakably real.\n\n## Maintenance beats launch\n\nA project with users has an issue tracker, and an issue tracker is a record of you handling other people's problems over time. Three years of small commits to one thing that people actually use says more than nine finished-and-abandoned repositories.\n\nIf your project has no users, say what you learned from it instead of implying adoption. A README that says \"I built this to understand how consistent hashing behaves when a node leaves; here is what surprised me\" is honest and informative. A README that implies a user base you do not have is checkable and will be checked.\n\n## Write the thing down\n\nA short write-up of one real problem (what you expected, what happened, how you found it, what you would do differently) is worth more than most projects, and it takes an afternoon.\n\nIt works because it is the one format that cannot be outsourced without becoming obviously generic. Specificity is the signal: the actual query plan, the actual 3am graph, the actual wrong assumption. Free hosting exists everywhere: GitHub Pages, Codeberg Pages, a plain markdown file in a repository. You do not need a domain and you do not need a design.\n\n## The part that is unfair, said plainly\n\nEverything above rewards discretionary time, and discretionary time is distributed by luck. Somebody working two jobs or caring for a family cannot produce a contribution history, and treating one as a requirement filters on circumstance while feeling like meritocracy.\n\nIf you are hiring: a portfolio is evidence when present and not evidence when absent. Build a loop that works for a candidate with nothing public, because many of the strongest people have nothing public: their work belongs to an employer.\n\nIt is also getting harder to contribute. Maintainers of popular projects are receiving large volumes of low-quality generated pull requests and reports, and several have responded by tightening what they accept from newcomers. So the advice \"go contribute to open source\" is more expensive than it was two years ago, and you should expect a slower, more sceptical reception than the guides written in 2019 describe.\n\n## The limitation\n\nThis lesson is an argument about signalling, not a study. Nobody has measured what hiring managers actually weigh now, the answer differs enormously between a two-person startup and a bank, and plenty of screening is still done by keyword filters that read none of this. Take it as a reasoned account of where information survives, and ask the specific people you want to work for what they look at."},"check":{"question":"Why does a merged pull request to someone else's project now outrank a polished solo project of far larger size?","options":[{"text":"It proves the candidate can work with an existing codebase, which solo projects never demonstrate.","correct":false,"tempting":"Real but not the mechanism; a large solo project also involves working within existing structure."},{"text":"Open-source work is public, so it can be verified, whereas solo repositories might be copied from elsewhere.","correct":false,"tempting":"Both are equally public; verifiability is not what separates them."},{"text":"An independent maintainer with no obligation to the candidate read the change and accepted it.","correct":true},{"text":"Maintainers hold contributions to a higher technical standard than the candidate would apply to their own work.","correct":false,"tempting":"Standards vary widely by project; the signal comes from the gate existing at all, not from its height."}]},"prev":{"slug":"interviews-that-still-discriminate","title":"Hiring when everyone has the same tools open","url":"https://addaly.com/learn/how-software-changed/interviews-that-still-discriminate"},"next":{"slug":"roles-that-grew-and-shrank","title":"Where the work moved, and what is genuinely unknown","url":"https://addaly.com/learn/how-software-changed/roles-that-grew-and-shrank"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'What a repository proves, and what it stopped proving', in How Software Development Changed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/how-software-changed/what-a-portfolio-proves-now (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"What a repository proves, and what it stopped proving","courseTitle":"How Software Development Changed","module":{"index":7,"slug":"skill-and-the-missing-rung","title":"Skill, hiring and the missing rung"},"answer":null,"keyIdea":"The finished artefact stopped carrying information, so the signal moved to things somebody else gated or that record the process: a merged pull request, a minimal reproduction, a review you left, a post-mortem, a commit history that shows a reversal.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-thing-that-lost-its-signal","runs":[{"text":"The thing that lost its signal"}]},{"t":"p","runs":[{"text":"A personal project used to carry information. It said: this person can hold a piece of work in their head for weeks, make a hundred decisions, and finish. The artefact was evidence of the process because there was no other way to get the artefact."}]},{"t":"p","runs":[{"text":"That inference is broken. A complete, tidy, well-tested application is a weekend, and every hiring manager knows it. Uploading one is no longer a claim about you; it is a claim about a tool that everybody has."}]},{"t":"p","runs":[{"text":"This is not a complaint. It is a change in which artefacts carry information, and there are several that now carry more than they used to."}]},{"t":"h2","id":"commit-history-beats-the-final-state","runs":[{"text":"Commit history beats the final state"}]},{"t":"p","runs":[{"text":"The artefact is cheap. The "},{"text":"record of getting there","b":true},{"text":" is not, and most people do not think to fake it."}]},{"t":"p","runs":[{"text":"A log that shows an approach taken, pushed, run against real data, found wanting and reverted tells a reader something a clean tree cannot. So does a commit message that says why, not what. So does a branch that was abandoned with a note explaining the dead end."}]},{"t":"code","lang":"bash","label":"Bash","text":"git log --oneline --graph --since=6.months"},{"t":"p","runs":[{"text":"If that output is a straight line of forty green commits each adding a complete feature, a reader learns nothing except that you squashed. Consider not squashing on personal work, and writing the "},{"text":"why","i":true},{"text":" in the body."}]},{"t":"h2","id":"somebody-else-s-gate-is-the-strongest-signal","runs":[{"text":"Somebody else’s gate is the strongest signal"}]},{"t":"p","runs":[{"text":"One merged pull request to a project you do not control outranks an entire solo repository, for a mechanical reason: a maintainer who owes you nothing read it and said yes."}]},{"t":"p","runs":[{"text":"The same logic ranks the rest:"}]},{"t":"ul","items":[[{"text":"A bug report with a "},{"text":"minimal reproduction","b":true},{"text":": the version numbers, the smallest failing input, the expected and actual behaviour. Maintainers can tell instantly whether somebody did the reduction work, and reducing a bug is the diagnosis skill in miniature."}],[{"text":"A "},{"text":"code review you left on a stranger’s change","b":true},{"text":", if it is public. This is visible judgment, which is the scarce thing."}],[{"text":"A "},{"text":"documentation fix","b":true},{"text":" for the thing that confused you. Small, wanted, and it proves you read the source."}],[{"text":"A "},{"text":"post-mortem","b":true},{"text":" of something of yours that broke. Timeline, cause, what you changed. Almost nobody writes these voluntarily and they read as unmistakably real."}]]},{"t":"h2","id":"maintenance-beats-launch","runs":[{"text":"Maintenance beats launch"}]},{"t":"p","runs":[{"text":"A project with users has an issue tracker, and an issue tracker is a record of you handling other people’s problems over time. Three years of small commits to one thing that people actually use says more than nine finished-and-abandoned repositories."}]},{"t":"p","runs":[{"text":"If your project has no users, say what you learned from it instead of implying adoption. A README that says “I built this to understand how consistent hashing behaves when a node leaves; here is what surprised me” is honest and informative. A README that implies a user base you do not have is checkable and will be checked."}]},{"t":"h2","id":"write-the-thing-down","runs":[{"text":"Write the thing down"}]},{"t":"p","runs":[{"text":"A short write-up of one real problem (what you expected, what happened, how you found it, what you would do differently) is worth more than most projects, and it takes an afternoon."}]},{"t":"p","runs":[{"text":"It works because it is the one format that cannot be outsourced without becoming obviously generic. Specificity is the signal: the actual query plan, the actual 3am graph, the actual wrong assumption. Free hosting exists everywhere: GitHub Pages, Codeberg Pages, a plain markdown file in a repository. You do not need a domain and you do not need a design."}]},{"t":"h2","id":"the-part-that-is-unfair-said-plainly","runs":[{"text":"The part that is unfair, said plainly"}]},{"t":"p","runs":[{"text":"Everything above rewards discretionary time, and discretionary time is distributed by luck. Somebody working two jobs or caring for a family cannot produce a contribution history, and treating one as a requirement filters on circumstance while feeling like meritocracy."}]},{"t":"p","runs":[{"text":"If you are hiring: a portfolio is evidence when present and not evidence when absent. Build a loop that works for a candidate with nothing public, because many of the strongest people have nothing public: their work belongs to an employer."}]},{"t":"p","runs":[{"text":"It is also getting harder to contribute. Maintainers of popular projects are receiving large volumes of low-quality generated pull requests and reports, and several have responded by tightening what they accept from newcomers. So the advice “go contribute to open source” is more expensive than it was two years ago, and you should expect a slower, more sceptical reception than the guides written in 2019 describe."}]},{"t":"h2","id":"the-limitation","runs":[{"text":"The limitation"}],"role":"limit"},{"t":"p","runs":[{"text":"This lesson is an argument about signalling, not a study. Nobody has measured what hiring managers actually weigh now, the answer differs enormously between a two-person startup and a bank, and plenty of screening is still done by keyword filters that read none of this. Take it as a reasoned account of where information survives, and ask the specific people you want to work for what they look at."}]}],"check":{"question":[{"text":"Why does a merged pull request to someone else’s project now outrank a polished solo project of far larger size?"}],"options":[{"text":[{"text":"It proves the candidate can work with an existing codebase, which solo projects never demonstrate."}],"correct":false,"tempting":[{"text":"Real but not the mechanism; a large solo project also involves working within existing structure."}]},{"text":[{"text":"Open-source work is public, so it can be verified, whereas solo repositories might be copied from elsewhere."}],"correct":false,"tempting":[{"text":"Both are equally public; verifiability is not what separates them."}]},{"text":[{"text":"An independent maintainer with no obligation to the candidate read the change and accepted it."}],"correct":true,"tempting":null},{"text":[{"text":"Maintainers hold contributions to a higher technical standard than the candidate would apply to their own work."}],"correct":false,"tempting":[{"text":"Standards vary widely by project; the signal comes from the gate existing at all, not from its height."}]}],"order":[1,2,3,0],"why":null},"prev":{"slug":"interviews-that-still-discriminate","title":"Hiring when everyone has the same tools open","minutes":10},"next":{"slug":"roles-that-grew-and-shrank","title":"Where the work moved, and what is genuinely unknown","minutes":9}}}