Skip to content
Anton GoncharovAI systems developer

The Clean Coder

Robert C. Martin

  • Programming
  • Professionalism

A book about what distinguishes a professional developer from someone who can just write code: responsibility for the result, the ability to say “no”, honest estimates, tests and constant practice.

Martin goes through his own mistakes over decades of his career, from missed deadlines to projects he shouldn’t have taken.

Key ideas

  1. A professional is responsible for their code: they don’t ship what they’re unsure of and find their own bugs.
  2. A “no” with an explanation is more honest than “I’ll try” that ends with a missed deadline.
  3. An estimate is a probability, not a promise: give a range and name the risks.
  4. Tests are a way to move fast and not be afraid to change code.
  5. Learning is your own responsibility, not your employer’s.

How I apply it

I estimate projects as a range with a list of risks, not a single number. If a task doesn’t fit the budget, I say so before the start. Tests and CI from day one of a project, including this site.

Where and how I applied it

  • Demo · Web app · estimate · PDF

    Renovation estimate calculator

    An estimate with a contingency reserve and versions for negotiation: it allows for risks instead of being one optimistic number.

  • Demo · Web app · metrics · CI thresholds

    Bot quality evaluation

    Thresholds like in CI: if the metrics drop, a banner says CI wouldn’t let this release through — I don’t ship what I’m not sure about.

  • Demo · Web app · Laravel · PostgreSQL

    Warehouse system on Laravel

    Warehouse accounting is covered by PHPUnit tests: the code can be changed without fear of breaking stock levels.

More on the shelf

  • Reading

    Hands-On APIs for AI and Data Science

    Ryan Day

    A practical book on building an API for data and connecting AI to it. The running project is a FastAPI service with a database and documentation, then an SDK for it, using the API in analytics and, finally, LangChain agents that call the API themselves.

    AI and agentsPythonAPIApplied in 3 projects
  • Reading

    Server Applications in Python, Django, Flask and FastAPI

    R. S. Bukharev

    The path of server-side development in Python, from sockets and protocols to architecture and launch on a server. Django, Flask and FastAPI are covered through real projects: a CRM system, a Telegram bot with server-side logic, a REST API for a mobile app and a WebSocket chat. Separate chapters cover caching and scaling, Docker and Kubernetes, PostgreSQL, MySQL, SQLite and MongoDB, and security: password hashing, JWT and OAuth 2.0, protection against SQL injection, XSS and CSRF, TLS.

    ProgrammingPythonBackendApplied in 1 project