Friday, May 3, 2013

Bottom up vs top down

I have been having this argument with my friend gl. I have been telling him that he is not a true believer to cool-aid we have been drinking lately around small modules, reusable components in nodejs etc.
Yesterday he told me rather proud that he actually followed the model and published his first npm module.
I think that the difference of believes exists and understanding it is important.
GL is the hugest proponent of incremental design. Being a hci person he always wants to have an version of the end product no matter how primitive. I would call this iterative top down development.
His first version is almsot always  a simple hello world site, still it is displayed in the deployment context of the app, be it mobile web or desktop. He slowly adds minifeatures and so and on. At any point he has visibility of how close or how far he is from the end. At any point he co-workers/clients/mgr can take a look at the early prototype can give feedback or can even use the product.

I on the other side apply the rhetorical question, what services/modules if I had would make the building of my app trivial (substack's slogan). I am asking this question recursively, trying to force myself to avoid depth-first-search descent and do more of a BFS, as I go down trying to implement the next module I would need, re-asking the same question.. 

The result of the two paths (he does better than I do) may be reflecting more the difference in programming/focusing skills than a true advantage in one or the other methodology. The truth however,   is that gl will be writing little custom plugs that would slowly get some more meat and bones.. and then often he has written something that may already exist in some similar form. With his methodology publishing modules is an after the fact exercise... this thing I used I could make it more generic and publish it.

The negative of the methodology I follow are obvious. Starting building my app bottoms up, from its components, I cannot have a good idea of either how much effort/time is still needed. I also find myself too often falling into recursive black holes... as one particular component that I start building becomes so important that it ends up becoming my priority 1 for many many days..

I am not sure what exactly is the right balance here. How I can reap gl's advantages but still be true to the substack slogan...

No comments:

Post a Comment