All Content
-
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.
-
Enchanced ENV Schema CLI (NPM Package)
The missing CLI (enhanced) and programmatic wrapper around env-schema that validates environment variables against JSON Schema.
-
Export Members from a TypeScript NPM Package
The short memo on how to conveniently export members of a TypeScript NPM package.
-
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.
-
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.
-
Multiple Conditionals Clean Way
Make conditionals of any size readable and manageable.
For more about conditionals code smells and refactorings refer to Venables R., Refactoring Workbook (2003), ch. 7, Fowler M.,Refactoring (1999, 2018), ch. 10, Martin R., Clean Code (2008), G28,29,33, Kerievsky J., Refactoring to Patterns (2004), ch. 4, Conditional Complexity.
-
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, but when applied to non-trivial domains, novel products, its standard processes reveal significant gaps.
Below, I state the my key concerns with Scrum, and contrast Scrum’s theoretical approach with the realities of implementation.
-
Wiegers K., Software Development Pearls (2021)
The book is a collection of lessons from decades of the author's' work in software engineering.
It covers lessons in software requirements, design, quality, project and process management, organization culture and teamwork.
Steve McConnell's foreword to the book says: "Karl is one of the most thoughtful software people I know. He has reflected deeply on the software development irritants he has encountered over his career, and this book contains 60 of his most valuable responses".
-
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.
-
Architecture, Design
This is just the short memo for those hesitant about the subjects. See random examples.
-
OpanAPI 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.
-
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
-
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
-
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.