savchenko.tech / software engineering blog by Maryna Savchenko

Team framework

2022-01-28

If I have seen further than others, it is by standing upon the shoulders of giants.

Isaac Newton

Programming is not about coding it is about working with people. Sounds easy, isn’t it? You put people in one room, and somehow it all should magically work out.
The problem is that most people do not even come across as they intend to. I am not even talking about solving complex issues. So, effective collaboration takes time and effort.

To be productive we should and have to stand on shoulders of others not only technology-wise but also communication-wise. And team framework could be a great assistance here.

Team framework is an established set of practices that creates a solid base for an effective collaboration. It is the way to productivity and happiness of each team member.

This set of practices should solve next problems:

I see Extreme programming as a perfect starting point for team framework. Although it has never got the popularity it deserves, parts of the methodology can and should be applied.

A philosophy of this methodology is based on the values of communication, simplicity, feedback, courage, and respect.

Communication

Communication is crucial for creating a sense of team and effective cooperation. Clear, honest communication relieves tension and improves credibility.

Simplicity

Improving communication helps achieve simplicity by eliminating unneeded or deferrable requirements from today’s concerns. Achieving simplicity gives you that much less to communicate about.

Feedback

Feedback is a critical part of communication. At the same time, the simpler the system, the easier it is to get feedback about it.

Courage

The courage is another crucial value that touches all areas of the software development process:

Respect

For software development to simultaneously improve in humanity and productivity, the contributions of each person in the team need to be respected. “I am important and so are you.”

Application of the values in day-to-day life is done through the practices. And practices don’t make sense without the values which backing them up.

Here are the most important practices:

1. The whole team

People need a sense of “team”:

2. Energized Work

When you’re sick, respect yourself and the rest of your team by resting and getting well. Taking care of yourself is the quickest way back to energized work.

3. Pair Programming

Pair programming is a dialog between two people simultaneously programming (and analyzing and designing and testing) and trying to program better.

Pair programmers:

4. Test-First Programming

Writing a failing automated test before changing any code has next benefits:

5. Incremental Design

Design that is done close to when it is used is more efficient. As your expertise grows in making changes to a running system in small, safe steps, you can afford to defer more and more of the design investment.

I truly believe that having this kind of framework will make software development more enjoyable and effective.

Sources:

  1. Extreme Programming Explained by Kent Back and Cynthia Andres
  2. Clean Craftsmanship: Disciplines, Standards, and Ethics by Robert C. Martin
  3. The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin