Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.

Roadmap · Foundations

Software design and clean code (TypeScript)

Opens with credits

For students and early-career engineers who can make code work in Java, Python, TypeScript or C# and now want it to stay easy to read, test and change. By the end you can structure classes with OOP and SOLID, use the 23 classic design patterns with judgement, refactor safely, sketch a design in UML and take a small system from requirements to working code.

Curated by Tauseef Fayyaz10 stages, 71 topics~6 months at a few hours a week

By the end, you will be able to

  • Model a problem with classes that protect their own rules, prefer composition over inheritance, and explain each choice in plain words
  • Spot SOLID violations and code smells in your own and other people's code, and fix them with named refactorings in small steps behind tests
  • Recognise when each of the 23 Gang of Four patterns fits, write it in your language, and say when a plain function is the better answer
  • Take a small system such as a parking lot, a rate limiter or an expense splitter from requirements to a class diagram and working, tested code, which is also what a design coding round asks for
  • Give code review comments people act on, and turn the comments you receive into a checklist that improves every change you send

The path

10 stages, in the order to learn them. Open one to start.

  1. 1Object-oriented programming properlyGo beyond the textbook definitions: use classes to protect rules, interfaces to hide change, polymorphism to remove type checks and composition instead of deep inheritance, in your language's modern style.8 topics · ~3 weeks
  2. 2SOLID with before and after codeLearn the five SOLID principles as questions to ask of a design, see each one as a before and after refactoring in your language, and learn dependency injection, the technique that makes them practical.7 topics · ~3 weeks
  3. Clean code: naming, functions and errorsPractise the small decisions you make hundreds of times a day: names, function size, arguments, comments, guard clauses and error handling, with your language's style guide and tools enforcing the rest.8 topics · ~2 weeksOpens with credits
  4. Creational patternsLearn what a design pattern is and is not, then the five creational patterns: Singleton, Factory Method, Abstract Factory, Builder and Prototype, with when each one earns its place.6 topics · ~2 weeksOpens with credits
  5. Structural patternsLearn the seven structural patterns, Adapter, Bridge, Composite, Decorator, Facade, Flyweight and Proxy, which describe how objects are composed, and how to tell the look-alike ones apart.7 topics · ~2 weeksOpens with credits
  6. Behavioural patternsLearn the eleven behavioural patterns, which describe how objects share work and talk to each other, starting with the everyday ones, Strategy, Observer, Command and State, and ending with Visitor and Interpreter.9 topics · ~3 weeksOpens with credits
  7. UML and class diagrams you actually needLearn the small part of UML engineers really draw: class diagrams with the five relationship arrows and multiplicity, sequence diagrams and state diagrams, sketched by hand or written as code with PlantUML or Mermaid.6 topics · ~2 weeksOpens with credits
  8. Refactoring and code smellsLearn to change the structure of code without changing what it does: name the smells, pin behaviour with tests, then improve code in small, automated, reversible steps, practised on a real legacy kata.6 topics · ~3 weeksOpens with credits
  9. Designing small systems end to endPut everything together with low level design: take a short problem statement, such as a parking lot, a library, a rate limiter or an expense splitter, to requirements, classes, a diagram and working, tested code.8 topics · ~4 weeksOpens with credits
  10. Code review: giving and taking itUse code review as the place design skill is taught every day: what to look for and in what order, how to write comments people act on, how to keep changes small, and how to learn from the comments you receive.6 topics · ~2 weeksOpens with credits
Keep reading

8 more stages, 56 more topics, free with an account.

You have seen the open stages of the Software design and clean code roadmap. Every topic it covers is listed above, and an account opens the rest: what each topic means, a question to check yourself, the courses, the practice and Tauseef's advice for every stage. Early access is open: sign up and your account is active shortly after.

Everything here is free to learn from. A few things, like adding a roadmap, keeping a cheat sheet or asking Tauseef a question, use credits. You get 15 when you join, your first roadmap is free, and if you are learning seriously and run out, you can ask for more. Credits only make sure the platform goes to people who are actually learning.

Build a project

A finished project proves more than a certificate.

  • Start with this oneintermediate2 semesters · 3 students
    Approval Workflow Engine with Escalations for Small Offices

    State, Strategy, Observer and Chain of Responsibility working together in one system people would use

    • TypeScript with Node.js
    • PostgreSQL
    • React with a form builder
    • Job queue (BullMQ or pg-boss)
    • Email and webhook integrations

Picked from the other libraries by shared topics.

Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.

  • 1:1 Mentorship
  • Fresh Graduate Mentorship
  • Career Guidance

Brand deals, promos and partnerships: tauseeffayyaz@gmail.com