What are these, may you ask? Well, RDD stands for README-driven development and FDD stands for FIXME-driven development. They could sound like something stupid, I am even not sure if the words are actually to be used in the world, but they have worked well in my dev experiences and I'd like to share the story.
I usually enjoy writing README. I sometimes start a project from writing README, even before writing a single line of code. It seems like an overkill, but it at least helps at two points. Project design and motivation.
In the current mono-culture of GitHub, README is what people see at first when trying to learn a new project. Thus, in README, we usually write a project's quick introduction, installation manual, merits, demo, etc. They are basically what we think our project would look and work like. While writing these, I usually find myself being more accurate on what to create and achieve with the project.
Also, already having a good README provides me enthusiasm to create a good project too. Moreover, it works the same to other contributors.
FIXME is not considered as a good practice. Some people even say it's
only a result of laziness but nothing else. But really?
Software development is infinite series of works and always a matter of
time. What's important is to decide priority of the works. Putting things off in
software development is usually no result of laziness but of lack of time or
low priority. And, it's completely okay. The thing is how we can come back and
continue the work. Surely, communication and documentation can do the job, but
it requires considerable amount of work and we even just forget to do
sometimes. In the case,
FIXME can be placed with a comment indicating how we
should improve the part, and the
FIXMEs are easily revised later with grepping
them in the project.
Another good aspect of
FIXME is that it usually lets a new comer know what they
can do and how they can contribute on the project, in a handy way. Please do not
feel reluctant to put
FIXME in source code, just make them tidy for who will
work on it later.