Software engineering
You know the syntax, classes and collections. The program runs. Then the real questions come: why it waits a minute with a million orders, why every change breaks something else, why the counter is sometimes wrong, how someone gets into an account that isn't theirs. The answers are not in any one language, and they hold for all of them. This course is about them.
Choose the language of the code
What you learn
Section titled "What you learn"- Design patterns: proven solutions to problems that come back in every project, and when not to use them.
- Clean code and refactoring: code that another person (and you, a month later) can change without fear.
- Algorithms and complexity: how fast the work grows with the data, searching, sorting, data structures, graphs, dynamic programming.
- Concurrency and race conditions: how two threads spoil each other's data, and how to protect it.
- Security for developers: untrusted input, passwords, sessions and CSRF, tokens, secrets, dependencies and random numbers.
- Software architecture: layers, modules and services, events and queues, API design, caching, scaling and recorded decisions (ADR).
- The architect at work: an add-on for solution and enterprise architects: measurable requirements, trade-offs, resilience, integration, migrating live systems, architecture review and a project.
How you learn here
Section titled "How you learn here"Every lesson starts from a problem in real code. Then the idea is shown with a scene, synced to the code line by line: how the objects move, how the number of steps grows, how the threads interleave. The text is the same for the four languages, the code is in the language you choose, and every program has been run and checked. You can switch the language in any lesson.
What you need to know
Section titled "What you need to know"One of the four languages, at least up to "Classes and objects" and "Collections". For concurrency, also "Real-world programs". Every module says at its start which lessons of the language it uses.