如果人人都能寫程式???


今天早上看到這一篇文章:
http://share.inside.com.tw/posts/2775
還有以前的一兩篇文章
http://mrjamie.cc/2013/10/17/programming-generation/

讓我忍不住想講一些自己的觀察(感受),當然,從很久以前我就知道我其實是屬於少數人那一掛的,也就是說,當網友們極力反對或贊成某些事情時,我常常不知好歹的站在另一邊。最近我也常常FB一些其他人不太同意的論調...不過慶幸我生在一個還算和諧的時代,我不會因為這樣就被燒死...(因此請大家也別太認真,我的論點絕對有可能是錯的,甚至很多時候,我也曾故意寫過一些些不是那麼精準和正確的內容...)

早上看到的那篇文章,讓我直覺地想到,未來幾年我們很可能會開始活在一個人人都能寫Code的時代。說人人有點誇張,但比例勢必會大幅提升,原因很簡單,你有沒有發現,現在大家都在教別人寫程式??? 而且只要你願意,幾乎可以不用任何成本的學會寫一套程式(大概只需要花點錢買NB、和上網)

最近這十年,Coding這件事情有幾個重大的改變:
  1. 開發人員年齡層與進入門檻持續下降(年輕駭客、或是年輕億萬富翁比比皆是)
  2. 軟體開發資源突然間變多(拜internet普及、全球化資訊自由流通之賜)
  3. 通用軟體價值(實際售價)開始變低(這有個歷程,從30年前硬體收費軟體免費,變成20年前軟體很貴硬體便宜賣,到最近10年又有點變成軟體免費或隨著硬體銷售的趨勢)
  4. 軟體以服務的面貌收費

特別是第四點,很多人覺得似乎沒什麽,ASP或是SaaS都講了很久了,但這十年的改變異常之大,讓人措手不及。

以前獨立開發人員,可以在車庫裡面寫出一個mail收發軟體,然後放上BBS網路銷售,或是讓網友donate這個軟體。但這幾年這樣的模式還是有,但越來越限於特定族群、特定領域的應用程式。才不過五年前,大家搶著寫App賺錢,現在卻又說App不用IAP就賺不了錢!!! 終端消費者(End-User)開始視軟體為免費是理所當然的事情。

過去三十年來所建立的軟體有價的概念,隨著internet on line services普及而開始崩解,現在的終端消費者,越來越覺得軟體應該不能收錢,如果要跟我收錢,那最好你能提供像Google一樣的服務再說,否則程式設計師想收錢? 門都沒有,我用google app就好囉。

軟體開發人員必須知道,軟體免費的時代快來了,如果市場能接受軟體免費而服務收費,其實對於大型企業來說無形中建構出了一道擋住中小企業的進入障礙與門檻。

Google的"服務"有效的(在暗地裡逐漸)改變了軟體消費者的使用習慣以及價值觀。Google甚至改變(加速)了微軟的軟體銷售模式(Ex. Office 365)。

然後,軟體世界就變了。

一直以來,我並不是一個強烈擁護應該將所有資訊與開發技術、技巧100%都放到blog上公開的人。那些標榜著分享、Open...等等的偉大主張,我並不是完全同意與支持。理由很簡單,我壓根不覺得分享是理所當然的事,如果你長時間的分享,你就會發現,除非你覺得分享這件事情本身是個極大的樂趣,否則它真的是一件很辛苦的事情。除此之外,分享的成本很高(而且當你夠老之後,就會發現這個成本還會隨著年紀越來越高),因此沒事不會有人寫個幾百篇blog只是為了一個崇高的理想。

我得說,其實掌握這些知識(資源)的人很多很多,很多人躲在企業裡面,能力不輸講師、作者,只是下班後還希望有更多的家庭生活和自己的時間,因此壓根不想浮上檯面。說真的,其實沒有人生來就應該要分享。blog作者所分享的東西,常常是自己花了十多倍的精神和體力,才得到的一點點經驗,說穿了其實也就不值錢了。但卻能省去其他人花費相同的時間。知識的分享本身真的是很崇高的。

回想,年輕時候的分享真的只是分享,動機很單純,只是因為發現了一些什麽,忍不住想要告訴更多人。但為什麽分享這件事情,年紀越大就越少? 職位越高就越少? 因為隨著年紀,人生的挑戰開始變多,許多人自顧不暇,更罔論持續的分享了...

