My work as a software developer at different companies has made me appreciate the need to visualize the software systems I build. A lot of times building software can turn more into each silo doing their work and briefly meeting to verbally say what their silo is doing or what the other verticals within the organization need to be doing.
The typical software development process I’ve participated in is mainly having a requirements document, a ticket system for work to be assigned and developers coding against the requirements. A few times I feel like we have done it the right way and were better off for it. The right way, for high-performance teams, is for the team members to focus on building the cathedral as Peter Drucker described.
Focusing on building the cathedral when developing software apps, Software-as-a-Service or other information systems means:
- Visualize the system collaboratively. Sit down in the same room with a white board and a list of the user stories and requirements and different people stand up and draw what they see while others pressure test it, re-arrange things and add to it.
- Work together, don’t just meet together. Produce work, writings, drawings, debate, flesh out contradictions and progress through work together. Do not just meet together with one or two people talking most of the time while others passively listen.
- Write, do not just read or listen. Reading the requirements in a meeting, in a ticket or listening to requirements read verbally is not seeing the cathedral. Those are for analysis, a description of the desired system, it’s not a synthesis of what is going to be built or how.
- Share writing, do not keep it private. The team needs to share their writings and not keep them private. Otherwise people will eventually splinter into their own rabbit hole and justify it by the notes they took. Even though it may seem too simplistic or obvious at first, without constant sharing and reinforcing then people will lose site of the cathedral and start focusing only on the proverbial stone cutting.
- Have less meetings, but work more collaboratively. Getting together to work on the cathedral is not a meeting. Do not justify working together less by saying that meetings are a waste of time. Every time 2 or more people get together does not mean it’s a meeting and just because you are not coding 100% of the time does not mean you are not building software.
- Progress as a team and address targets publicly. The team is needed to build the cathedral. Team members who constantly go off on irrelevant tangents or who take 30 minutes of team time to talk about screen resolution or irrelevant topics should be told publicly what they are doing and to refocus. This way, after a couple of times, they will self-focus and remain a participant with their valuable insights. If they are lost to attrition by team members leaving them off team time so “work can get done” then the team will be weaker over time, not stronger.