Have you ever wondered what all those TDDs, BDDs, DDDs, ATDDs mean? Are you sure your project is following all these methodologies that form the software development mainstream? Do you know what to do to stay up to date?
Here is the comprehensive and exhaustive list of various established development techniques that you can meet (or have a chance to introduce) in your project. Feel free to be inspired and use as many -DDs as you can!
- ADD: Anticipation Driven Development
- When the requirements are carefully hidden in stakeholders' minds and not shared with the development team until the deadline. In that methodology developers need to be ready for everything.
- BDD: Bug Driven Development
- Delivering anything as quick as possible and explaining all the missing features as "just bugs". Then fixing it using a mix of magic and dirty hacks.
- CDD: Copy-Paste Driven Development
- Introducing new feature to the system is easy as long as the feature may be put together from the borrowed parts of other features. Low coupling, sort of.
- DDD: Development Driven Development
- Have you ever had an impression that the project's code just live its own life?
- EDD: Email Driven Development
- As a productivity improvement technique, developers are expected to reduce wasting time in those ugly black IDEs and keep focused on the real stuff being discussed via email. 60 times a day.
- FDD: Frustration Driven Development
- After delivering the final requirements, implementing and making the code well-factored and production-ready, the new final (finaler) requirements arrive, without changing the deadline. And then, two weeks later, there are the finalest requirements.
- GDD: Google Driven Development
- Let's google it up. All the code is already there, for sure.
- HDD: Hardcoding Driven Development
- KISS and YAGNI plus being extremely explicit everywhere. So explicit that any business logic or calculations makes a smell. May also be the Test Driven Development that went too far (the code works only for cases used in the tests, because all the answers are hardcoded).
- IDD: Idiot Driven Development
- Self-explaining. But don't use that name when talking to your boss.
- JDD: Job Security Driven Development
- The primary goal each developer seems to have is to become indispensable. It's easy to do when adhering to several simple rules. That technique encourages great productivity of developers (when counted in lines of code written).
- KDD: Knot Driven Development
- From the Gordian Knot - when the cyclomatic complexity is higher than the number of lines. And when all the special cases are covered with enough attention and care.
- LDD: Layering Driven Development
- The technique focused on proper code encapsulation and isolation - each developer creates his/her own layer of abstraction. Who wants to work with that legacy code, anyway?
- MDD: Meeting Driven Development
- Methodology that relies on the premise that each development problem may be solved by discussing it over and over regularly in the adequately large group for the adequately long time. And if it still doesn't succeed, invite even more managers.
- NDD: Not Driven Development
- IDD with the principle of team self-organization.
- ODD: Outlook Driven Development
- See EDD. Syntax coloring plugin for Outlook would be nice. And also source control plugin, to be able to commit the code by email, finally.
- PDD: Patch Driven Development
- When the development is time-constrained, with fixed date, anything should be always deployed to production on time, regardless on its development status. Then there's a patching phase, that is trying to understand what was deployed and replacing it with working bits by some shotgun surgeries.
- QDD: Quick-Fix Driven Development
- Mix of Patch Driven Development, TODO Driven Development and some hope.
- RDD: Refukctoring Driven Development (officially: Refactoring Driven Development)
- When it's not possible to isolate the crappy code written last year (see FDD), comment it out and leave with "TODO" flag. Then write it once again.
- SDD: Showcase Driven Development
- Don't do anything unless there's a customer showcase tomorrow. Then rigorously apply QDD and TDD.
- TDD: TODO Driven Development
- Project planning methodology that assumes the existence of some time in the project's future when there will be no new feature requests or bugs and the developers will have a lot of time to reduce the technical debt.
- UDD: Utopia Driven Development
- Pragmatics' name for TODO Driven Development.
- VDD: Versatility Driven Development
- The methodology about developing a solution for every single customer need (including those not yet discovered) at once, by a single project. Also the way of writing code so that it can be re-configured to do other things in the future, if the need arises. Also known as Soft Coding.
- WDD: Wheel-Reinventing Driven Development
- The concept based on natural and inborn lack of trust for others' code, including guys next room. Instead of taking a risk of using others' code, let's write it from the scratch again (and use both versions in the same project in the same time). Sort of loose coupling, again.
- XDD: Xero Driven Development
- Mutation of CDD. The only features possible to implement are those like already implemented. We need to have some strong foundations to copy from, right?
- YDD: Yesterday Driven Development
- Pretty broadly used time management methodology in software development. All tasks are due two days before tomorrow.
- ZDD: Zen Driven Development
- Software development and mind training at once. Occurs when the codebase requires "the attainment of enlightenment and the personal expression of direct insight" to work with.
Let me know if I forgot anything from the mainstream.