IS A LOOP.
Start with a working prototype.
Build the server that powers the application.
Turn application logic into usable interfaces.
Persist the data your application depends on.
Learn how to know your code actually works.
Authentication, authorization and validation.
Branches, commits, pull requests, history and investigation.
Understand what changed and why.
Make changes without disrupting the main codebase.
Discuss, review and improve changes before merging.
Test, build and release automatically.
Version and deploy real software.
Real software running for real users.
People depend on the software you built.
Something breaks. Now you investigate why.
Trace problems through logs, code and history.