2012年6月16日 星期六

程式的哲學

自從學會了物件導的向的概念之後,漸漸能夠體會一前人設計程式語言的一些想法。對於撰寫程式也多了一些新的體會。

記得剛開始學習程式的時候,由單純的執行書上的範例得到成就,知道自己也能夠的像書本的作者一樣要求電腦執行我下的指令,或是跑出我希望的結果。能夠理解每行程式的功用,經過修改、增加程式達到不一樣的變化。那時候沒有物件,沒有模組,就只是將心中的想到的功能完成。

記得那個年代的人們,覺得「寫出上千、上萬行」的程式是能力的表現,自己也是經過了不少年後,才發現這種想法不全然正確。
在學時期由於不是資訊相關科系,所以一直以來都處於自行研讀程式書籍的狀況,也導致我的程式廣度一直不足,直到現在仍是難以克服的問題。花了滿多的時間在學習書上的內容,對於一些簡單的問題,能夠提出一些自己的解決方法。也能夠由別人的作品中猜到一些新的想法。

中間曾經接了一個外包的案子,開了眼界的同時,也發覺自己不喜歡作重復的工作。不喜歡去的「拼裝」內容,在凌晨一兩點還接到電話要去修改某個微不足道的地方,只是為了老闆的一個靈光一閃。

入了學校,工作中不斷的解決問題,相信在足夠的時間和明確的需求之下,我可以順利把任務作好,也許還能在裡面加些有趣的東西。在每個案子之間,接觸更多不同的程式語言和開發方式,眼界也在慢慢的打開,發覺程式並不是單純的把程式「寫出來」就好。

開始回頭再要求自己程式碼的品質,工作上的效率,以及和其它的協同工作。我開始學習一些專案管理的知識,也開始導入一些工作流程。體會到,需要先為其它人踩出一條路,否則在大家都不了解工具或方法時,很容易導致混亂和時間精力的浪費。

程式的部分也是,專案的需求越來越模糊,因為隨著每個人看到的東西越多,產生的奇思妙想會讓會議難以聚焦,從而演變成花了大量的時間進行程式開發,卻一直達不到好的結果。

身為程式人員的我,開始和企劃進行溝通,試著將情境刻劃出來。找出當下真實的需要,讓時間的投入能夠得到更大的回報。其中最大的挑戰,在於得不斷強調自己並不是在討論程式,不是在研究技術問題。程式人員的印子會讓人不會專注在我所說的話,認為只是自言自語的思考,不是「非程式人員」應該在意的事情。

雖然,在討論上找到短期的目標,不過依然無助未來需求的不確定性。功能必須能夠被擴充,程式人員現在所寫的程式,要能夠面對未來大部分的變化,至少滿足當前定下來的願景。不過這些東西都太遠,遠到沒有一個人能明白的描繪出來。

所以,我開始像哲學家一樣,去探究專案中的每個部分,去分析它們的本質。敲打鍵盤的時間,有一半以上不是為了撰寫程式,而是在記錄浮現出來的想法,和自己作討論,去找出每個可能的問題或不明之處,再給予合理的定義。自問自答,推翻自己的想法,再重新建立。

程式本來就是在模擬現實,只是從前是在重現既有的流程,而現在則是模擬人們心中的想法。

沒有留言:

張貼留言