Writing practice:Waterfall is back
The Rise of Agile
In software project management methodologies, we started with waterfall which follows Requirements, Design, Implementation. Just like our instinct of desire, plan, action. But it got challenged with morden software development for hard to cop with changes. Then Agile start to rise and gained more and more ground. There is no standard Agile process while it's common agreed that the essence of agile is taking small steps and retrospecting.
Re-Assess Agile
The main reason agile shined is because software projects take time while the world is changing fast, instead of planning everything to a detailed level, and follow it strictly, we should take quick actions , retrospect and adapt, which makes all sense. But you can't deny that it is a compromise due to the lack of ability to foresee what's going to change, no-body has the crystal ball afterall. In "Architecture"(the true Architecture) world, good design/implementaion can stand the test of time, like the Pantheon in Rome, it still "stands" there after thousand years. While in software world because the world is changing so fast (including customer's mind 😄 ), that it's almost impossible to design and plan everything in advance. So it's OK to keep the design simple and start iterate first. But I think the standard of "standing the test of time" should still apply. There are difference between simple design and poor design.
And look at waterfall process, it can also be considered as a "Agile" practice that you only have 1 iteration that last maybe 2 years, your MVP contains everything you thought you need and is your final product.
LLM+Agents might change the landscape
I have been using LLM echanted development tools for my hobby projects, it was fantasic and I was able to implement my ideas pretty fast, and realized I actually wanted something else and adjust, yes very agile. But a painful part is I amost need start from scratch again everytime I adjust, mainly because there was no design, no documentation in the name of agile. And it's very painful to intrusct LLM to adjust a code base that you are not farmiliar with (most generated anyway).
After stopped all work on the project for a week. I realised I should have proper requirements specified and design in the first place and make incremental progress, instead of vibe coding all the time. So yesterday I started writing down my requirment in old fashion SRS document layout, create System Architecture document and Techinical Design. Supprisingly with key information of SRS been writen by me, LLMs could generate other parts for me pretty decently, I still need review and adjust. And same for designing documents. And the best part (I learnt from youtube guy, can't rember which one, probably watched too much youtube) I genreated structured todo list, which is essentially a work break down structure (WBS) as todo list . And then start asking LLM to finish tasks one by one. With each task finished I add a git commit, so that I dont have to start over again from scratch. And these documentations reminded me good old times we develope things in waterfall process.
This time is different
Why am I going back to old fasion docs? Because with the help of AI, I just need mintues for a story, and after 15 minutes I proabably finised a traditional sprint. Based on Agile key principle I should retropect and collect feedback. Collecting feedback is not probably possible, you can't bother your customer every 15 minutes. And for retropecting, I should revisit my design, but not every 15 minutes.
As we can iterate at a insane interval, the agile "practice" of a handful of stories each sprint and adjust based on customer feedback might not applicable anymore, althougth the essence of action/reflection still stands. If we still aiming for some bi-weekly interations, each interation we implemented much more features with uncertainties and assumptions. To mitigate the impact of these uncertainties and assumptions I can think of 2 options here that first one is more frequenty sprints like daily:It's Modern Times
Another one would be still in a slower pace (more throughput), that we think thoroughly about what is actually needed instead of try and error, design things carefully that it can adapt certain level of uncertainty and assumptions, plan and track properly to ensure incremental progress, typical Waterfall practices.