There is a multi-dimensional spectrum and trade-off between technical-debt, scale, speed, and development ease.
Very roughly speaking,
| School/Uni | Hackathons | Early Startups | Scale ups | Industry | |
|---|---|---|---|---|---|
| team size | Often 1, 1-4 | 1-4 | 2-10 (the small team size is becoming more viable atm) | 30-100 | 100> |
| longevity of team | weeks | couple days - couple mon | years | half a decade | >half a decade |
| users (consumer app) | 0 | 0-100 | 100-10k’s | 100’s of thousands | millions |
| engineering practices | none (💩), no one knows what this is | enough to collaborate (hackers often aren’t bothered/different ways of doing things) | basics are there (depends on engineering experience) | basics V2 established | advanced to the point new joiners suffer. can be outdated. |
| documentation | 0, or enough for assessment requirements | enough to submit the project | non-standardised starting out | standardised | overwhelming and often varying maintanability |
| CI/CD | 😂 | basic core pipelines if hackers skilled | basic core pipelines | basic core + nice-to-have pipelines | multiple pipelines with varying patterns |
| testing | 😂 | no time for that. manual. | basic test suite | test suite standardised | multiple testing practices - often rigorous |
| tech-debt | 0 | low | high | med-high | v.high |
| tech-debt rate of change | massive | high (it just needs to work) | med | low-med | high (from organisation scale and any restructuring) |
| release speed | fast | v. fast | fast | fast | slow |
| ability to respond to change | varies | v.high | high | high | low |
(note: industry here is a broad term, I’m thinking less of FAANG quality engineering here)
The key differences between each context arise from the expected longevity of each context and the amount of foresight sustained throughout its lifetime.
It’s extremely challenging to create the ‘best’ for all characteristics in a context due to the trade-offs. The ‘best’ is also subjective.
One of way to get a sense of the difference is to read the ToC of “Software Engineering at Google” https://abseil.io/resources/swe-book/html/toc.html It gives a sense of the level of engineering reached at an established leading tech giant.