Answer the question
In order to leave comments, you need to log in
How do you organize the development of a complex product?
The point is this.
Recently, for the first time, I started working in a team developing a large project. by "large" I mean a lot of features, whistles and other things.
The project develops in iterations and features pile up and the code, of course, is not the most elegant and easy to understand and analyze.
In general, the problem is that after each sprint, I see that testers find heaps of bugs, which we then work together for 3-4 days. Because you are asked to add or fix feature A, you fix it, but along the way, you may break feature B explicitly and implicitly C (there may be an error when working with C and C). Some things, especially from domain, are covered by tests, but everything cannot be covered, and the logic is complex and the code is legacy in places.
So, in theory, it seems to me that it is possible to organize development in such a way that there are a minimum of these bugs. What do we have to do? more tests? Is it more careful to make changes to the code and check everything 100 times? Or to reconcile, "so at all"?
Answer the question
In order to leave comments, you need to log in
The project develops in iterations and features pile up and the code, of course, is not the most elegant and easy to understand and analyze.
Cover your code with tests. You will immediately see what has fallen off after each commit.
Business process diagram, modularity and documentation for each module.
Joints of modules should be marked on the diagram, modules themselves should be highlighted.
In general, it looks like you have a few problems in your team.
Firstly, either there are problems with the architecture, or the development plan is incorrectly drawn up. This may be due to ignoring the limitations of agile. It seems to me that there is both.
Secondly, programmers are not strongly motivated to write quality code, or do not have the opportunity to do so. Perhaps they do not have a domain model, and, correcting one bug, they immediately introduce a new one. It makes sense to think about the specialization of specific developers (or small groups of developers) in specific areas. Try breaking up a large project into several separate "isolated" projects, each of which should treat related subprojects as external systems. Each subproject needs its own team. This will make the project manageable and understandable to all participants.
And then, I agree with Sergey Protko , "Tests, TDD, refactoring, SOLID".
Apparently in your project:
- the code is highly connected
- tasks are performed by everyone in parallel, no one has their own components
- perhaps the sprints themselves are not quite logical, due to changing requirements
- perhaps you are not given time for refactoring, but require so that some kind of task or fix is always executed.
All recommendations were given above, but it is also worth thinking about refactoring modules in the first place, then cover them with tests.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question