I've been recently talking to former colleagues about work. We discuss code and perceived quality in code. We tend to discuss the merits of good code and what it really looks like. Each time I come back to the same place in my mind. Good code is mainly about collective code ownership & having a shared understanding of what you are doing. So how does one go about helping manifest this?
I think software development is a 80/20 game... Depending on which you play it governs the impact on this collective code ownership and what some may deem as code quality.
If you work in the following manner 80% code and 20% communication - your code bases will all have a mish mash of styles, poor tests, good tests and really anything in between. Certain code will be well understood by certain people, and other bits will be understood a lot less by other people. Some people will open code bases and swoon at it's clarity for them but others will open it up and want to instantly refactor it!
I'm more than convinced that working the other way 20% code and 80% communication gets a better shared code understanding. Now I don't mean that you all sit around in meetings and discuss what good code looks likes. I suggest that you pair about 80% of your time, this is the communication piece that is lacking the other way around. This conversation drives a shared understanding through your code bases. It also helps ideas flow from mind to mind, while producing code to a certain degree.
Communication doesn't just start or end with pairing, it starts by having the team be a team. This is something to focus on above and beyond everything else initially. Once you have this everything else will flow... More on this in another post.