Friday, February 7, 2014

Three words

The three words I would like to see describe any development group I'm involved in:

    Reliable, approachable, competent

And the first three runners-up:

    Thoughtful, Socratic, opinionated

The first three words, in that order, really seem to describe whether a group ends up being tolerable. In many ways, the words apply slightly different to individual people, with only two out of three adjectives allowing me to like whichever person is in question. In a group or work setting, reliability is a must, since the rest of the group is often depending on each individual to provide some portion of a project. Approachability is a trait that often is lacking in developers, but makes a huge difference as to whether a project succeeds or fails. An unapproachable, but genius programmer writes wonderful and useful code, but doesn't help the rest of the group understand it, while a somewhat less able programmer that can help explain code to others makes a bigger difference in the project's success, and overarching design. In the past, I've had a few unapproachable developers who worked as team leads, and a considerable amount of unhappiness and frustration occurred for no real reason, drawing away from the project, and . Finally, competency matters, and is important. A competent programmer adds a considerable amount to a project, can figure out their own problems without pulling others away from their work, and understands the need for a good process to be in place, as well as adheres to good process themselves.

The runners-up still play into the first words somewhat. In particular, thoughtful in this context means justifying what a person is saying or expressing. Too often, I've been in a situation in which things like code reviews are failed or adjusted downwards for no explanation other than, "I wouldn't have done it this way," or some combination of buzz words such as, "The solution is too academic. Here in the real world..." Thoughtfulness and describing what, exactly, is wrong, as well as asking for justification of how code is written goes a long way into making a group work more effectively together. On the other hand, a successful group member should be Socratic, asking a variety of questions about how the project is, and should be working, and being somewhat critical of others' work as well as his own. While this has to be balanced with approachability, without any questioning at all, a project is doomed to go on for months with a poorly designed, yet critical, module or two, often causing a huge amount of pain and panic in later stages. Finally, a developer should be opinionated, to a point. While this seems like a bad trait, if a variety of people in the group are opinionated in different directions, it often shows that they approach the same problem differently, which is tremendously good for the health of a project.

No comments:

Post a Comment