Organization

Separating the Work a System Does From the Interface to that Work

The work a system does and the interface to that work should be separated from one another. This is a concept that evolves from the Single Responsibility Principle and from Test Driven Development. Whether this work be hosted in a console program, a GUI program, exposed as a service for outside systems to utilize, or any other possible configuration, follow SRP and keep the work separate from the hosting interface that exposes the work to a client (a client in this case can be a person or another software system).

Deep Agile 2008

Rjae, Rob, Kasia Baron, and I went to the Deep Agile 2008 conference run by New England Agile Bazaar. The event was held over the course of two days at MIT's Tang Hall and was truly outstanding. The structure of it, as noted at Agile Bazaar's website, was a one-on-one discussion, debate-style, between Robert Martin and James Coplien and it focused on the realities of Agile software development.

Interviewing a Software Engineer

Imagine the following interview with two interviewees, “Player A” and “Player B”:

Interviewer: “Okay, sir. Let’s say a ball is hit a little bit to your left. How do you field it?”

Player A: “Well, I’d take a few steps to the left and try to get my body in front of the ball. I’d use my left-hand to field the ball, switch the ball over to my right hand, and throw it to first.”

Player B: “I’d take a few steps to the left, keeping my body bent at the knees and the back so I could respond to any strange hops the ball might take. If I can get completely in front of the ball, comfortably, I will, but I might have to field it with one hand to the left of my body, if I can’t get my body in front of it. Depending on the direction I’m moving, the time it took me to get to the ball, and whether I got completely in front of it or not, I might have to throw it on the run.”

Based upon the two player’s answers to this question, Player B gets hired.

This might seem like the right call. The problem is that Player B is a recent college grad that majored in English and played intramural ball. Player A is Derek Jeter (Yankees shortstop) before he was really known as the Derek Jeter.

What if you were the interviewer and you had made this decision? You would’ve just altered the entire course of your team. There’s a good chance that from this decision forward you’d be losing a lot of games to the team that hired the person you let pass by.

Syndicate content