Catherine Powell

Catherine has spent the last ten years working throughout engineering, including development, test, support, and product management. She focuses on agile team management and effective software delivery, building high-performance multi-functional teams that work effectively with business needs. Catherine's projects also include non-dogmatic agile training for teams just starting up or looking to move to agile methods. Past experience includes an enterprise storage system, a tablet solution for restaurants, a mobile data synchronization platform, a marketing analytics platform, and several web-based applications.

Changing Your Software Delivery Process

Big Bang
Software processes come and go. Over the last 20 years we’ve seen the industry choose various types, ranging from the Rational Unified Process to V-Model, Scrum, Kanban, unprocess and many others, and — most commonly — combinations of all of them. We talk a lot about the advantage of various processes in different scenarios, and somewhere out there is a process that’s right for you. Once you find it, you’ve only got to overcome one more hurdle: getting to it… continue…

Should You Build Your Product on a Proprietary Platform?

Oil Drilling Platform
A potential client of mine had a great idea: They were going to build the next great product (let’s call it WidgetFoo), and it was going to be social for enterprise. So, we sat down to have a high level architecture discussion. How were we going to build this thing? Before I go further, let me say for the record: No, the product’s not a widget, but since they’re in the middle of building it right now, I can’t actually… continue…

Implementing an Engineering Training Plan

Starting Line
And now, the thrilling conclusion to our tale. After completing a hiring wish list, meeting a prime candidate and considering what goes into a training plan, the startup WidgetCo and its new hire JavaGuy were ready for their first day. The first draft of WidgetCo’s training plan looked like this: Give him an assignment, and be around to answer questions. That is a recipe for failure. The basic idea is sound: Let the candidate learn by doing, and answer any… continue…

How to Design an Engineering Training Plan

Training
We’ve been exploring the tale of the startup and the engineer, and how their fates became entwined. First, we looked at the hiring wish list — the job description — drawn up by the managers of  WidgetCo, a company focused on Ruby on Rails. Next, WidgetCo met an engineer, and although they weren’t perfect for each other, they all took the plunge: WidgetCo hired a “trainable” Java engineer with a lot of skills with some differing technologies. WidgetCo knew they’d… continue…

Why a Java Guy Was Hired for a Ruby on Rails Job

Hiring Flow Chart
Earlier this week, I explored the frustrating process a startup, WidgetCo, went through as it searched for an engineer who could work on its Ruby on Rails platform. After tepid results, the company’s leaders switched gears to look for a skilled engineer who could be trained in the necessary technologies. Here’s what happened once they relaunched their search. Finding a ‘Trainable’ Engineer Once it removed the “Ruby on Rails” filter from its job requirements, WidgetCo quickly discovered that its network… continue…

How a Java Guy Became a Ruby Developer

For in the Road Thumbnail
Once upon a time — OK, in 2012 — there was a startup and an engineer. They were both in the market, seeking their match. The startup needed a solid engineer for its Ruby on Rails application, and the engineer was a Java guy looking for his next great platform to build. Clear-headed observers would never have guessed that this mismatched pair would find themselves together, but they defied the odds and everyone’s better for it. This is their tale.… continue…

More on Taking the Pain Out of Code Reviews

CSS Code
Code reviews are one of the most valuable exercises we conduct in software engineering. They’re also among the most painful. Last week, I looked at different approaches and the circumstances where each can be most effective. This week, we’ll get into source code management tools, and how the branching or commit mechanisms can affect how easy — or difficult — it is to isolate code for review. Source Code and Branching Code reviews are about units of code, usually one… continue…

How to Take the Pain Out of Code Reviews

CSS Code
Code reviews. There may be nothing in software engineering that’s simultaneously more painful and more helpful. They’re helpful because they provide specific feedback looking at the code as code. They go beyond “Does it work?” and become learning opportunities for both the author and reviewer. But they’re painful because … well, have you been in those meetings? It’s always painstaking work to read so closely and look for small mistakes. Now do it in a three-hour meeting. It’s no wonder… continue…

Taming 50 Shades of Micromanagement

Source code
I recently opened up a pull request from a team member and started to do a code review. It was a relatively simple change, adding a logo to a page and styling it. Nevertheless, I cringed. It was just not right. I started to comment on lines of code, then stopped myself. Back up a second. Was it really wrong? One of the hardest things to learn as a technical leader is that there are different degrees of wrong. All… continue…

The Basics of a Usability Failure

Flow Charting
Usability is a fancy word that we throw around a lot in engineering: “This API sucks from a usability perspective. It takes four calls to do anything!” or “How did anyone consider this a usable site?! I can’t find the Buy button!” There are standard or semi-standard usability indicators, like time to accomplish a task, number of clicks, and eye-tracking heat maps. All of this chatter and all of these measurements come down to understanding what usability really is: A… continue…