開源老司機自述:我享受無償編程帶來的一切
譯文再過一次生日,我就滿七十歲了。而且正如大家印象中一樣,像我這個年紀的人往往對電腦方面的事情一無所知——至少在澳大利亞是如此。
我們需要在孫男娣女或者專門的“老年人計算”課程的指導下才能學會如何使用電子郵箱、網絡瀏覽器以及Facebook。人們往往不指望我們這群老家伙能掌握文字處理或者電子表格制作之類的知識。而且如果我們打算買臺電腦,最靠譜的辦法就是向年輕人請教,了解哪些機型最適合自己。
但事實上,我個人對于計算機以及計算技術相當了解——雖然我從來不是什么什么IT專業人士,也沒有接受過任何IT方面的培訓。我也懂得如何編程。每次坐在電腦前面,我都會用一用自己親手編寫的程序。而且在退休之后,我也把不少時間用在了寫代碼身上。
有點顛覆大家的印象吧,那么這一切是如何成真的?
往昔的夢想
作為編程生涯的第一步,我早在1961年就在高中里學習到了計算機編程方面的基礎知識——沒錯,就是1961年。當時我們高中購置了一臺IBM大型機,它的作用是處理打孔卡上的數據,使用的則是FORTRAN編程語言的一套早期版本。我們學校里的孩子們就是這樣學會了如何利用FORTRAN編寫簡單的程序。
高中畢業的兩年之后,科幻小說家艾薩克·阿西莫夫(Issac Asimov)對五十年后的生活作出了設想——到那個時候計算機將會變得無處不在:
“每一位高中學生都會學習基礎計算機技術,他們將精通二進制計算并通過培訓掌握如何‘Fortran’(這一名稱源自‘formula translation’,即公式翻譯)這樣的其它未來編程語言。”
很抱歉,阿西莫夫先生。盡管如今計算機設備已經融入到每個人的日常生活當中,但我們澳大利亞這邊的高中仍然不愿將任何編程語言納入正規教程。教材決策者們壓根不打算培訓出能夠適應市場需要的計算機技術人員——而在數字化經濟體系之下,這類人才已經成為由計算機驅動的大型企業當中最為重要且往來活躍的員工群體。
澳大利亞的高中畢業生如今已經擁有一定程度的微軟Word、微軟Excel以及微軟PowerPoint使用經驗,但也僅此而已。他們已經準備好迎接以Windows為核心的辦公任務了,雇主先生——不管你們實際需要他們擁有哪些技能儲備!
近期趨勢
最近幾年以來,在學校當中教授編程知識已經成為一股新的趨勢。這一方面是受到了海外風氣的推動,例如Hour of Code活動就鼓勵來自世界各的上千萬在校學生參與到編程學習中來。而在澳大利亞,國家制定的新課程當中也包含了“數字化技術”作為組成部分,旨在從小學階段就幫助孩子們樹立編程思想。澳大利亞國內各大正常甚至也開始以越來越高的熱情對待編程教育這項重要工作。
這種對于編程的突如其來的熱情似乎在很大程度上源自市場經濟的實際需要。澳大利亞的孩子們必須為“未來的工作崗位”做好充分準備。澳大利亞商業理事會主席Catherine Livingstone在2015年4月的National Press Club當中指出:
“就澳大利亞國內的情況而言,年輕人們的數字化技術素養與其它競爭對手國之間的差距正在逐步增加。如果我們要進一步提高生產力并在國際競爭當中占據一席之地,就迫切需要出臺一項十年發展規劃來消除這種差距。”
換句話來說,澳大利亞已經承認自身還沒有為當下的數字化工作環境做好準備。甚至從互聯網開始騰飛的過去二十年中,澳大利亞一直在世界范圍內處于相關教育缺失的落后狀態當中。為了順利應對未來可能出現的相關挑戰,現在我們有必要呼吁那些尚不熟悉編程知識的教育從業者們幫助自己的學生成為計算機教師,從而為澳大利亞培養出更多具備此類技能的人才。阿西莫夫的預言已經在很大程度上得到了證實——雖然還不夠準確。就目前來看,將編程語言課程引入高中教育可能需要75到80年的時間,而非他所估計的50年。
在學校當中推廣編程教育也許是件好事,但也未必能帶來理想的效果。四十多年前,高中教育幫我實現了編程夢想。但是我猜那些并不了解編程的政策制定者們對它的理解還僅限于一種與計算機相關的工作,而且單純以為編程只是從業者們獲取不菲收入的手段。
安全還是風險?
2015年6月,《彭博商業》雜志發布了系列文章,題為《世界是編程者們的》。為什么這么說?就我個人的理解,文章的意思是:代碼控制著計算機與使用計算機的用戶群體。如果大家使用預先編寫好的代碼,包括計算機自帶程序、通過DVD乃至網絡下載獲取、或者是從IT供應商處購買,那么用戶將永遠只是用戶——對于程序本身,各位將沒有參與能力及發言權。在這種情況下,我們能做的僅僅是遵循軟件編寫者的思路推進,而不可能另外探索出任何實現途徑。在大多數情況下,大家都需要花錢購買默認受到限制的種種權限,而且始終受到最終用戶許可協議的嚴格約束。
但在另一方面,如果大家自行編寫代碼,那么各位就成了真正的主人。我們能夠控制自己的設備,乃至其它有能力運行這些代碼的硬件平臺。編程帶來的其實是一種能力的思維方式的解放。不知道商業技術社區是否真的理解了這一點。事實上,我們掌握且能夠編寫的代碼越多,那么我們對于現有商業軟件以及程序內所規定的工作模式的依賴性也就越低。
那么企業雇主們是否希望畢業生掌握在業務環境下拆分并重構信息流的能力?是否希望他們能夠利用高超的編程能力與專業知識取代昂貴的軟件采購成本、顧問支持以及第三方供應商費用?青年們又是否希望自己能夠成為不可替代的人才,并拿到應得的薪酬水平?答案也許是肯定的,但這一切的前提恐怕是放棄長久以來企業所熟悉的Windows環境。
我認為普及型教育最終將培養出規模可觀的程序員群體,而且其數量遠超基礎教育培養出的文字處理人員。但假如學校方面并沒有聽取我們這些老人的建議而開設編程課程的話,大家是否愿意自主加入到編程學習中來——就像我當初那樣?
老人的觀點
作為一大熱門應該是,雖然以下七條理由并不一定適用于每位程序員,但卻足以涵蓋像我這樣早已年邁的開發者群體:
• 在大多數情況下,我是因為沒有能夠確切滿足需求的現成軟件才自行編寫代碼的。
• 自己開發的代碼成果往往比現成軟件更出色,或者運行速度更快且更為簡潔。
• 成功編程的最大回報能夠立即體現。(成果能跑就是最大的成就!)
• 編程是一項極具創造性的個人表達方式。在我的一些程序當中,很可能存在著不少他人從來沒有嘗試過的實現內容。
• 編程對于大腦來說是一項極具生產效益的良好鍛煉。
• 我喜歡自己對計算機設備負責的感覺,而不是一直遵循他人在軟件中提出的使用要求。
• 最后一項原因,我打算額外做出點擴展。
十年之前,如果我不遺余力地推廣開源軟件概念,那么人們肯定會把我視為一個空想家或者令人煩躁的布道人士。為什么人們要編寫代碼,然后將其白白交給他人進行使用、修改或者重新發布?
但現在是2015年,開源軟件已經不需要進行什么推廣。開源軟件如今無處不在,并在我們的家中、口袋里、辦公室內、數據中心中乃至各種規模的業務環境體系上幫助用戶完成種種日常工作。大部分此類軟件的編寫者都屬于志愿人士或者收費程序員,他們堅信自己所編寫的軟件應當以“自由使用、修改以及重新發布”的方式被交付至每一個人手中。作為目前使用范圍最廣的操作系統,Android也屬于開源項目,而且立足于另一項大獲成功的開源成果——Linux。
給予總是好的,而為社區作出回報則是好上加好。將自己的代碼成果分享給他人會帶來非常奇妙的體驗。我的代碼示例就曾經出現在網絡Linux雜志當中。全世界到底有多少編程人員查看過我所撰寫的編程指南以及演示片段?我說不清楚。但我能夠確信的是,我所拿出的一切共享代碼都經過自己的親身驗證,它們絕對能夠起到預期中的效果。正是這種偉大的激勵機制推動著我在退休之后仍然堅持奮戰在編程工作的第一線!
原文標題:Why I code and don't get paid for it