Bear Programming

According to Wikipedia, Pair Programming is an agile software development technique in which two programmers work together at one workstation.

There’s also a term I call Bear programming that is not the opposite of pair programming. Bear programming is when a team of programmers that work together on a single project starts mauling the code and ripping its different parts apart like a group of bears.

Bear Photo

Let me clear this. The mauling here refers to writing code that is distinguishable to the code written by other team members. You can take a look at the codebase in the end and know that it was written by more than one person. This rather dysfunctional behavior often occurs because of the lack of communication between team members.

Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. Melvin Conway

This previous quote is by Melvin Conway and it’s named after him, Conway’s Law. It depicts how communication between teams affect the way their systems are structured. The lack of communication within a team will be mirrored in the codebase and will affect the overall system architecture. Thus, Bear programming is a red flag in any team. Here’s what I think can be done to mitigate the problem (without turning the post into a BuzzFeed-like post):

  • Having a style guide and running the code through some sort of a linter keeps the codebase organized and unified in terms of style

  • Pair programming helps training the team to work together and understand each other. The element of importance in pair programming is the actual interaction between the team members

  • Having a strong code review culture. Code reviews do not only help the team learn from one another, they also help finding the differences among the team members and narrowing them

  • Writing better Git commit messages (if you use Git and you probably should) by focusing on providing the context or the why of the commit. This is also essential to the previous point about code reviews. Git commits are a means to relay messages to other developers in the team

In conclusion, lack of communication is a sign of a dysfunctional team, and thus; training the team to work together is a must in order for the team to successfully build and maintain their codebase.

That’s it. End of Line.


Conway’s Law

Demystifying Conway’s Law

Implementing a Strong Code-Review Culture