Bear Programming Software EngineeringJune 01, 2018
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.
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.