其實很久之前就一直在想這個問題,程式設計師出了什麼問題了。
記得之前看到有人再討論什麼樣是一個好的程式,有人提出了很多的想法,用OO的設計加上Design Pattern及UML讓整個Project可以在很有效的軟體工程裡達到一個有效率的開發。
可是另外一個想法就是,只要簡單的軟體工程就可以了,程式不用切太複雜跑得順就好就算在main裡面一次到底也可以,切這麼多function、method或者class做什麼,浪費時間而且User也不在乎。(在乎的只有程式人員而已)

User只在乎穩定及友善的UI設計
對,User根本不在乎你用了什麼高級的技巧。這跟最近當的厲害的系統一樣(高鐵
、台彩、花旗...),User不會管你的系統是使用了CMMI、RUP、eXtreme Programming 來進行軟體工程,更不管你用什麼樣的Design Pattern、用什麼樣的程式語言開發。
User只關心一件事情,這個東西會不會出錯,速度夠快嗎?

一個常常當機的程式如果他用再好的程式語言開發、用在嚴謹的軟體流程管控又怎麼樣呢?他完完全全的還是失敗,因為我們永遠沒有站在使用者的角度去設想問題。

例如,當程式開啟的時候必須透過Socket連線至某一台Server,此時程式開啟的時候你會做一個偵測Server相關的Port或者程式是否有完成連線動作嗎?

有人會有人不會.....大家一定會說這跟設計人員有關係,一開始的規格書就必須寫清楚,否則為什麼要私自加上不必要的功能。
台灣很多的軟體設計公司,也有很多公司自己培養軟體人員,開發相關軟體程式提供給公司內部使用,單純以應用程式在市場上販售的基本上不多。所以我說的比較屬於公司自行開發的內部程式。

有時候跟User討論需求的時候總是會有一個感覺,你不替User多想一點未來就等著修改這些東西。因為User永遠只知道他遇到了什麼問題,他並不會知道系統上會有什麼樣的限制或者什麼樣的操作對他最好。
軟體工程的每一個階段都重要,可是有些公司cost down,很多人從頭包到尾......為了能少一個工作是一個,所以談的簡單一點總比寫的複雜好,否則KPI又不好看了。

程式設計落差
從User角度出發其實有些問題會變的很簡單也可能很複雜,記得公司同事常常會說這個很簡單阿,你們應該改一下就可以了吧!!
資訊設計的落差就這樣出現了,大家都以為自己都懂電腦,可是當今天進入設計的領域就發現還是有一點難度存在。當User看著Web網頁告訴你這裡移到這裡,應該很快吧!!下午可以給我嗎?
我的媽阿!!這對你來說很簡單一句話,可是整個頁面layout完全不一樣了,你說要不要重新弄過調整。這些資料傳到後端加個欄位記錄,應該兩、三天就可以搞定了吧!!這樣簡單喔,那你來做好了。
看似很簡單的東西,其實對於系統都要整體去思考,如果都做單點突破最後系統就會變成一個亂葬崗。所以就算再簡單的需求我都會習慣在分析一下,在瞭解一下因為雖然是小小的變動,如果遇到系統極限或者碰觸到流程的衝突,還是得拒絕修正或者將衝突解決。
程式設計不只是在改改程式符合User需要,我們是在建立一個系統的穩定度,建立更有效的流程讓公司獲得更大的利益。

不好的程式公司一樣有損失
其實我一直覺得程式設計怎麼會替公司賺錢,不過就是一些資料而已。
可是如果是一些生產系統當機無形損失就產生了,程式的邏輯錯誤造成產品誤判為報廢也是損失。之前提到的一些公司當機狀況不也是嗎?這些損失及User對其失去信心不也是因為程式人員所造成的。
有時候想想自己也不過就是打幾個字,寫一些迴圈判斷而已,可是其效益之大.....有時候是我們無法想像的。
如果我們程式設計的好搞不好也可以防制銀行人員監守自盜、增加彩券販售效益、讓公司有形、無形的損失降到最低。

程式設計師應該要多多加強自己的思考,因為自己的思考廣度可以決定程式的穩定度,不要太盲目在技術上的死角上。有時候最新的技術不見得可以帶來最好的效果(但可以帶來很好的KPI)。
多多瞭解人家面對問題的時候在程式是如何做思考,這樣可以帶給自己面對不同問題會有不同的思考,增加自己在程式開發的時候一些角度的思考。

用正確的手法解決問題
程式人員不是只有一種語言,有人專攻Web設計、有人是Windows平台的應用程式、有人只在UNIX/Linux開發軟體。各種語言都有,用一個比較有效的方法來解決問題,而不是一昧的在技術突破,因為我們不是在開發技術。剛剛我們就說過User不會在乎我們用什麼的。
如果你要開發一個可以從RS-232讀取資料的程式,有人會選擇使用各種語言來解決,但我卻看到另外一種解決方法。因為User堅持使用Web網頁,因為現在使用的程式是Web的,這樣的解決方案造成了整個程式設計維護上的困難,最後完成User也沒有意願在使用了,因為效果不好並且拖慢了網頁使用的速度。
讀取RS-232資料也許你可以提出太多的方法來處理,甚至可以不處理這個需求,但不要創造一個很奇怪的設計去迎合需求,正確有效的解決問題才可以帶來更大的效益,並且讓人力更有效發揮在公司其他正確的方向上。


不同的產業程式人員就要有不同的思考方向。網路上這篇文章提到的主要是他面試的是一家IC設計的公司,這樣的軟體要求的就是精簡為要。
你是專業程式設計師嗎?(上)
你是專業程式設計師嗎?(下)
這裡談到的又不太一樣,他站的角度比較屬於某個產業的domain know how,這跟IC設計要求的軟體工程師是不一樣的無法相比較。
就好像你拿Java 跟 C#來比誰程式執行比較有效率高,誰程式就寫的比較好一樣。

專業就是要站在User的角度多想一點,軟體工程的內部風暴沒有人關心。關心的只有程式設計師自己而已。

piratechu 發表在 痞客邦 PIXNET 留言(0) 人氣()