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.

How to Do Effective Peer Code Reviews

I remember sitting in on code reviews early in my career. You took your code, put it up on a projector, and the architects—shadowy figures in the back of the room—ripped it to shreds. These marathon sessions would take all day and were completely exhausting. They certainly improved the code, but they wreaked havoc with both release schedules and people’s psyches! Nowadays, I do code reviews a little differently. Instead of submitting our code to the senior architects, we do… continue…

New Team Member, New Team Dynamics

Posted In Working in Tech
So you have a new team member. Or, you are a new team member. It’s the first day and we’re all gonna get things kicked off on the right foot. But how? In one place I worked, the first week was spent in mandatory training. It covered HR policies, IT information and policies, marketing overviews and presentations from the architects of the various systems. That doesn’t happen at most companies. In other places, starting and initial training are much more… continue…

Think Carefully Before Upgrading to Python 3

Python Logo
Upgrading software in a timely matter is important (as I wrote here), but I don’t always follow my own advice. I have a client who uses Python, which is currently on version 3.3. The client is using Python 2.7, and I’ve recommended that they not upgrade. In other words: I think upgrading is a bad idea. Why? Python 3.3 was released on Oct. 1, 2012. As of that date, the most popular version of the programming language is… 2.7. Yes,… continue…

Coding Interviews: The Hiring Manager’s View

Posted In Looking in Tech
Cracking Code
Ahh, the infamous coding question. The very idea that a candidate might be asked to code during an interview caused some furor among commenters to a recent post by my colleague Dawn Kawamoto. I thought I’d provide a hiring manager’s perspective. Confession: I ask at least one coding question of anyone who will be writing code. Here are the two major points you should know about it. It’s Not About The Algorithm It’s about solving a problem, not implementing a… continue…

Red Flags to Look For Before Taking a Job

Posted In Looking in Tech
Recently I wrote about the what I look for when I’m considering a job or a contract, things like interesting problems and fun people. There is, however, a dark side. For some things I’ll stop even considering a job or contract. Just like a job’s qualities, these are different for everyone. My red flags might be something you don’t care about one way or another. Before I share my list, I want to include one caveat: Earning enough to pay… continue…

Diagnosibility: How to Avoid Cursing When You Hit ‘Run’

Exeception Code
Starting a new project is exciting and writing code is fun but getting the system to work and/or figure out why it’s not is also a big part of the job. When you’re working with software that’s large enough to have dependencies, basically meaning any real system, diagnosing issues goes something like this: Set up environment: IDE, source code client, language libraries, package manager. Check out source code. Hit the “compile and run” or “run” button. Watch errors spew through… continue…

How to Keep the Good Stuff at the Top of Your Page

Above the Fold (Web Version)
In graphic design, there’s a concept called “above the fold,” which refers to the practice of putting important information in the top half of the page. To no one’s surprise, this comes from newspapers: The idea has carried over into Web design, except there it refers to the display of information the user can see without scrolling: Users can’t be intrigued by data they can’t see. So if you want users to get as many views as possible, you put… continue…

The Zen of Tech Office Design

Posted In Living in Tech
Home Office Set Up
Where you work matters. Spend an hour with a group of developers and the debates will start. Open plan versus private offices. One monitor versus two or even three. Mac versus Windows. Laptop versus home-built desktop. Music preferences. The list goes on. There are even studies that purport to show how productivity changes with more display space, or that open plans decrease productivity. And all of those studies are roundly disputed. In  the end, the ideal work environment is a… continue…

6 Ways to Squeeze in Training

Posted In Looking in Tech
Learning is part of software. New techniques and new technologies show up every day, and we all need to get comfortable with at least some of them. Unfortunately, the training budget is small or nonexistent at many of our jobs. I worked in one startup for a while where the training budget was “whatever you can scrounge up by saving on hosting costs without messing up the site responsiveness.” That one incentivized us to make the software more efficient! Training… continue…

How to Know When Old Technology Isn’t Outdated

I wrote recently about the things I look for when considering a job or a contract, and it spawned a lot of good discussion in a few different areas. Some people talked about their criteria for considering a job; others talked about the importance of just plain having a job. One thread that came up was the idea of “old” technology, and what constituted old. From a candidate’s point of view, when do the technologies you’ve been working in become… continue…