# webpro/programming-principles: a categorized reference list for design reviews

> The repository is a single README that groups programming principles and design patterns into generic, relationship, entity and test categories. It is a reading list with reasoning, not a framework, and its value depends on how you use it in a review.

**webpro/programming-principles** — Categorized overview of programming principles & design patterns

- Repository: https://github.com/webpro/programming-principles
- Website: https://github.com/webpro/programming-principles
- Stars: 3,099 · Forks: 687
- Language: Unknown
- License: not declared
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/webpro-programming-principles

## What the programming-principles README actually is

This is a reference document, not software. The repository has no package manifest, no source tree and no build step. Top-level entries are .github/, .prettierrc and README.md. The README states its own purpose plainly: it is "a reference for myself, and maybe it is of help to you during design, discussion, or review." The author also warns that "the list is incomplete, and sometimes trade-offs need to be made between conflicting principles," and adds a ranking rule: "higher ranked principles usually beat lower ranked ones." That ranking rule is the most opinionated thing in the document, and it is the part most likely to be argued about in a real review. The audience is working engineers who already know terms like coupling and cohesion and want a compact place to check the reasoning and the links, not beginners looking for a first course in programming.

## How the principles are categorized

The table of contents splits entries into four groups. Generic holds KISS, YAGNI, Do The Simplest Thing That Could Possibly Work, Separation of Concerns, Code For The Maintainer, Avoid Premature Optimization, Optimize for Deletion, Keep things DRY and the Boy Scout Rule. Relationships between modules, classes, components, entities holds Connascence, Minimise Coupling, Law of Demeter, Composition Over Inheritance, Orthogonality, the Robustness Principle and Inversion of Control. Modules, classes, components, entities holds Maximise Cohesion, Liskov Substitution Principle, Open/Closed Principle, Single Responsibility Principle, Hide Implementation Details, Curly's Law, Encapsulate What Changes, Interface Segregation Principle, Command Query Separation, Dependency Inversion Principle and SOLID. Test holds the FIRST principles of testing and Arrange, Act, Assert. Each entry follows the same shape: a short definition, then Why, sometimes How, then a Resources list of external links. That repetition is the mechanism. You can jump to any entry and get the same three-part structure, which is what makes the document usable as a lookup during a review rather than something you read front to back.

## Reading your first principle from the README

There is nothing to install, and no release artifact or package name exists to fetch. The README is the product, so the first real use is opening the file and reading one entry. The repository lists no install command, no version and no dependency, so the only practical starting point is the table of contents, which links every principle to its section further down the same file. Start with KISS, the first entry in the Generic category. The entry opens with the bolded expansion of the acronym, then a one-line claim that most systems work and are understood better if they are kept simple, then a Why list, then a Resources list of external links. Every other entry repeats that shape: definition, Why, sometimes How, Resources. Read the Generic group first if you want to see the ranking rule in context, since the README states that higher ranked principles usually beat lower ranked ones and the Generic entries sit at the top of the list. From there, follow the table of contents links into the relationships group, where Minimise Coupling and Law of Demeter sit next to each other, and then into the entities group, which ends with SOLID as a single entry that gathers the five principles listed above it.

## Where the README stops short

The document is a list with rationale, and it does not pretend otherwise. There are no code examples for any principle, no language-specific guidance and no worked refactoring. If you arrive wanting to know what a violation of the Interface Segregation Principle looks like in your codebase, the README will give you the definition and a link, and you will have to follow the link. The ranking claim is also stated without a defense: the README says higher ranked principles usually beat lower ranked ones but does not explain how the ordering was chosen or what to do when two principles at similar ranks conflict. The author acknowledges the trade-off problem in the opening paragraph and then leaves it to the reader. Treat it as the wrong tool when you need a course, exercises, or automated enforcement. It will not fail a build, and it will not teach a junior engineer what coupling means from scratch.

## Compared with a book or a course

The obvious alternative is a structured text such as The Principles of Good Programming, which the README names as its inspiration, or a full course that sequences the material with exercises. The difference in approach is scope and depth. A book or course builds one argument across chapters and expects you to work through it in order. This repository does the opposite: it assumes you already have a question and want a short answer plus a pointer. That makes it faster to consult during a design review and useless as a first introduction. If your team needs a shared reference point that fits in one file and can be linked from a pull request comment, the categorized README format wins. If your team needs to build the underlying understanding, the book format wins, and this list is a supplement to it rather than a replacement.

## Maintenance, upgrades and licensing

There are no releases, so there is no upgrade path to plan for. The repository is not archived, and the last push was on 2026-06-30. Because the content is prose and links rather than code, using it costs nothing beyond reading it, and there is no dependency to pin. If you fork it for internal use, the cost is keeping your fork aligned with upstream edits, which you can do by pulling the default branch. The repository does not state a license in the README, so if you intend to redistribute the content or embed it in internal documentation, check the repository for a license file before doing so. Nothing here is legal advice; the point is simply that the license is not visible in the README.

## Conclusion

Use webpro/programming-principles when you need a shared vocabulary for a design discussion and want the reasoning and links behind each principle in one place. Do not use it as a course, a linter rule set, or a source of examples, because the README is a list with rationale and further reading, not a tutorial. The repository is not archived, and its last push was on 2026-06-30. Before adopting it as a team reference, open the README on the default branch and check that the categories and ordering still match the way your team talks about design.

## FAQ

### What is webpro/programming-principles?

It is a categorized README that lists programming principles and design patterns with a short definition, a Why section and links to further resources. The author describes it as a reference for design, discussion or review.

### Does webpro/programming-principles cover object oriented programming principles?

Yes. The Modules, classes, components, entities category includes the Liskov Substitution Principle, the Open/Closed Principle, the Single Responsibility Principle, the Interface Segregation Principle, the Dependency Inversion Principle and SOLID as a group.

### Is webpro/programming-principles a book or a course?

Neither. The README is a list of principles with reasoning and external links, and the author states the list is incomplete. It has no exercises and no code examples, so it works as a lookup rather than a curriculum.

### How do I install webpro/programming-principles?

There is nothing to install. The README is the only file of substance at the top level alongside .github/ and .prettierrc, so you open it and read.

### Does webpro/programming-principles state a license?

The README does not state a license. Check the repository for a license file before redistributing the content.

## Sources

- [Issues](https://github.com/webpro/programming-principles/issues)
- [Project website](https://github.com/webpro/programming-principles)
- [README](https://github.com/webpro/programming-principles/blob/main/README.md)
- [webpro/programming-principles on GitHub](https://github.com/webpro/programming-principles)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/webpro-programming-principles