(有時候分享還會被指指點點,就更令人氣結:再有時候分享完全沒有任何人指指點點,那就更是一種淒涼了...)

所以你看到的分享,要麼就是作者的偉大情操(這種你要感謝),要麼就是背後多多少少有著一些原因或目的,特別是技術從業工作人員的分享(這種你要保持警醒)。

最近十年,整個開發社群、Open Source社群、服務導向的公司,將"軟體開發技術分享"這件事情,形塑成一個很崇高的理想、或是開發人員的使命。有點那種,我share故我在的終極使命感。

但我想換個角度提醒大家,不知道你有沒有發現,分享的單位(或個人)所分享的內容,往往並非自己的核心競爭力,或是核心競爭力的來源。我不方便描述得很明確,我只能說,只有在分享對分享者(個人或企業)本身是無害(甚至有利)的時候,分享這件事情才能長久持續。

所以你慢慢發現,網路上基礎程式設計的分享變多了,開發技巧的分享變多了,特別是在北美成熟穩定的開發人員世界,由於開發人員的普遍薪資比較高(比台灣),所以基礎開發技術的分享俯拾皆是。但這對於活在像台灣這樣的環境的資訊軟體從業人員來說,是好還是不好,是有利還是不利?

比起個人,大公司或大企業,更會清楚的盤算利弊得失,我相信,對於大企業來說,鼓勵開發人員"針對開發技術"來分享,最終絕對是利多於弊。

我挑明了說一句,當基礎開發技術俯拾皆是、唾手可得的時候,事實上最有利的很可能是業主、老闆,因為開發人員的薪資沒有(無法)變高,但開發成本明顯降低了。這對推廣技術(把餅做大)、降低成本絕對是有利的,但這對於基礎開發人員來說,則不見得是全然有利的(所以回頭想想,開發人員不顧自己生計地持續的在分享,這才真真正正的是一個偉大的情操)

當然,這對整體社會來說好不好? 我認為好,因為更多的人受開發相關的教育訓練,對於邏輯和分析能力有相當大的幫助,對整體社會來說我想會是好事。犧牲一部分開發人員的權利,來換取整體社會的進步好不好? 我認為好!(你可以想,因為自私的David不是基礎開發人員,所以根本沒差...恩...是這樣嗎?) 但正在看這篇文章的你呢? 我很想知道你覺得好不好?

總的來說,大量的軟體開發技術分享,將會壓抑軟體開發成本。不過我們本來就在追求更低的軟體開發成本,不是嗎? 每一個開發人員不是應該時時求進步,時時處於學習與戰鬥狀態嗎? 如果你是這麼期許自己的,那真的值得恭喜與驕傲。的確應該如此,這是軟體開發人員的使命。我自己也是這樣期許自己...

軟體開發人員要有志氣(與勇氣)的對自己說:『我們是走在時代前端的開發人員,不是傳統產業,我不擔心工作被搶,我們不怕國際化、全球化的挑戰!!!』

但,如果你想知道為何軟體開發人員薪資似乎越來越低,那我也得誠實的告訴你,在現在這種開發技術隨手可得的時代,如果沒有每天學習,你的薪資就真的是只可能會越來越低。你說有些行業的技術幾十年不變、不需要每天學習,像是會計師、律師就不用啊,不公平!!! 對,答對了,看起來就是這麼的不公平。這會不會根本整個就是大公司或是老闆、業主的陰謀??? 讓大家分享,鼓吹大家分享,然後降低軟體開發成本? 呵呵,我怎麼會知道,你自己覺得呢?

但我最後要說的是,不管有利或不利,這就是一個趨勢。前陣子引用Ruddy老師說過的話,一位信仰敏捷的人,是會認清這個事實:「你無法凍結需求,正如你無法凍結市場、競爭、知識、進化或者成長一樣。」簡單的說,不管你願意不願意,我們就是正邁向一個每個人都能寫Code的世界。 你...擋...不...住...的

如果你不學習,不試著提升自己(這個學習和提升,指的絕對不只是軟體開發這個領域),或許下一波挑戰來臨時,軟體開發人員將面對如同過去傳產從業人員所面對一樣的大規模失業問題...

人生的挑戰,從來沒有消失過。

留言

