Username
Forgot password?
Welcome to our site!
Or Join with FTTF

Dmitri: is this agile development? do you have your idea / plan documents?

0

588 views
This looks really nice, and i'm impressed all done by 1 person.
how long did it take you?
did you plan out what you had to do on paper, or in computer document?
how did you know what had to be done first, second, etc?
do you have a programming / development method / system / plan that you used when building this?
if you could share it, i'd appreciate it
when i start building web things, i tend to make a bunch of word document that seem good idea, but then become large, hard to follow, complex, even if using agile method
so i want to learn how the masters do it
thanks to you, and thanks to all *****1 females in the world...
and are you in Greece?
 
asked June 10, 2011 at 12:15 PM

 US

3 Answers

1
 
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.
flag
answered June 10, 2011 at 12:50 PM
0
 
i do not have enough points to comment, so i must put my reply here in the answer section, which seems not the correct place for my comments.

* i better learn mongodb, because it seems that i spend a bunch of time planning complex joins. i have no idea how mongo accomplishes that, but i think it should be asked in a different question. :)

i'm interested in your concept of a to-do list...
was it a simple to do list, or did you start with the name of a task, and then describe what it had to do, the logic it required, dependencies, etc. or did you just name the task, and then start programming based on the idea in your head?

i tend to be easily distracted and multitasking all the time, so i find i really need to write things down so i don't forget. especially when i am writing code and realize that i need an encrypt/decrypt function for something, if i don't capture that thought, i find i forget about it until i am debugging, and then it rears it's ugly reminder head and i am angry at myself.
other times when i am thinking about the application, i get so many ideas i have to capture them all, and it all comes out as a flood of notes, and it's hard organize them when you want to write as quick as possible so they don't get lost. and never enough time to go back and get organized later.
thanks you
flag
answered June 10, 2011 at 1:17 PM
0
 
One more programming tip I can share, but this is a top secret trick, dont tell anyone.

Sometimes I just create an new blank php file, give it the name of class it's going to be, then just write some comments in the comments block describing what it's going to do, including as much details as possible and then just save it and it will just sit there for awhile.
I may even include a few methods with no body, just comment blocks.

For example

protected function main(){
        $this->getInput()
        ->parseData()
        ->validate()
        ->saveData()
        ->updateUser()
        ->sendEmails();
}


This could be all I need to later take it from there. This is actually the important part, the actual methods can be written later but the main() methods I have to write as I think about the steps involved in this one feature. This is called a top-down design. This may be a true secret to being a good programmer. This is certainly what separates a good programmer from a beginner. Beginners don't do a top-down design, they tend to do the opposite - sometimes refereed to as bottom-up design, which is the wrong way of doing things

A little blank php file, not doing anything but waiting for me to implement it when I get to it.
flag
answered June 10, 2011 at 1:04 PM

Your answer

Join with account you already have

FTTF

Preview

Alert