Experiences working with an Outsourced Dev Shop

Many years ago, a younger and more naive version of myself decided to try bootstrapping a startup together with my co-founder, while still juggling our full-time jobs. She had the idea, product vision, and contacts for initial users, while I was in charge of tech development. Our plan for the MVP was to launch using … Continue reading Experiences working with an Outsourced Dev Shop

Mutation Driven Testing – When TDD Just Isn’t Good Enough

As someone who loves discussing Software Craftsmanship and best practices, Test Driven Development (TDD) is a bit of a sore spot for me. Let me start off by saying that I love TDD’s emphasis on testing. Too many software projects skimp on testing. And the results speak for themselves many years down the road, when … Continue reading Mutation Driven Testing – When TDD Just Isn’t Good Enough

Why Is There So Much Crap Software In The World

All around us, we are surrounded by crappy software. Pension funds that are stumbling along using decades old batch scripts with faulty assumptions. Credit agencies have leaked over a hundred million social security numbers and other confidential data. Planes need to be rebooted every 51 days to prevent "potentially catastrophic" bugs.And not to even mention … Continue reading Why Is There So Much Crap Software In The World

Abstractions Are In The Eye Of The Beholder

One of the most common debates I see, is on the right level of abstraction to use when coding. The line between over-engineered and unnecessarily-verbose is a very fuzzy one, and is the source of never-ending debates. Unfortunately, this debate is unlikely to ever get resolved. For one simple reason. The correct answer is both … Continue reading Abstractions Are In The Eye Of The Beholder

Alert Fast

A dichotomy I often see in many different teams and projects, is the dilemma between “failing fast” and “failing gracefully.” Here’s a simplified example of what I see far too often, and gets to the core of the dilemma. public String generateGreeting() { try { return “Hello ” + getName(); } catch (Exception e) { … Continue reading Alert Fast

SSH Considered Harmful – Why You Should Be Using Persistent Sessions

No, there hasn't been any new vulnerability found in SSH, nor am I denying the usefulness of SSH as a building block in the dev toolchain. This article is about why you shouldn't be (and how you can avoid) using raw SSH sessions for development work. Here’s a little story. I spent many years working … Continue reading SSH Considered Harmful – Why You Should Be Using Persistent Sessions