Skip to content

Topic archive

Software Engineering

Software Engineering covers developer tooling, architecture, maintainability, engineering workflows, protocols, and practices that improve how software is designed and built.

460 articles
Software Engineering 01 Sep 2026 3 min read

Use the Strangler Fig Pattern for Incremental System Modernization

Large rewrites concentrate technical and delivery risk. Teams can spend months reproducing existing behavior before users receive any benefit, while the original system continues to change. The strangler fig pattern takes a different approach: replace capabilities incrementally and route traffic to the new implementation as each slice becomes ready. Choose a bounded slice Start with a capability that has a clear input, output, and ownership boundary. Good first candidates are important enough to validate the migration approach but not so central that every subsystem must move at once.

Software Engineering 01 Sep 2026 5 min read

Evolving APIs Without Breaking Clients

An API is not only an HTTP path or function signature. It is a contract about syntax, semantics, timing, errors, ordering, defaults, and lifecycle. Breaking changes often happen because a server remains syntactically compatible while changing one of those less-visible assumptions. Safe API evolution starts by identifying what clients can reasonably depend on and designing changes that allow old and new versions to coexist. Compatibility has multiple dimensions A change can preserve JSON shape and still break clients.

Software Engineering 01 Sep 2026 4 min read

Contract Tests for Reliable Service Boundaries

Distributed systems fail in an awkward place: each service can pass its own tests while the interaction between two services is incompatible. A provider may rename a JSON field, tighten validation, change an enum, or stop returning a value that a consumer quietly depends on. Contract tests make those cross-service assumptions executable. What a contract is A contract describes an observable interaction between a consumer and a provider. For an HTTP API, it might specify:

Software Engineering 01 Oct 2025 2 min read

Programming Languages and Tools with Language Server Protocol (LSP) Support

Modern editors such as VS Code, Neovim, Emacs, and Sublime Text can share language intelligence through the Language Server Protocol (LSP). A language server runs separately from the editor and provides features such as completion, diagnostics, symbol navigation, hover information, and refactoring support. How LSP Works A typical setup has three parts: a language server installed on the system or inside the project; an editor or editor plugin that speaks LSP; project configuration the server can understand. For example, Neovim can connect to gopls for Go, while VS Code normally installs the appropriate extension that manages the server integration.