Software the Hard way
Tech debt can’t be solved as a roadmap item. It needs to be part of your daily routine
Moneyball for Software Teams – An Imperfect Heuristic for Quantifying Dev Performance
Product-Engineering Collaboration – Getting Past Waterfall
18 Years A Transient – My Journey Through the American Immigration System as a Computer Engineer
Our Engineering Principles and Best Practices
My Path to Financial Independence as a Software Engineer
The Law of Net Design Costs
Experiences working with an Outsourced Dev Shop
Mutation Driven Testing – When TDD Just Isn’t Good Enough
Why Is There So Much Crap Software In The World
If Founders Treated Their Investors The Same Way They Treated Their Employees
Preventing Software Rot
Bayes vs Frequentists – An Empirical Test In Code
When Feature Flags Do And Don’t Make Sense
The Birth of Legacy Software – How Change Aversion Feeds On Itself
Abstractions Are In The Eye Of The Beholder
Nuances of Overloading and Overriding in Java
Alert Fast
Hiring is Broken And Yours Is Too
SSH Considered Harmful – Why You Should Be Using Persistent Sessions
Cracking the Senior Software Interview
Rethinking Software Testing: Perspectives from the world of Hardware
An Alternative to Dependency Injection Frameworks
Myths Programmers Believe about CPU Caches
Don’t be an Evolutionary Programmer
Building a WebApp from A-Z: The Caucus Tech Stack
From Hello-World to Web-Launch in 2 Years