In the scrum approach, one way to use Sprint is to build the product in the process of product design and development is gradually improved, that is, the product is not a design completed, here is a question, is scrum suitable for most software product development? Is it necessary to design a complete and unambiguous code before we encode it in the traditional way?
Here are two examples to consider if we are developing an operating system or developing an Office series software, can we use the Agile development model?
For the operating system, the philosophy of UNIX development is the best practical approach.
One of the things in UNIX development philosophy is to do something and do it well, which means a small but sophisticated approach to product development. Although, as a whole, the operating system is a complex system, but still need to start from a small part.
Remember the Linux development story, the developer started to do is a disk drive and a process scheduler, look at today's Linux code and compared to that time, I believe that if a developer for such a product has an overall depth of understanding (technically, Thinking has the ability to develop such a product, then the scrum development approach works, and the author only needs to start from a small part to build up such a system.
At least to see the fact that UNIX and Linux authors are beginning to be one person (perhaps Unix is two people) and then build it up gradually.
In contrast, if you let a group of people to work together to design an operating system, and then coding, the design process also reflects the author's understanding of the product, but because it is the overall design, and then to encode the implementation, so the small and fine principle may be disrupted, and the probability of problems will be more (see the Windows API, and Unix system call compared to the sense that the former is not the latter refinement), the design is the embodiment of thought, and the idea is gradually improved in the development of a person want to design a perfect product, for people, even for a team is not practical.
For Office-series software, or for Adobe's image-editing software, we also seem to have an illusion that such a huge product requires the overall design to be completed, which I think is not the case. Scrum is more effective, and it can also be borrowed from the development philosophy of Unix, with small, sophisticated modules to build a great software PRODUCT.
In the actual development experience, what you see, and what you do, is a way of practicing scrum, but not in the past, but rather as a false understanding that developers want to be able to get a detailed description of certain features before they can be developed, like, We need a system to embody the characteristics of a particular software, for the coder, he is familiar with the interface and details of the system, he needs to change the implementation of this feature into a specific coding implementation to consider, that is, the closer the coding implementation of the functional description, the more easily understood and accepted by the coder.
Therefore, if the functional description is not complete, it will give the coder confusing and difficult to work, which is why the past can not accept the scrum method, in fact, the real development of their own use and experience of scrum design method, it is very useful.
The question of whether we need a complete design of the system, and a situation where the project planner is not familiar with the details of the technical implementation of the product, is it more necessary for him to have a complete design?
Remember 3 years ago, when I myself try to write product design documents, I always try to describe the meaning of more product development, trying to explain that every part of the product design has its meaning, and through more creative to build the characteristics of the product, its purpose is to let people feel that such products are competitive, If you look back at these product design documents today, you will feel that these documents are too dramatic and more like ideas and ideas.
At this time, I did not have the actual experience and the ability to realize the technology, when I began to consider its specific product technical design, I encountered the difficulty, is difficult to carry on.
I think my description has a detailed description of the origin of the product, background and what we need, but for development, in fact, I do the work is to do the first step of the work, product introduction.
As for, the module of the product is those, the image of the product is what, none is involved and defined. This product documentation is just one of the primary ideas, not even a proposal, a proposal need idea, and need data to support your point of view, persuasive.
So, when I get this kind of document myself, I want to write a product like this, I also feel that I can not begin.
The problem here is that for a project planner who has no technical background, he also needs to understand the structure and function of the most basic product, at least he needs to consider the image of the system in a user's perspective, thus building up the look of the product in his understanding.
Then another experienced developer makes the product design according to the appearance of the product, and this time the design needs to reflect the specific image, such as drawing on paper or digital drawing, so that the project planner can see the experience, and on this basis to improve.
Once the design is determined, the developer can build the design of the module required by the design, in this case, when scrum occurs, when a developer is familiar with the development structure of the product, it is possible to build the whole system by building a small module to achieve a holistic approach.
Take YouTube as an example:
We need a video platform that users can share and watch. This may be the original idea.
For developers, he began to think about how users should use the platform so that he could build it:
We need a user login, register the page.
Users sign up to be able to start uploading their own videos after logging in.
Users can see all the videos without having to sign in.
More of:
We need users to be able to post private videos and share them with their friends.
We need users to be able to publish private videos that can customize their passwords and share them with friends.
We need to charge for the group of users who use the private video service.
For coders, it may be possible to consider the design of the feature in the exam, which may be described by Sprint for scrum.
Sprint
Story: Give a page design to cover the above user functions
Promise: Design is given in HTML, need to be able to conform to the current popular browser
Story: gives a user experience based on an existing design page, including how the page is switched and how it communicates with the server
Promise: Design is given in HTML and needs to be able to experience existing ways
Then follow the defined page, and experience the way to do the specific design.
In the discussion so far, a development team needs people with multiple skills, and the scrum approach is suitable for software product development, and more effective than traditional development methods in development, coding, and management, and in practice, it is also found, now if I do a software product that has never been done, Using a language that has never been used, I don't feel helpless, but I have the confidence to build it if I am able to master these skills, because it is recognized that a software is a logic built from widgets/modules, so using scrum is very effective, and software coding is an evolutionary process, The result is a user-satisfied product, which is proven in practical work.
Agile development is really more effective in practice