Taking the Bullet
James Gosling wrote a blog entitled "Sharpen the Axe: the Dark Side". You can read the blog for yourself, but the quick and dirty is that we all can get too caught up in the path taken instead of the destination. Although James was generally describing tool development, I believe the same can be applied to application development and pattern usage.
James references a quote from Abraham Lincoln, "If I had eight hours to chop down a tree, I'd spend six sharpening my axe." While improving your situation through preparation, it's very easy to over prepare yourself without fully understanding the problem at hand. Let me rephrase that, while improving your situation through patterns, it's very easy to over engineer your application without fully understanding the problem at hand.
To continue the axe example, lets say you did spend all that time on sharpening the axe. Is that axe going to now cut everything for you? The same can be applied to object oriented development as you will soon realize the scary truth that no object model is best suited for all tasks.
Even though you spent four weeks of meetings on defining your Account object, in the end it probably won't be the best object for handling both large fetches for a view and coordinating long transactional processes. How do we find the best solution? We don't. We "cut down that f*cking tree" and then spend that extra time adapting to the next task-- if it's cutting down more trees, then by all means sharpen your axe. If there are no more trees to cut, then we have six hours to watch most of the extended edition of "Return of the King".
Robert Martin uses the quote "Fool me once, shame on you, fool me twice shame on me" --or use some other variation from President Bush. In order to save time and protect ourselves from needless complexity, we allow ourselves to be fooled only once. By letting ourselves get fooled only once (or taking the bullet), we can more rapidly move on to the other tasks. The longer we wait to fully realize what kind of changes are likely, the harder it will be to create the appropriate solution.
This methodology can go south on you but change can be harmless when you have very short development cycles. Get solutions created quickly and move on to the next, dependencies and change will present themselves as if you are reading between the lines of all your requirements. Other ways you can protect yourself is to use simple OO programming tactics such as the open/closed principle, the single responsibility principle, and the Liskov substitution principle. If you didn't put the world in the hands of that framework or object, it's not such a big deal if something in the world changes.
In summary, the basic idea is to take the bullet and develop some solution that best fits the task at hand, while not wasting time rolling out a bloated mess. This is not an excuse for poor programming style. Being able to resist premature pattern usage and abstraction is just as important as using patterns and abstraction.
James references a quote from Abraham Lincoln, "If I had eight hours to chop down a tree, I'd spend six sharpening my axe." While improving your situation through preparation, it's very easy to over prepare yourself without fully understanding the problem at hand. Let me rephrase that, while improving your situation through patterns, it's very easy to over engineer your application without fully understanding the problem at hand.
To continue the axe example, lets say you did spend all that time on sharpening the axe. Is that axe going to now cut everything for you? The same can be applied to object oriented development as you will soon realize the scary truth that no object model is best suited for all tasks.
Even though you spent four weeks of meetings on defining your Account object, in the end it probably won't be the best object for handling both large fetches for a view and coordinating long transactional processes. How do we find the best solution? We don't. We "cut down that f*cking tree" and then spend that extra time adapting to the next task-- if it's cutting down more trees, then by all means sharpen your axe. If there are no more trees to cut, then we have six hours to watch most of the extended edition of "Return of the King".
Robert Martin uses the quote "Fool me once, shame on you, fool me twice shame on me" --or use some other variation from President Bush. In order to save time and protect ourselves from needless complexity, we allow ourselves to be fooled only once. By letting ourselves get fooled only once (or taking the bullet), we can more rapidly move on to the other tasks. The longer we wait to fully realize what kind of changes are likely, the harder it will be to create the appropriate solution.
This methodology can go south on you but change can be harmless when you have very short development cycles. Get solutions created quickly and move on to the next, dependencies and change will present themselves as if you are reading between the lines of all your requirements. Other ways you can protect yourself is to use simple OO programming tactics such as the open/closed principle, the single responsibility principle, and the Liskov substitution principle. If you didn't put the world in the hands of that framework or object, it's not such a big deal if something in the world changes.
In summary, the basic idea is to take the bullet and develop some solution that best fits the task at hand, while not wasting time rolling out a bloated mess. This is not an excuse for poor programming style. Being able to resist premature pattern usage and abstraction is just as important as using patterns and abstraction.
2 Comments:
Loving your work. Keep up the blog.
By nic, at 9:22 AM
情趣用品,情趣用品,情趣用品,情趣用品,情趣用品,情趣,情趣,情趣,情趣,情人歡愉用品,情趣用品,AIO交友愛情館,情人歡愉用品,美女視訊,情色交友,視訊交友,辣妹視訊,美女交友,嘟嘟成人網,按摩棒,震動按摩棒,微調按摩棒,情趣按摩棒,逼真按摩棒,G點,跳蛋,跳蛋,跳蛋,性感內衣,飛機杯,充氣娃娃,情趣娃娃,角色扮演,性感睡衣,SM,潤滑液,威而柔,香水,精油,芳香精油,自慰,自慰套,性感吊帶襪,情趣用品加盟,情人節禮物,情人節,吊帶襪,成人網站,AIO交友愛情館,情色,情色貼圖,情色文學,情色交友,色情聊天室,色情小說,七夕情人節,色情,A片,A片下載,免費A片,免費A片下載,情色電影,色情網站,辣妹視訊,視訊聊天室,情色視訊,免費視訊聊天,視訊聊天,美女視訊,視訊美女,美女交友,美女,情色交友,成人交友,自拍,本土自拍,情人視訊網,視訊交友90739,生日禮物,情色論壇,正妹牆,正妹,成人網站,A片,免費A片,A片下載,免費A片下載,AV女優,成人影片,色情A片,成人論壇,情趣,免費成人影片,成人電影,成人影城,愛情公寓,色情影片,保險套,舊情人,微風成人,成人,成人遊戲,成人光碟,色情遊戲,跳蛋,按摩棒,一夜情,男同志聊天室,肛交,口交,性交,援交,免費視訊交友,視訊交友,一葉情貼圖片區,性愛,視訊,嘟嘟成人網
愛情公寓,情色,舊情人,情色貼圖,情色文學,情色交友,色情聊天室,色情小說,一葉情貼圖片區,情色小說,色情,色情遊戲,情色視訊,情色電影,aio交友愛情館,色情a片,一夜情,辣妹視訊,視訊聊天室,免費視訊聊天,免費視訊,視訊,視訊美女,美女視訊,視訊交友,視訊聊天,免費視訊聊天室,情人視訊網,影音視訊聊天室,視訊交友90739,成人影片,成人交友,美女交友,微風成人,嘟嘟成人網,成人貼圖,成人電影,A片
By Anonymous, at 12:28 PM
Post a Comment
<< Home