< Back

The Nature of Software Development:From Tribal to Automation

The Nature of Software Development: From Tribal to Automation

Wesley Verheijen, 23 May 2023

In the world of software development, the process by which applications are conceived, designed, and built is a dynamic and ever-evolving journey. Over time, software development contributes in some form to operational excellence. Processes go through various stages, each with its own characteristics and challenges. From the early "tribal" stage where knowledge was shared orally, to the standardized stage with its focus on consistency and efficiency, the automation stage that harnesses technology and innovation to optimize results, and arguments surrounding the creation of software architecture documents.

Tribal Stage

The first stage, often referred to as the "tribal" stage, is characterized by the process being primarily stored in the heads of people and transmitted through oral communication within a group or organization. In this stage, the process is not documented in a formalized manner but instead resides within the collective knowledge and experience of the individuals involved.

During the tribal stage, the process is typically shared among team members through verbal communication, storytelling, and informal discussions. This informal knowledge transfer often takes place during onboarding sessions for new team members and employees. Existing team members share the process details, nuances, best practices, and any relevant insights or lessons learned from their own experiences.

This stage has its strengths and limitations. On the positive side, the oral transmission allows for flexibility, adaptability, and the incorporation of tacit knowledge and contextual understanding. It also promotes a sense of community and shared identity within the group. However, the tribal stage can be prone to inconsistencies, misinterpretations, and loss of information over time, as it heavily relies on human memory and communication skills.

As the process evolves and matures, it typically progresses to subsequent stages that involve formalizing and documenting the process to achieve greater efficiency, scalability, and consistency.

Standardized Stage

The third stage of process evolution is often referred to as the "standardized" stage. In this stage, the process is documented and is further refined and standardized to achieve consistency, efficiency, and scalability.

Organizations aim to establish clear guidelines, protocols and benchmarks for executing the process during the standardised stage. The process documentation becomes more detailed, specifying specific steps, actions, roles, responsibilities, and performance expectations. The emphasis is on minimizing variations and deviations from the established standards to ensure predictable outcomes and quality results.

In the standardized stage, organizations often develop templates, checklists, and ways of working to support operational execution. Together providing a structured framework that team members can follow, reducing errors, improving productivity, and facilitating effective collaboration.

The standardization of processes brings several benefits. It provides a tangible resource, provides reference and clarification at later stages, reduces reliance on individual memory and oral transmission, and allows for easier replication of successful outcomes across different teams, locations, or projects. Standardization also enables organizations to identify and address inefficiencies, bottlenecks, or areas for improvement more effectively.

However, it's important to strike a balance between standardization and flexibility. Necessary adaptations and flexibility should be allowed to accommodate changing business requirements.

The standardized stage sets the foundation for the next stage of process evolution, which involves automation and continuous improvement to enhance performance and adaptability.

Automation Stage

The fourth stage of process evolution is often referred to as the "automation" stage. In this stage, organizations focus on maximizing the efficiency, effectiveness, and value of the process through automation and innovation.

During the optimized stage, organizations strive to eliminate waste, reduce unnecessary steps, and streamline the process to achieve optimal results. This involves analyzing the process data, identifying bottlenecks or areas of inefficiency, and implementing changes to enhance performance.

Organizations leverage technology and tools to automate repetitive, manual tasks, reducing costs, reducing errors, increasing speed, and freeing up human resources for more value-added activities. Automation can take various forms, including workflow automation, robotic process automation (RPA), or the use of artificial intelligence (AI) and machine learning (ML) algorithms to optimize decision-making and resource allocation.

In addition to automation to improve the process further, innovative solutions and practices are actively explored in this stage. This may involve leveraging emerging technologies, conducting experiments, and piloting new approaches.

Establishing mechanisms to collect and analyze process performance data, solicit feedback from stakeholders, and implement iterative changes to enhance the process over time are important success factors. This can involve methodologies such as Lean, Six Sigma, Agile, or Kaizen, which emphasize continuous learning, problem-solving, and incremental enhancements.

By reaching the optimized stage, organizations can achieve significant benefits, including increased productivity, reduced costs, improved quality, faster cycle times, and enhanced customer satisfaction. The process becomes a strategic asset that differentiates the organization from competitors and enables it to adapt to evolving market conditions.

However, it's important to note that process automation is not a one-time achievement but rather an ongoing journey. As business needs change, new technologies emerge, or customer expectations evolve, organizations must continue to adapt and optimize their processes to stay competitive and deliver value.

Sad Stage

While it's true that software architecture documents can sometimes be perceived as time-consuming and prone to becoming outdated, there are additional arguments that can be made against participating in writing these documents. Here are some points to consider:

  1. Agile Development: In agile development methodologies, the focus is on delivering working software quickly and continuously adapting to changing requirements. Writing detailed architecture documents may conflict with the agile principles, as they can be perceived as a form of unnecessary documentation that slows down the development process.
  2. Lack of Audience: Depending on the context, software architecture documents may not have a clearly defined audience or purpose. If there are no stakeholders who regularly refer to or benefit from these documents, it may be difficult to justify the time and effort spent on their creation.
  3. Communication Alternatives: Modern software development practices emphasize collaboration and communication among team members. Instead of relying solely on comprehensive documentation, teams can foster open discussions, code reviews, and other interactive methods to share knowledge and ensure everyone has a common understanding of the software's architecture.
  4. Rapidly Changing Environments: In dynamic and rapidly evolving industries, the software landscape can change rapidly. Traditional architecture documents may struggle to keep up with the pace of technological advancements, rendering them outdated and potentially misleading. Emphasizing more flexible and adaptable approaches, such as architecture diagrams or living documentation, may be more suitable in such contexts.
  5. Documentation Maintenance: Even if architecture documents are initially written, they often require regular maintenance and updates to remain relevant. If there isn't a dedicated effort to keep the documentation up to date, it can quickly become obsolete and lose its value. This ongoing maintenance can be seen as an additional burden on development teams.
  6. Focus on Working Software: Some argue that time spent on writing comprehensive architecture documents would be better utilized in developing working software or addressing critical issues. Prioritizing tangible results over extensive documentation can be seen as a more efficient use of resources.

It's important to note that while these arguments exist, there are also valid reasons for creating architecture documents, especially in situations where legal or governance requirements mandate them, or when they serve as a valuable reference for future maintenance or knowledge transfer. The decision on whether to invest in writing software architecture documents should be based on the specific needs and constraints of the project or organization.