網路城邦
上一篇 回創作列表 下一篇   字體:
應用程式資料化的一個清醒夢
2017/06/05 00:41:09瀏覽3297|回應0|推薦4

這是傻蛋一個清醒夢夢到的場景。有個專家還是高手說著一些玄妙的程式設計的方法和技巧,唬得傻蛋一愣一愣的,好像還真的有點道理。但又覺得有哪裡怪怪的。就在傻蛋一個,啊!原來如此!的感覺下,夢就醒了。

其實這個程式設計和沒碰軟體程式的人想像的不太一樣。越是外行人,越可能覺得程式就是一種高深而神奇的東西,會寫程式的人,只要打打鍵盤,就能像變魔術一樣做到很多很神奇的事情。然而對實際做基層軟體開發的人來說,卻不是那麼回事。把程式需求先給想好了,然後拆解成可以一步步具體執行的設計細節,軟體開發設計,在執行面,沒多少魔術成份,你想不到的東西,程式不可能變出來給你,缺乏想像力的人,只能用程式做一些簡單瑣碎的事情。

並不是簡單瑣碎就沒有價值。有很多時候,管理想法的落實,流程管控與品質的確保,是可以想出一些策略的,搭配程式的幫助,雖然只是做許多瑣碎的小事,只要湊起來能達成策略的目的,還是有價值的。除此之外,程式唯一的魔法,大概也就是,可以很快的的執行大量重複的任務,也就是迴圈的技巧。重複的事,我們人,做個幾次就會疲勞,需要強大的意志力才能堅持,且做越多也越容易分心而失誤。大量重複的任務讓電腦來代勞,那確實是完勝人腦的,不是強幾成或強幾倍的差距,而是完全無法比較的差距。工作資訊化,常常是失敗的,只是管制變得更多更煩,讓人員抗拒與做許多更沒效益的事,如果沒有把適合電腦代替人腦的大量重複標準化工作抽離出來,由這個部份的效率優化當成出發點,資訊化通常都不會有什麼太大的實際改變的。反而很容易變成可有可無的改善,或是幫倒忙。

而軟體設計的不少不斷改變與,嗯,姑且說是進步吧,的新技術和新理論,有時候也會陷入類似的問題。創造出許多應該是有點道理,但實際上卻抽象而不易理解應用的新技巧,一下子可以把問題弄得酷啊炫的,很有逼格。傻蛋夢到的內容有點模糊了,現在只記得大概是物件導向設計的依賴注入的設計模式應用吧,結果是可以透過複雜的配置來取代掉許多寫死的程式碼那樣。不對勁的感覺是那樣搞反而讓簡單的小事情變複雜,少一些寫死的程式碼去換整套更抽象難學習理解的架構,這,不划算吧?

程式設計師剛入門的時候常常是照規格一步一腳印寫呆板的程式碼。再不然,就是給你一個明確需求結果,要你想方設法的盡快把能展示的程式給開發出來。這兩種不同的風格,前者是都想好設計差不多了,程式設計師只是最後按圖施工的工人而已,後者則常常是新創團隊要快速開發驗證市場需求的雛型,設法把功能先擠出來再說,什麼架構好不好,設計優不優雅,是否容易理解維護,有沒有骯髒的寫死重複代碼,不是那麼重要,快速能交出來才是重點。所以呢?剛開始寫程式的人,常常不是當底層螺絲釘,就是寫一些品質低落的速成代碼為主。有點自我要求的人會覺得不滿,於是會覺得要重構醜陋難以繼續維護的系統,做這個,才有技術上的成就感。減少重複就是第一個,也是最主要的優化方向。同樣的處理邏輯,到處重複的出現,當需求變更時,常常會漏改到,而產生大量煩人的臭蟲。於是乎有許多設計的技巧與理論,可以應用在程式架構設計上,提升程式的品質。

傻蛋想到的是,有些技巧雖然看起來神奇又專業,但沒打到痛點,反而是增加了無謂的複雜度。常常痛苦的學習了好一陣子,總算是搞清楚這個是什麼鬼,該怎麼用的時候,才發現這新東西帶來的麻煩比好處還要多得多,是很糟糕的東西。花很大的精神把不重要的細節磨得很精巧,反而讓這個工具的目的與整個應用概念的掌握變得更困難,讓簡單的事情變難做了。

在消滅重複與寫死的程式碼上頭,有時候會發現,努力消滅的重複程式,到頭來,其實應該是資料。讓一個系統,是資料的歸資料,只有真正不變的結構性的規則,才用程式實作,這樣,最簡單。糟糕的設計,會把具備變動性,應該定義為資料的成份用程式寫死,而把架構上清楚易懂的程式,抽離出裡面重複的片段,弄成複雜的配置檔案甚至資料庫的數據結構,本來容易看懂理解的程式,經過重組變得面目全非。傻蛋的原來如此,就是想通了,讓該是配置動態資料的部份是資料,該用程式實作的部份用程式實作,保持架構易懂與能配合需求彈性應對就好了,本來就是理論與技術要為使用者服務,而不是學一些能把自己搞迷糊的技術來裝神祕,才是正理。讓程式易懂,有容易組織管理的架構,這,不是什麼高深的技術手段,要說是價值觀還比較像吧。

不能建立自己對於程式軟體本質是什麼,想要怎麼應用與管理,而是當成學習魔術的態度在學習程式設計的那類人,程式設計師之路,可是不好走的啊,新技術追得很辛苦但用得很無力,寫出來的程式解決了部份需求又造成了更多的麻煩,越寫越複雜的邏輯,還有許多該死的細節和疑難雜症等等,可以說,是個巨坑啊!而且,最大的問題是,如果有真的很優秀的ㄧ些程式設計師的話,這個社會,還需要那麼多平庸的程式設計師嗎?其實大多數的應用程式,目的都是為了解決特定的問題,少數是為了創新或利用電腦穩定高效的重複運算執行力提高效率,這個世界需要更好的程式設計師,但,似乎不需要更多的程式設計師吧?現在的人就夠多了,或是太多了吧?

( 不分類不分類 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=pondin&aid=103879518