Have You Fallen into These Misunderstandings in Software Development?

2024.10.03

Have you ever thought about how to make work easier and more efficient during software development?

1. Focus on needs vs. focus on tasks

A common sight in the office is that everyone is multitasking, overwhelmed, and often delayed in delivery. Transactional work is essentially task-driven, focusing on basic development tasks, but these tasks are fragmented and lack overall product requirements and goals. Although individuals complete many tasks, they lack the connection with other tasks at the demand level, resulting in delayed product delivery. It's like a hamster running on a wheel, always staying in the same place.

The core of software delivery is to provide effective value continuously, quickly and with high quality, and effective value comes from user needs and business goals. Requirements can be decomposed from different perspectives such as business goals, scenarios and functional requirements to maintain their independence and testability. Each requirement delivery is an opportunity to verify assumptions and create business value.

Therefore, in software delivery, only by visualizing the flow of demand through the Lean Delivery Kanban can value-driven development be achieved; only by starting from a holistic perspective can the connection of different functions be achieved in collaboration. Paying attention to the raising and solving of user problems is to emphasize "results over outputs", that is, maximizing results while minimizing outputs.

The boss is more concerned about the feature requirements of the delivery rather than the number of tasks completed. Therefore, collaboration should be based on demand, pay more attention to business value, and present the delivery process through visual means.

2. Flow efficiency vs resource efficiency

Resource efficiency refers to treating people as resources, focusing on individual effectiveness, and creating a state of local busyness. However, improving local resource efficiency cannot improve overall efficiency, because the entire process of product delivery requires collaboration among various functions, including business, product, development, testing, and operation and maintenance.

There are two main reasons to focus on resource efficiency:

  • Software delivery suffers from shortcomings.
  • The local efficiency optimization of each function is likely to form "efficiency silos". The local efficiency seems to be very high, and many intermediate products are produced, but the handover between these silos forms batches, and the overall efficiency has not improved.

Taking flow efficiency as the core means taking demand as the flow unit, starting from user demand, and quickly flowing to users, thereby accelerating the time to market of demand. The speed of flow efficiency directly affects the efficiency of user response and feedback.

To focus on flow efficiency, all functions in the delivery process must be integrated to break down organizational barriers. At the same time, focusing on flow efficiency can help organizations promptly identify problems in collaboration, such as blockages and waiting, which may be collaboration problems or engineering capability problems.

The main problem in the software development process is often not idle resources, but idle demand. Therefore, the key is: resource efficiency focuses on individual labor efficiency and human resource utilization, while busy local resource efficiency cannot improve overall flow efficiency.

3. Focusing on issues vs. focusing on activities

Zombie stand-up meetings are those that simply follow the framework of the methodology and pursue formalism. In this case, people often get caught up in details such as "Should the meeting be held standing or sitting? Should the meeting be divided into morning and afternoon, or concentrated in the afternoon?" and ignore the real problem. This practice of putting the cart before the horse goes against the original intention of the methodology, which is to promote communication and understanding, rather than mechanically copying.

In software project collaboration, the key is to solve problems and remove blockages, and pay attention to how to quickly flow requirements. From the perspective of project collaboration, the following points should be paid attention to: what blockages currently exist, what requirements are due but cannot be delivered, whether there are interruptions in the value stream of delivery, and what are the bottlenecks in the current delivery process. Such attention can truly improve collaboration efficiency.

The "6+1" stand-up meeting model we recommend is designed to guide the team to focus on problems in collaboration. "6" represents six key elements: bottlenecks and queues, critical defects, key requirements, obstacles and problems, due or about to expire requirements, and interruptions. "1" refers to problems that are not reflected on the Kanban board. In this way, challenges in collaboration can be identified and resolved more effectively.

It is not recommended to copy any methodological framework. The purpose of the methodological framework is to meet the needs of communication and understanding, rather than to copy and paste mechanically.