2011年5月5日 星期四

重新整理

近來在工作上有了些新的體驗,算是有個主軸
開始寫些系統的東西,也複習了許多遺忘掉的東西
沒想到我曾經寫過C++,那個大概是七八年前的事情了

我想我果真是有夢想的人,而我也確實感受到在一個環境裡大家逐漸被磨掉的樣子
但我想,我不能夠讓自己的夢想被磨掉




軟體之所以會有品質,是靠努力來的

軟體是一門工程,也是一門藝術
就像上一篇的名言,單純寫出程式碼很多人都會
但為什麼要那樣寫,為什麼要那樣設計
很多人卻不清楚

也有很多人單純覺得這只是一份工作,為什麼一定得這樣拼命
並不是說,想要一份工作,快樂過生活,這樣的態度不對
只是在輕忽軟體品質的同時,你也造成幫你測試的同事及用你的程式的人的困擾
這樣的態度與那些叫你寫Functional Spec卻不做事的人沒有啥不同
也與那些說自己只負責寫prototype的人也沒啥不同
沒有經過自己完整測試的程式便叫做「Legacy Code」,是不能夠使用的
無用的程式片段,就像不斷累積的麻煩
一個用麻煩堆積成的產品,最終就是招來關門大吉

為啥我一定得在軟體工程上朝向卓越?
我想,那是我非常清楚軟體可以做到很多事情
而我想要利用軟體去做很多事情
我更認為,這個世界值得一些好的工程師站出來替大家寫些好用的東西
讓用的人深深覺得「啊~還好有這套軟體」

必須清楚的是,在台灣很多號稱做軟體的公司的資深工程師們,是無視上述的想法的。不能夠說一竿子打翻一條船,但注重這些細節的人真的太少。

分散式軟體過去的失敗

我看到在這一年來opensource這邊對於分散式系統,雲端軟體的開發已經開始有些轉變
許多人都在想要好好地使用大量的機器,也代表他們越來越清楚大量的機器會出現什麼問題
就算有些不清楚的地方,至少他們很認真

而反過來我對這些號稱在做資料中心的人
他們是否真的有大量機器管理,建置直到軟體開發的經驗
而這樣的經驗是否兩三年累積的起來,有沒有不同面向的人在負責不同的經驗
是影響雲端相關軟體產出品質的最大因素

另一個瓶頸是,系統再大下去,便會有許多使用情境
以及層層複雜的設計以求彈性
大家都在嘗試互相整合,以為只要用新名詞封裝舊概念就好,或是換個方式嘗試就好
但多半是概念上越簡單的,越是有重新設計過的,化零為整才可能有足夠的擴展性

簡單地說,現代資訊流通這樣快,概念這樣複雜
想拿別人的東西來改一下就想要上場,已經沒啥用了
還是好好想想別人做的東西到底本質上有啥沒突破的
在這個點上去砸下人力時間成本來突破,會比較有顯著的成果

我必須告訴我自己,未來不要重蹈他們的覆轍

該做的事

  1. 跟上時代,善用溝通工具及傳播性網路
  2. 建立個人履歷,知識庫,隨時接受審視
  3. 隨時改變錯誤的習慣,修正自己的程式(包括舊有的程式)
  4. 追求進步與卓越

2 則留言 :