Friday, June 10, 2011

My answer to "Dmitri: is this agile development? do you have your idea / plan documents?"

This is my answer to a Question on Support site for LampCMS project


Once I wrote the base classes and basically wrote the framework, adding new features is not that hard, actually quite fast. It probably took me about 6 months or so before I even released the first commit to github, but it goes much faster now that all the base classes are solid and "bulllet-proof", I mean bug-free and have test cases.

Also abandoning MySQL and going with Mongo resulted in much faster development, and also alot of unpleasant parts of defining new tables and modifying existing tables and thinking of complex table joins are gone.

Yes, I did have all written down in a simple text file, like a todo list.

Also when I have another idea I now adding it to github issue tracker as a "todo" item, sometimes even including some implementation details. Often when I think of some new feature I also think of how this feature is going to be done, what classes, what database model has to be added. I now if I don't write it down I will forget all the details.

So right now there are a few things on the "todo" list and I don't really want to even adding new ideas before at least some of the "todo" items are completed.

Important items now are "Internationalization" class. I am thinking of the best way to implement it right now.

Also want to add option the "reply" to comment so that it will be clear that a comment is a reply to @user
On StackOverflow you have to explicitely type @user when you replying. I want to simple add a "reply" link and then it will automatically add the @user and maybe even visually indicate that comment B is a reply to comment A

At the same time I am not in the process of writing the API. Most of read API is already done. Next I want to start writing OAuth2 based write API. I've never done this before, so it may not be as fast.

It's perfectly fine for me to switch tasks and just write the comments reply feature for now and then come back to OAuth API thing. I find this task switching is easier on my brain sometimes.


I know there are many more features I want to add, but I also see that the "todo" features list is not infinite. I pretty much know what else has to be done before I can call this a finished program.

These other things are "messaging system" that would include sending system and private user-to-user messages and also a custom SESSION storage class so that a large site that has multiple front-end servers can store session data somewhere on a dedicated server. Also SESSION class will make it easy to show "who's online" and "what they are doing now"

Agile is slightly different. TDD is also different. I mean, I do write test cases but usually not before the classes. In TDD you write test case first, then write code untill it passes your test. I don't do this yet, maybe in the future I will. I don't have any plans to use UnitTests for the documentation. This is a whole other pattern and I don't really like it. I like to just add descriptive comments to all my classes and methods. This is then easy for new developers and also for me to go back and read my own documentation in case I forget what I was thinking at the time I wrote something.

No comments:

Post a Comment