I have been working on my Flutter database pet project: FutonDB, on and off, for a couple of weeks. In a relatively easy week, I would spend one or two days on it. Busy weeks will see me contribute zero hour to it. Usually, this kind of sporadic schedule will kill my interest rather quickly in any pet projects I started. Not this time, though.
Because I use the TDD method from the very beginning. Not my first time, too. Previously, I manage to finish a great deal of my fp-svelte project thanks to TDD too. FutonDB is the project that proved TDD works, for me. Not a one time wonder I pulled off.
Database software has very little surprises. Most functionalities are defined and well-known. Requirements are fixed. There is no new stuff to design, especially when I am copying one of the existing solution. I choose a baseline goal, find out all the required API, and start one by one. Choose one area, chop it down to tests, write the tests, fail them, implement function, pass them.
When I come back to the project after a long pause, I just look at the unimplemented tests for ideas. It is totally fine, I forgot what I have done before. If I broke the code, old tests would fail, and I will be reminded why the codes was written in that weird ways. Then restart the learning process, but not from zero, but from relevant codes that broke.
Because I use the TDD method from the very beginning. Not my first time, too. Previously, I manage to finish a great deal of my fp-svelte project thanks to TDD too. FutonDB is the project that proved TDD works, for me. Not a one time wonder I pulled off.
Database software has very little surprises. Most functionalities are defined and well-known. Requirements are fixed. There is no new stuff to design, especially when I am copying one of the existing solution. I choose a baseline goal, find out all the required API, and start one by one. Choose one area, chop it down to tests, write the tests, fail them, implement function, pass them.
When I come back to the project after a long pause, I just look at the unimplemented tests for ideas. It is totally fine, I forgot what I have done before. If I broke the code, old tests would fail, and I will be reminded why the codes was written in that weird ways. Then restart the learning process, but not from zero, but from relevant codes that broke.