All Content
-
Ries E., The Lean Startup (2017)
Ries’s book translates established business fundamentals into a transitional vocabulary familiar to engineers. While this can be useful early on, it becomes a liability as products mature—introducing friction through mismatched terminology.
The review includes a translation table that highlights how much simpler communication between business and engineering could have been with closer alignment to established business terminology.
-
abbr-title-tap (npm package)
A drop-in enhancement for
<abbr title="...">
that brings native-like hover tooltips to mobile users — with tap-triggered display and automatic hiding on outside tap. Zero-config, tiny, and production-ready. -
Playwright Hierarchy Reporter (npm package)
A minimal, custom hierarchical test reporter for Playwright with clean, indented CLI output — inspired by Vitest’s verbose reporter.
-
Null-Object (npm package)
A runtime-safe, polymorphic noop object that absorbs all method calls, property accesses, and assignments—without side effects or the need for conditionals.
-
Puppeteer PDF Service
The small, decoupled, quickly set up and easily scalable service to generate PDFs from the styled web page with Puppeteer.
-
Meszaros G., xUnit Test Patterns (2007)
This book is essential language-agnostic source to make your TDD delivering principal values: maintainable test code, joyful SUT refactorings, and zero product defects.
-
Architecture, Design.
This is just the short clarification for those hesitant about the subjects
-
Enhanced ENV Schema CLI (npm package)
The missing CLI (enhanced) and programmatic wrapper around env-schema that conveniently validates environment variables against JSON Schema in your CI pipelines.
-
Export Members from a TypeScript NPM Package
The short memo on how to conveniently export members of a TypeScript NPM package.
-
Scrum at a Glance
A quick grasp of Scrum and a handy reference based on the latest Scrum Guide.
-
Cohn M., User Stories Applied (2004)
In a requirements flow, user stories come after use cases and before requirements specifications (whether SbE or traditional). This book is a foundational resource for exploring the 'how' and 'why' of user stories.
-
Multiple Conditionals Clean Way
Make conditionals of any size readable and manageable.
-
Petre M., Software Design Decoded (2016)
66 Ways Experts Think.
More fun than teaching, yet still insightful and thought-provoking, this very short set of habits, practices, and approaches captures what software designers encounter on their way to mastery.
-
Technical Debt in the Eye of the Beholder
Humor. Or is it?
If a tree falls in a forest and no one is around to hear it, does it make a sound?. Yet another metaphor—perhaps useful—seeding the ever-growing silo of software analogies.
-
HTTP Convenience Pack (npm package)
The small TypeScript HTTP convenience library; methods, statuses, MIME types, headers enums, types, validators, normalizers,
in group
,of group
,make
,extract
etc. -
Beck K., Extreme Programming Explained (1999)
The book is only 1/5 about programming and 4/5 about organizational matters. The book covers all the core and corollary elements of what is nowadays called Agile. It accompanies the other 2 Beck's books on the subject: Planning Extreme Programming (2000) and TDD by Example (2002).
-
Scrum in Practice: Concerns Analysis
Scrum is often praised for its simplicity and adaptability (however, see how complex it gets), but when applied to non-trivial domains, novel products, its standard processes reveal significant gaps.
Below, I state my key concerns with Scrum, and contrast Scrum’s theoretical approach with the realities of implementation.
-
Wiegers K., Software Development Pearls (2021)
-
Cockburn A., Writing Effective Use Cases (2001)
The book presents Use Cases, a great framework for deterministic requirements. The later you discover a requirements mistake, the more it costs to fix. It is like $1 in design phase vs $10 in development vs $100 in production.
-
OpenAPI Spec Markdown Merger (npm package)
Expand the OpenAPI JSON specification
description
fields by merging the arbitrary markdown files translated to HTML. -
Monolith, Not Ball of Mud
See Big Ball of Mud pattern.
My answer for this StackOverflow question, explaining "modular monolith" term introduction redundancy.
-
Beck K., Implementation Patterns (2007)
The book is about code design—literally, how we construct meanings through code. It concisely presents a wide set of techniques and conventions that improve readability, communicate intent clearly, and make code easier to modify and use.
There is a number of great basic books on the subject (1, 2, 3). This one is a good addition in a concise form.
-
Design is Inevitable
-
Beck K., Planning Extreme Programming (2001)
The book on XP planning covers most of what today Agile is in a nutshell. It is a great practical review of Agile Software Engineering implementation.
-
The Death of Agile (Allen Holub)
Who is Allen Holub, his books.
The YouTube video transcript summary by DeepSeek discussing Agile and Scrum.
See also Martin Fowler's (one of Agile Manifesto's creators) The State of Agile Software in 2018 article.
-
Evans E., Domain-Driven Design (2004)
Successful business applications are among the most efficient and effective investments. DDD provides a unique engineering foundation to build such applications. The blue book is a must-practice resource for every OO business software developer to learn DDD.
-
Clean Code as a Business Asset
“Clean code” became meaningless for programmers and remains unclear to business. Here’s a recap for both.
-
When Bother with Events
When "you aren't gonna need it" (YAGNI) and when you do actually need events.
-
Beck K., TDD by Example (2002)
The foundational book on TDD. As mostly conceptual, it is an interesting reading for the experienced TDDers. The TDD cycle is, probably, the sole practical - yet critical - takeout for beginners.
-
Astels D., Test-Driven Development (2003)
The book itself is quite heavy but, unlike other TDD books, it puts TDD after modeling which cardinally helps to start applying TDD in practice. Most valuable content is reviewed.
-
Programming is a Flow of Decisions
Whether good or bad, timely taken or missed depends on the professional level of software engineer dealing with your product.
-
Git Workflows, Principally
Are modern Git workflows actually competing? What is the purpose of each? This writing is to help you decide for yourself. Fewer words, more substance.
-
Producing Top-Quality Code Is Fast
Top-quality code is faster to produce, but learning to do so is much harder. That’s why great programmers are rare, software waste is common—and bad code frustration spreads much more than the great joy programming naturally delivers.
-
How Good Are Bad Software Engineers (Stan)
Talking 10x programmers? What about "minus 1"? "minus 5"? Paired reading with the one from Nasir Afaf.
-
Sloppy Code As a Silent Business Killer
And how to fix the issue.
-
Software Engineer Toolbox Granularity
My personal approach here is that software creation tooling—both managerial and engineering—is often presented in books and media as monolithic. In reality, these are composites of dozens to hundreds of smaller, independent tools that each bring their own value.
-
Old Programming Joke
still actual as ever...
-
Code-and-Fix Development
McConnell's original definition from his Professional Software Development (2003) book, p. 50.
-
Fowler M., UML Distilled (2004)
UML is a must-have tool for modeling, designing software, for communicating and accumulating knowledge about software within teams and across time.
-
Kruchten P., Managing Technical Debt (2019)
The book presents a concise and structured look at what the technical debt is, where it comes from and how to treat it in short- and long-term perspective.
The book is somewhat a middle ground between business and engineering perspectives, gravitating towards managerial aspects of technical debt.
It suggests a number of useful techniques for managing the debt. Meanwhile, some of the techniques look inapplicable trying to solve the engineering issues using managerial approaches.
-
Applying TDD Teaches Everything
TDD is the opposite of covering code by test. Learning it very early and the correct way gives a programmer a deliverance from the darkness surrounding them.
-
Gause D., Exploring Requirements: Quality Before Design (1989)
Many well-written books on requirements sink into details trying to establish formal processes that promise flawless execution. Often they create rigid complicated systems, difficult to apply in practice.
This book provides seemingly forgotten basics that flexibly guide our requirements journeys leading to unambiguous knowledge and products customers love. It can serve as the single comprehensive source of basic knowledge, allowing beginners to start practicing requirements extraction right away—both in substance and process.
For reference, here is a number of more modern practical books on the subject worth to study: 1, 2, 3.
-
A Software Product Is an Omelette
Smile. Great mood is the secret ingredient to great software.
-
Fowler M., Domain-Specific Languages (2011)
Probably a primary and essential reading for more experienced developers specifically for practical applications and secondary due to omnipresent usage of DSLs in the industry.
-
Sadalage P., Fowler M., NoSQL Distilled (2013)
NoSQL is not "go-to" choice for every project. While relational databases are largely similar, NoSQL has different types each designed for specific purpose. The book is a right sized intro to when and why NoSQL databases should be selected.