Home > Development Processes, software engineering > Flexible Software Development (aka FlexDev)

Flexible Software Development (aka FlexDev)

Lidor Wyssocky wrote a post about the way process should be grown out of project needs and he calls that Flexible Software Development (or FlexDev). He basically argues that people should not be bought into any kind of development processes (e.g. RUP, XP, Scrum) or practices (e.g. TDD, pair programming), instead they should just work out a process of their own during the development life-cycle, depending on the project needs. This can be summarized by the following statement of Lidor

The best thing you can do (and that’s the only thing that deserves the title best) is to create an optimal process per project.

While I agree with him that, ideally, process should be project-specific and grown gradually by the development team. Unfortunately, that does not work for any team. Depending on the skillset of the developers that the FlexDev style can be applied or not. In fact, trying to sell FlexDev to developers who are not mature enough will surely make the project a big loser and for some teams, the process will be nothing but ad-hoc and chaotic (aka Code-and-Fix)

Think of it this way, a martial art master will use specific movements to address his instant needs in a fighting, he does not care whether it’s called five-point palm exploding heart or crouching dragon or whatever, as long as it lets him achieve his goals for the battle. Now, giving a immature martial art apprentice, we cannot expect him to be that flexible and skillful to choose the most appropriate (and proven) fighting action in a specific instant of time. Instead, he is better off given enough instructions from his master (including the timeless principles of martial art), practicing them and gaining maturity out of them.

So, a better approach is that if the team (or the manager/technical lead) feel that they are not mature enough to know which is right and appropriate (and if they do not know, look at the software they have been working on, whether it is crappy or something they are proud about), they should pick a process, whether it’s XP, Scrum, Crystal or whatever, and apply their suggested principles and practices. Only after they have experienced many successes and failures with their chosen processes that they start to appreciate FlexDev.

Given that, FlexDev is not possible without the people who keep on refining the state of software engineering by finding and advocating better ways of doing things and bringing them into practice because that is how most people can get start as software “apprentices”.