You've just inherited a legacy C++ codebase, now what?
A practical guide for developers on how to approach, understand, and incrementally improve a newly inherited legacy C++ codebase.
A practical guide for developers on how to approach, understand, and incrementally improve a newly inherited legacy C++ codebase.
Explains why reusable UI components should avoid outer margins and padding, as they break encapsulation and create layout issues.
Explains evolutionary design in software development as a middle path between over- and under-design, emphasizing simplicity and refactoring.
A TypeScript tip on using a custom `TODO` type as a purposeful escape hatch for difficult type problems, with a caution against overuse.
Compares using pre-commit hooks vs. CI pipelines for automating code checks, discussing trade-offs like speed, feedback, and handling slow tests.
A fable about a security guardian and a developer learning to collaborate, illustrating the principles of DevSecOps and secure software development.
A summary of a study showing how technical debt and low code quality significantly slow development and increase defects.
A step-by-step guide to installing and running a local SonarQube instance for code quality analysis and experimentation.
A technical guide on creating a custom linting rule for the Go programming language, using a rule to forbid fmt.Printf as an example.
A chalk talk on using Amazon CodeCatalyst to improve code quality through test plans, coverage, and dependency checks.
A researcher's informal survey among software engineering academics reveals surprising insights into their personal use of automated refactoring tools in IDEs.
A developer reflects on over-engineering a CRUD controller, learning that clever abstractions can create unmaintainable code.
A developer explains 'Parametric Progress', a method for improving codebases by changing only one aspect at a time to better understand system effects.
Announcing a live stream with a typescript-eslint maintainer to build custom ESLint rules and answer questions about ESLint for JavaScript/TypeScript.
A guide to improving code reviews by focusing on constructive, non-personal feedback and providing clear, actionable comments.
Explains why deep code nesting is problematic and demonstrates refactoring techniques like extraction and inversion to reduce complexity in C#.
A detailed review of Mat Ryer's 'Go Programming Blueprints' book, covering its strengths, weaknesses, and key takeaways for Go developers.
Five practical tips for software engineers to improve their skills in 2023, covering learning, code quality, complex systems, cloud, and self-care.
A programmer's reflection on the philosophical and practical differences between truly fixing a bug versus just patching it, emphasizing testing and documentation.
A review and guide to NDepend, a static code analysis tool for .NET, covering its features, setup, and use for improving code quality.