Strategic Planning - A Lesson from Kent Beck

Kent Beck invented Test-Driven Development (TDD), inspired from one of his dad's programming books. One of them said, "here's how to write a program. You take the input tape and you manually type in the output tape that you expect; and then, program until that's the output tape that you get from that input tape.


Everybody wants a flexible system

A system that is easy to change over time. Maximize ROI. Be responsive. Competitive. Adapt to a changing environment.


Does Agile Software Development Scale?

Of course it does. But that's the wrong question. Because Agile Software Development is directly related to computing power and so it has similar scaling qualities.


Resuscitating Hubot

According to GitHub stats, Hubot development stalled after 2015. There was a little bit of activity in 2017 and 2019, but not enough to consider the codebase under active development. I'm resuscitating Hubot.


Software is like a garden

Software is like a garden when you invest. You till the ground, plant the seeds and maintain it daily by pulling weeds, watering, checking for good and bad insects.


Error loading shared library libcairo. No such file or directory

Building alpine Docker image for NodeJS app using node canvas and getting error from libcairo. The lesson learned is libcairo depends on the installed packages still being in the image and I wasn't including them.


An Omni-channel Technology Strategy

I went through an excercise to develop a technology strategy for a fictional retail company which merged 2 IT teams.


Tactical suggestions for developing non-coding skills

As software engineers, we focus our time and attention on learning how to write flexible software; one aspect to building great systems. We often neglect non-coding, communication aspects of building great systems.


Isolated Application Development

Application dependencies can slow down development because you're waiting for them to add a field to their API or update their module with the feature you need.


The Difference Between SOLID and Design Patterns

So with the talk of learning a design pattern and not trying to shoehorn it into everything, is SOLID one of those things where its use case is specific to a task or is it generally just something to follow?


Why Is Test Driven Development (TDD) So Hard: Revisited

I wrote about TDD in 2016. Since then, I feel like I've gotten better at it and have seen people use it less. So I'm revisiting the question, why is TDD so hard. I started a few conversations about it over Slack and LinkedIn. Here's my summary.



I never considered myself a process oriented person


Reviewing a Developer Skill Assesment Tool

We're growing. So in an effort to optimize the hiring process and improve the probability of hiring people who can do the job, we're thinking through our interview process. As part of that, we're researching Skill Assessment systems. Here's my first impressions with a tool called Qualified.


Can I use HTML

I was just wonderin if this thing works with HTML


What is Architecture

Domain boundaries, Component responsibilities ...


To Make Money is Not a Useful Objective Statment

About 10 years ago I was part of a meeting where the CEO of the company was trying to convey his vision of the company and it's core service to customers. I asked the room what the objective was and someone jokingly answered, "to make money" and the meeting continued ... and finished.


Don't Follow Spotify's Agile Model

It's easy to fall into the trap of thinking that you could copy the Spotify model presented in Henrik's Spotify Engineering Culture Videos as a way to Scale Agile. Well of course it's easy. They're organization continued to be agile as they grew. Henrik really makes it look easy and amazing! It's really very aspiring, so it totally makes sense.



agile adj. - Characterized by quickness, lightness, and ease of movement; nimble.


Team Process Framework, How We Work

Routine enables us to move fast in a sustainable velocity. So we have 6 meetings during our iterations. It's simple, focuses on solving the "mis alignment" problem, and periodical (repeats every iteration).


Story Points, So Many Questions

Tony likes to push my buttons sometimes. He knows what my opinion is about how and why teams should estimate stories. So I get a text from him today, asking me what I think about Do Story Points Relate to Complexity or Time?. I'm compelled to bite. I can help it, but meh, it's easy to post things to the internets.


Why people say Test Driven Design (TDD) is hard

I've been working with my team to practice Test Driven Design (TDD) for about 2 years. They just started REALLY doing it about 4 weeks ago after I finally gave them the permission they needed to do it. And even now, they don't feel comfortable because it takes them longer to finish development. Below is my story of how I kick started the team practicing TDD and my observations of what I think are keeping the majority of Software Engineers from following the practice.


Coding and Code Review Guidelines

In order to reuse code, it must pass the teams measurement of readability and discoverability.


Delusional Conflict

Or rather, you think there's going to be a conflict about a particular subject and so you don't even broach it. You don't even know if all the subsequent decisions and problems could've been avoided had you just asked.


Steps to Creating a DevOps Culture in an Organization

I started out writing a verbose post about how to create a DevOps culture in an enterprise. After sleeping on it, I realized that people really need tactical suggestions on how to create a DevOps culture, not just a description. So here's a DevOps Culture todo list.


Dream Team

I want to work on a team who's culture has these characteristics.


I'm a programmer, I'm coding my own blog engine

This has been a long time coming. I've preached about blogging for years and yet, have never done it myself. Well, I have but back in 1997 and I didn't keep it up and I don't have proof. And I'm a big believer programmers should write code and if you're a programmer AND gonna write a blog, you should write the blog engine yourself. It shows off your talents, or lack there of, and you'll learn something along the way.