I've been thinking a lot about the software methodology religious wars lately. It seems to me that all methodologies have their strength and weaknesses. 15 years in, Agile has given us faster coding, but worse quality. Waterfall was flawed due to its overemphasis on architecture and underemphesis on business. Lean cuts out inefficiency- at the cost of elegance and maintainability. Devops sacrifices quality and cheapness for speed of continuous Outcomes. And while it's true that the "User Interface is everything" because that's the only thing the user sees, Outcomes sacrifices the future for one-off unmaintainable code.
So here's my solution- WALDO. The ultimate 3-6 person team- no more than 6, no less than three if a couple of guys wear multiple hats.
But these aren't just methodologies- they imply roles on the team. The ideal six person team consists of:
W- The customer's view of the project should always be waterfall with iterations. They tell us what they think they want, we build it- they're involved in every iteration. Of course, they don't really know what they want- it takes several iterations before we discover what they want- but the W role is the customer herself.
WA- The Waterfall Architect, or perhaps the Waterfall Analyst. This is the guy who is the face of the team to the customer- the single point of contact. On smaller teams, may also be the scrum master- but ideally should be a master of the models. This person should also be the principle advocate in scrum meetings for the customer.
AL- the real scrum master should be a master of both Agile and Lean. This guy lives in the world of Gantt charts and excel spreadsheets- keeping both schedule and budget, keeping the team on schedule, communicating that schedule to the team and to the WA and W. Daily scrums should keep people on task.
LD- the Lean Developer is a Model First Full Stack Programmer, but is the king of Object Orientation, maintainability, and reuse. It is this role that you want somebody who excels in data- but can work in the higher tiers of programming right up to the User Interface Tier.
DO- the ultimate Devops guy should be as much artist as programmer- a whiz of the User Interface. This is what the customer will see, so the DO and the WA are a natural Quality Assurance feedback loop for each other. Since the DO consumes data and objects coded by the LD, there's a natural QA feedback loop there as well.
O- the Outcomes guy. QA and Build Engineer rolled into one- this is your build manager, working with WA and W to make sure every release happens quickly and accurately, and that beta testing actually occurs to provide data back to WA.
This is my ideal team- one that insures you get the best of all methodologies, not the short sightedness of focusing on one or two.