Content Tagged engineering
-
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.
-
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. -
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.