Then all four developers would have had to coordinate with the Devops guy.
This is all getting into “Mythical Man Month” territory.
Instead of me trying to explain it, I might as well crib the explanation from Wikipedia.
Complex programming projects cannot be perfectly partitioned into discrete tasks that can be worked on without communication between the workers and without establishing a set of complex interrelationships between tasks and the workers performing them.
Four equally qualified people should be able to deliver more features in the same amount of time working independently than four people working together.
"This rough implementation is how I (we) envision this feature working. What do you think?"
"We've got the feature working well but it requires non-trivial back end changes. Would you be willing to wait or will you be satisfied if it works but only in a very manual way until we get the back end changes in place?"
Week 2 after release: "The feature is live... What do you think? How is it working?"
These are conversations the developers should be having with the end users. Regularly! It's when developers only ever talk to their boss and/or the project manager that pushes development into the anti-user zone.
https://www.railinc.com/rportal/documents/18/260641/Guidefor...
The software for it has to work. There will be months of work implementing the rules engine before you have anything to show the customer besides a mock-up..
You won’t really need two week sprints to get feedback from customers. It either implements all of the rules or it doesn’t. I can imagine the same happening for tax software.
If a customer isn't committed to the project, then I'd worry about committing to it as well. Even if the contract guaranteed I'll get paid, there are few things as demoralising as a project falling over because, once push came to shove, the customer didn't even have the manpower to deploy your product. Those are usually the same people who would do the evaluation, so with my experience, as an employee, if they're not there, I'm going to look for a project where they are — regardless of how confident sales might be.
Well, by definition, a feature that takes 2 months to build takes 2 months to build. Shipping part of the feature early doesn't provide feedback for the finished product. It provides feedback for the incomplete feature. How valuable is that feature?
In addition to that,a feature that takes 2 months to build will take longer if you are releasing multiple sub versions. You have to account for actually making it production ready, and releasing it, and handling errors and feedback.
This is why experience matter. Was your feeling of control and happiness worth shipping half-finished, substandard product to your customers?
Other work can be assigned so in two months the customer gets the entire website. If they did it the other way every two weeks something would be finished but at the end they need to rewrite the backend adding an addional months because they didn't have the chance to look ahead and see that module 1 and 2 can't run at the same time.
It took me longer to tune performance than to write the code. Can you imagine four developers working together tweaking code, queries, indexes, number of simultaneous threads, etc?
When I was a team lead, I made it part of the “definition of done” that you had to have documentation and knowledge sharing. Now, I still have both an overview of my proposed architecture before I start just to make sure I didn’t miss anything, Visio diagrams,Powerpoint slides, wiki documentation, an “architecture review”, etc. I hold myself to the same standards I held anyone on the team to.
From a career development standpoint, software developers are a dime a dozen. It’s the people who know how to communicate effectively are the ones that get ahead.
There is often so much wasted effort in parallelizing work.
I just implemented a feature that was two months worth of work by myself. I loved being able to think holistically and make changes up and down the stack from the interface (Api calls) to the Devops.
I could make breaking changes between every part of the process and not have to work with five other people. I could easily see “war rooming” it with one other developer though and breaking it down between the two of us where we could just discuss the breaking change and make changes.