The components
There are two fundamental building blocks of every organization: People and Processes. These are the factors we need to understand in order to identify the technically relevant aspects of the organization. The ultimate goal is to optimize all 3 elements of their organizational performance: Effectiveness, Efficiency and Utilization. At the end we want to have a clear picture of how the existing control concerns and wastes influence them.
Processes
From a high-level point of view we can look at processes as functions/procedures in programming. They have defined inputs and outputs and we don't have to care about their implementation details. In general there are two important inputs properties: time and costs. There's only one significant output property: quality. We want to be able to tell how our actions influence these on a project. We need to identify every process that is related to software development as a first step. Usually they are the parts of the SDLC:
- Requirements gathering: We might be needed in order to ask all the necessary questions that will reveal every technological property that's important for the project.
- Technical planning: One of the most loved parts of our profession. Choosing the technologies to use, designing the solutions and the roadmaps of development. It might include sub processes like the work of decision making committees, cooperation between parties responsible for different parts of a larger system, cooperation with related professions, most notably with the domain and business experts, designers and Q&A. Our workflows and used tools can influence the efficiency of each other so it's important to align every decision with the overall situation.
- Development workflow: It involves important sub processes that are factors of the organizational performance on their own. Starting with the used collaboration tools and processes, most commonly version control, code review and task management. Then the local development where some of the significant factors are the compilation and build processes, access to the live environments or the similarity and reliability of their locally running versions.
- Developer Q&A: Unit and automated testing, TDD or similar practices, pair programming. Their is also a cultural element to this, how much the developers care about the quality of the solutions they give out of their hands.
- Deployment workflow: The integration and automation of the delivery process is crucial in the overall performance of development. Because usually Q&A steps are embedded in this process, making it seamless is even more significant as it can hamper the work of 3 fields, development, testing and operations as well.
- Monitoring: The monitoring of every relevant aspect of the solution like, performance, availability, security, etc. We are often needed to implement and maintain these monitoring processes.
- Support: Resolving (non-operational) software issues, including root cause analysis, solution implementation, rollout and collecting new insights to prevent similar problems from happening in the future.
- Feedback: Our technical role extends only as far as facilitating the feedback process through software solutions. The main task is to ensure stabile and snappy operation.
- Auditing: Meeting the required process and coding standards.
- Organizational processes: Not technical in nature but a nonetheless relevant process is: performance evaluation and promotion.
Technically relevant process factors
What we need to see are the key processes where the tools in use have influence over the control concerns or waste types. So review the identified processes and analyze if the technologies in question do have some, then trace back the involved factors to the CPU-B elements and notice their level of influence over them. You can already see how each process contributes to the business goals set up in the first guide.
People
There are 3 simple attributes of every involved person that we should take into account: Roles, Goals and Influence.
What we want to see are the key players who can influence the performance of the work and their relationship with the given tools. We want to influence their opinion based on If the technologies themselves are beneficial or a burden to the project. We need to see what motivates them, analyzing their Attitude factors can help with that. Sometimes we might even be able to make tech choices that would bring in or remove people from the project. It can be a valid reason for making certain decisions depending on how those people affect the performance of the related processes.