Of course, each project is unique and has other stages. But these three stages generally exist in every project.
The first thing that a developer needs to know is what his/her extension will do. While it sounds pretty obvious, not many extension authors know exactly what functionality the extension has in the end. It evolves over time, and often the initial idea is completely different from the final implementation. Predictably, neither the original nor the final is done well.
In the other case, when extension features are collected, though planned and implemented according to plan, they usually fit well together.
So, the very first thing to do when creating an extension is to find out what that extension should do. This...