匿名表示…
董老師您好,
之前有看過一篇文章
騎虎難下的六七年級-迎接工匠與行腳商人的時代,裏面的說法讓我覺得,除了技術能力的精進外,也更該讓自己的能力,符合本身就業所在之環境上或是族群中的需要。如此才能持續提升自己在環境族群上的被需要性。

純分享,謝謝。

C.K. Hsieh
David表示…
的確,這也是我希望表達的,開發人員很難再只以技術能力作為職場上競爭力的唯一指標了...
我投分享一票
事實上律師, 會計師及甚至醫生
薪水也是不斷變低的
我投分享一票

事實上律師, 會計師, 甚至醫生的薪水也不斷變低喔!

我想主要還是供過於求
當麻許寫道…
分享囉 趁我現在還想分享的時候
David寫道…
當麻繼續加油,我常看你的分享...
David寫道…
to Floyd,

確實,經濟學的供需原則解釋了很多情形。或許我們需要思考,台灣到底是開發人員(軟體公司)太多,還是案子太少呢? 抑或者是,客戶其實分辨不出來,一個案子是值10萬、還是100萬? 所以看似有品牌的SI廠商,總是可以用最高的價格接到規格綁死了的標案,然後再發包給小軟體公司,然後再發包給SOHO、Free Lancer或學生...看似每一手都賺到自己該賺了的,但...

我常想,為何我做不到用比市場來的高的價格爭取到同一個案子呢? 為何最終客戶還是用價格高低來衡量一切?

不過說到底,不管是供需問題、還是無法跟客戶說明清楚產品(團隊)差異,身為軟體開發人員的我,依舊有著不可逃避的責任...
Leo寫道…
今天早上,我媽問我,你那些木工器具怎麼辦?(因為第二個小孩剛出生)我說,放個幾年,等他們去上課,我就可以繼續玩木頭了。

反觀資訊技術、設備,放個幾年,就已經失去市場競爭力了,所以還不如趁腦子還記得、手法還靈活時,多做分享,留下記錄。

而且以我參加兩年鐵人賽的心得,「分享」會逼自己進步,利人利己,當然要做~
匿名表示…
之前在其他地方看過有人在討論,關於公司裡,老人是不是要教新手
這篇到後面蠻多人反應"如果新人可以2~3個月學完的事,你花幾天教不是更能讓新人快速上手"

看完後我第一個反應是那些回應的人應該是新人,因為新人要2~3個月才能學完,你教幾天對方上手了,如果新人就是要來取代你,你這樣不是逼自己提早走??

其實看很多人分享文章,如果是新技術,大部份都是給個開頭,剩下的要自己去專研,如果是舊技術,也是很多地方都有保留

就像老師說的一樣,大家都會保留核心技術,主要都是為了自己,可以把技術出書或是開課去教人

所以分享,其實只是給人一個入門磚,人人都會寫,可是專精只能自己想辦法

上課老師曾經跟我們說過"我不怕你們問,就怕你們不問,因為我已經達到一個頂點了,你們要追到我有點難,更不用說我還會繼續往上爬",所以學習是必要的
91寫道…
人生就是這麼多矛盾...XD

我個人而言,還在練功階段時,為了自己好,分享會是一種自我的學習方式,從內化到外顯,再透過這方式,從無到有不斷練習,就是養成專業的過程。

從會到講給別人會,是鍛鍊影響力、表達能力。

對自己來說,也是個履歷上容易證明自己有點技術熱情、積極學習,以及簡單證明自己能力的一種客觀、有效的方式。

加上現在資訊爆炸,工作上還是有很多時候找自己 blog 比 google search 快的情況 XD

但 David 老師這一篇的確提供了相當多正反角度的切入,讓人省思。

希望大家在獲得網路上這些學習的資源時,也可以抱著一顆感恩的心,也抱著懷疑的態度去小心求證,建立自己的價值觀跟分辨如何去蕪存菁,都是一種學習的過程 :)
匿名表示…
對於分享這件事情, 確實很矛盾...自己努力研讀, 分享給別人似乎就失去優勢。但是換個角度想, 分享強迫自己持續進步, 而且自己會的終究是皮毛, 沒什麼好保留。而且老師這樣無私的分享, 讓我受益良多, 所以更該樂於分享, 謝謝。

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

精彩(且驚人)的Semantic Kernel入門範例

使用Semantic Kernel 建立自然語言請假系統

在 LINE Bot 開發中使用Semantic Kernel建立自然語言請假系統

專業的價值...