程式設計師真正的價值 - OSCHINA - 中文開源技術交流社區

2021-01-07 開源中國

文章出處:池建強

問:池老師,我是個不愛互動的人,但是您所有的文章我都看了,非常感謝您的引導,我入手了人生第一臺 MBP。現在問題來了,但是找不到更合適的人解答,只能求助於您了,如果您有時間的話。問題是這樣的:我有個32bit unix file(開啟一個服務進程),在 Mac 上執行時錯誤提示是:exec format error,但是在 Linux 伺服器卻可以執行,為何?Mac 上有可以運行的方案嗎?期待您的回覆,不勝感激。 答:Linux 和 OS X 是不同的作業系統,可以嘗試在 OS X 裡重新編譯這個文件。 問:非常感謝!如果沒有文件源碼是不是就只能認命了? 答:可以在 Mac 上裝 Docker,然後對服務進行埠映射就可以了。 答:茅塞頓開。謝池老師。

以上是我和一位讀者的對話,這位小夥子在拿到答案之後像一縷煙塵一樣消失無蹤,之後再也沒有出現過。

在微信上加了很多 MacTalk 的讀者之後,經常會收到一些奇奇怪怪的問題,關於職場、關於選擇、關於朋友、關於 Mac、關於技術等等,不一而足。但是我能回答的卻很少。問題不好沒法回答,問題太複雜沒法回答,問題領域超出我的認知也沒法回答,耗時太長的問題我也沒 時間回答,實在是慚愧的緊。好在偶爾也能夠幫助一些小夥伴解決一些實際問題,心理上略感安慰,比如上面這個問題。

把這段程式設計師之間的對話翻譯一下,大致是這麼個故事:

一 位讀者有一個32位的 Unix 可執行文件,可以在某種版本的 Linux 伺服器上正常運行,運行這個文件作用就是起個進程,開埠,然後與其他程序進行交互。但是這個文件拿到 Mac 上完全沒辦法運行。就在他趴在 Mac 上愁腸百結萬念俱灰的時候,突然想到了「池老師」。不就是這個老傢伙把 Mac 誇的像一朵玫瑰一樣,讓每個程式設計師都去採摘麼?現在扎手了,你不管誰管?於是他給我發來消息,意思就是管也得管,不管也得管,您看著辦。

我 拿到問題一看,不難。Linux 和 OS X 雖然師出同門,都是從老前輩 Unix 那兒畢業的,但是後來畢竟各練各的,在 Linux 編譯好的程序不可能在 OS X 上用,但是在 OS X 上重新編譯一下可能就沒事了。我把這個想法告訴了這位程式設計師,得到的反饋是:對不起哥,沒有原始碼!

我被這個冷酷的回覆震驚了,立刻意識到 剛才的想法並不是最優解決方案,因為在重新編譯的過程中,各種包的依賴關係和編譯錯誤足以讓你焦頭爛額,我隨即提供了 B 計劃:在 OS X 上安裝 Docker,輕量級的容器 Docker 可以運行各種版本的 Linux,把文件扔到 Docker 裡,然後通過主機和 Docker 之間的埠映射即可輕鬆解決這一問題。

雖然這裡面會涉及很多技術細節,但是方向是沒有問題的,所以這位程式設計師立刻表示「茅塞頓開」,然後「biu 」的一聲就在屏幕對面消失了,沒有留給我說「不客氣」的機會。

這個問題裝個 Linux 虛擬機也可以解決,但是虛擬機過於耗費資源,而且不如 Docker 靈活,所以不是最佳解決方案。Docker 是。

做 為一個程式設計師,我們除了要掌握多門程序語言和多種資料庫,了解前端技術、後端技術,通曉網絡七層架構,知道 TCP/IP三次握手和四次揮手,編寫漂亮的代碼,設計優美的架構……之外,我們還要解決研發、程序運行和產品上線過程中遇到的各種問題,而且被要求以最 小的代價來解決問題……我們容易嗎?

除了編程技巧和程序設計能力,解決問題的穩準狠是衡量一個程式設計師是否優秀的重要因素之一,也是資深技術 人員真正的價值所在。在科技浪潮澎湃、技術信息撲面而來的今天,一位剛畢業的大學生如果足夠勤奮,他可以在兩三個月之內掌握一門程式語言,並編寫出像模像 樣的軟體,他們的學習速度甚至超過了我們這些老程式設計師,但是解決問題的能力是無法速成的,只能依靠時間、經驗和慘痛的教訓歷練而成。有時候還需要靈感和運 氣。

很多軍迷讀了大量的軍事著作和歷史小說,常常羨慕那些名將的風採,並浩嘆自己「生不逢時」。但是名將不是那麼容易煉成的。歷史上叱詫風 雲的名將鳳毛麟角,他們親自持刀上陣追擊敵人,見識戰場的慘烈,目睹敵人的屍體,看到戰友被殺,知道被刀看中會流血死去,他們冷酷無情,堅如磐石,在全軍 即將崩潰的時候發現敵人的弱點並進行攻擊,在瞬息萬變的戰場進行決斷,在多次失敗後從無數士兵的屍體裡站起來重新出發去挑戰那個戰勝你的對手,在所有人對 你說「指導員,我們上吧」的時候,堅定的說出那三個字:再等等!

如果你做不到這些,那還是做個最終會被張飛槍挑的小兵吧。

優 秀的程式設計師同樣如此,菜鳥常常羨慕高手在談笑之間讓難題灰飛煙滅,而自己卻苦苦思索而不得入門之法,殊不知這些高手同樣經歷了名將的那些腥風血雨。他們在 清晨的微光裡編寫代碼,在轟鳴的機房中調試程序,他們徹夜不眠就是為了解決一個 bug,他們要承受數據丟失或上線失敗的痛苦,默默吞下眼淚,準備下一次的戰鬥。不停的學習、實踐和思索,成千上萬個小時之後,高手史成。

同 樣的問題,高手的解決思路和小球是截然不同的。一般來說,只要不是世界難題,給足時間、空間和人力,都能解決。如果你遇到問題告訴上級,這個問題交給我 了,兩年之內搞的妥妥噠,那就不要怪項目組組團把你打出翔來,因為大家要的是分分鐘解決,不是兩年。在這個唯快不破的年代,我們沒有這麼多的時間,所以要 通過逆向思維、經驗教訓、輾轉騰挪、借力打力等方式以最小的代價快速解決問題。這才是老程式設計師的價值。

再舉個例子,一個運行良好的線上應用在你修改 bug 增加功能之後重新上線出現了一些莫名其妙的問題,比如佔用資源增加或運行一段時間宕機等等,怎麼解決?

常規的做法就是通過閱讀日誌、模擬線上環境和調試程序來定位錯誤。容易的 bug 用這些方式基本就能搞定了,但是更隱蔽的 bug 會耗費大量的時間和人力。更好的方式是什麼?

首先,排查是程序問題還是環境問題,把線上程序恢復到運行正常時的老版本,如果出現了同樣的問題,那就是生產環境發生了改變。如果運行正常,要麼是你修改老 bug 時引入了新 bug,要麼是新增加的代碼出現了問題。

其次,閱讀產品的 changelog,根據代碼提交的時間線構建系統,通過二分法排查,定位是哪部分代碼引起的問題。

第三,排除了所有的不可能,剩下的無論看起來如何不可能,就是它幹的。

以上只是一個簡單的例子,實際的情況可能比這個例子複雜一百倍,需要我們綜合使用各種方式進行交叉比對和錯誤排查才能解決。這僅僅是遇到問題解決問題,更多的時候是需要你提出問題,並解決問題,那是更高的境界。

很多人學了那麼多程式語言,寫了十幾年程序,最終依然無法做到以最小的代價解決問題,不禁讓人扼腕嘆息。

程式設計師真正的價值是什麼?以最小的代價解決問題!知行合一,方可無敵於天下。

相關焦點

  • Delta Lake 進入 Linux 基金會 - OSCHINA - 中文開源技術交流社區
    Linux 基金會介紹,當前每個組織都希望通過數據科學、機器學習和分析從數據中獲得更多價值,但由於數據湖內部缺乏數據可靠性,產生了極大的阻礙。「將 Delta Lake 引入 Linux 基金會的中立組織之下,將有助於依賴該項目的開源社區開發解決存儲和處理大數據(本地和雲端)的技術」,Linux 基金會戰略計劃副總裁 Michael Dolan 表示。
  • 開源春天,此時不來,更待何時? - OSCHINA - 中文開源技術交流社區
    隨後 Apache 軟體基金會與 OpenStack 基金會相繼出來澄清,表示「開源軟體、開原始碼協作、參與公開電話會議或私人會議以及提供贊助資金都是不受 EAR 約束的活動,因此不應對社區產生影響」。
  • 給年輕程式設計師的建議 - OSCHINA - 中文開源技術交流社區
    偶爾的,我會被人問道:如何成為一名優秀的程式設計師,更或者,如何成為一名程式設計師。每次人們問起,我都力圖給出不同的答案。
  • Git 2.4.3 發布 - OSCHINA - 中文開源技術交流社區
    Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。開源中國 Git 代碼託管平臺:http://git.oschina.net/Windows下的Git請看這裡:http://www.oschina.net/p/msysgitGit 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體
  • Netflix 的開源文化與技術 - OSCHINA - 中文開源技術交流社區
    在之前的新聞《Netflix企業文化與架構設計》一文中我們介紹了Netflix高擴展的企業文化與架構,而作為一家在線影片租賃提供商Netflix之所以能夠在如此大量的用戶、海量的數據、複雜的拓撲結構下取得成功,離不開其背後的開源文化與技術
  • SugarCRM:開源與商業的完美結合 - OSCHINA - 中文開源技術交流社區
    他認為,在中國市場以商業為後盾的開源模式將會成為CRM軟體發展的一個趨勢。 2009年4月22日,SugarCRM在上海舉辦了精英聯合峰會,並同時宣布中國區總經理的上任。我們可以看出這是一個信號,是關於SugarCRM商業開源策略正式在中國實施的前奏。
  • 程式設計師常用的15個學習交流網站
    所以,只有通過不斷學習和交流,不斷提升自身價值,收入和發展空間才有可能獲得突破性增長。下面是華哥整理的15個程式設計師常用的學習交流網站(排名不分先後),分享給你,希望對你有所幫助。6、開源中國社區-中文開源技術交流社區(https://www.oschina.net/)開源中國成立於2008年8月,是目前國內最大的開源技術社區,擁有超過200萬會員,形成了由開源軟體庫、代碼分享、資訊、協作翻譯、碼雲、眾包、招聘等幾大模塊內容,
  • JavaFX 2012:徹底開源 - OSCHINA - 中文開源技術交流社區
    其中將JavaFX完全開源赫列榜首——在2011年的JavaOne大會上,Oracle已做出保證將開源整個JavaFX平臺。 以下是Richard Bair列出的2012年JavaFX 10大目標: 1.
  • 開放源碼是開源軟體嗎? - OSCHINA - 中文開源技術交流社區
    所以,與此類似的,在中文裡,我們可以認為:「開放原始碼」是一個動詞+一個名詞。而「開源」則是一個特定的詞彙。作為動詞,我們說將某某軟體開源,是一種行為。作為形容詞,我們稱某某軟體是一個開源(的)軟體,不僅僅是指我們能夠獲取到他的原始碼。
  • Google限制Python使用引熱議 - OSCHINA - 中文開源技術交流社區
    今日,csdn報導的一篇文章「Google將限制Python語言的應用 開發社區熱議」;引發網友的熱烈討論
  • 被詛咒的程式設計師的七宗罪 - OSCHINA - 中文開源技術交流社區
    程式設計師生來不平等。有的偉大。有的渴望偉大。有的就是廢物。 下面是一些程式設計師經常會走入的歧途。聽起來很恐怖,但享用吧。上帝就在你身邊,警惕這些危險的信號,跟隨主救贖的指引。 1. 色慾(Lust) 凡犯色慾者:在硫磺和火焰中燻悶 作為程式設計師,這種罪惡的表現是不斷的受絢麗的新事物的誘惑。下一代程式語言,最新的框架,最新的平臺。 我們程式設計師天生好奇。
  • 向女性程式設計師致敬! - OSCHINA - 中文開源技術交流社區
    而且聽聞歷史上第一位程式設計師也是女性,肅然起敬,於是整理了一些業內神級女程式設計師,在今天這個女性獨有的日子裡,就讓男同胞膜拜程序媛們吧。 Ada Lovelace(阿達·洛芙萊斯)世界首位程式設計師這隻真正的「臭蟲」,如今還榮幸地存放在計算機檔案館裡供人瞻仰。
  • 作為一個新手程式設計師該如何成長? - OSCHINA - 中文開源技術交流社區
    要成為一個更優秀的程式設計師,需要定時經常性地練習編程並用不同的語言和技術擴寬你的經驗,但是語言是如此之多,很多時候你不知道從哪裡開始,也不知道該選擇什麼語言才最適合你要解決的問題風格。臨終護理幾乎純粹運行在微軟技術上,並且資料庫也不例外——Microsoft SQL Server(MSSQL)。雖然它不是我感覺最舒服的查詢語言,但是我依然在家裡研究、閱讀、練習構建小型的 MSSQL 項目。通過我的努力,我漸漸能夠建立一些示例報告來向資料庫管理員展示報告可以如何改進。
  • 60% 的企業代碼庫包含開源漏洞 - OSCHINA - 中文開源技術交流社區
    近日,Synopsys 公司的黑鴨軟體(Black Duck Software)發布了開源安全與風險分析(OSSRA)年度報告,
  • 最讓程式設計師懊惱的 10 件事 - OSCHINA - 中文開源技術交流社區
    然而許多程式設計師即使已經從一隻小菜鳥長大成一位計算機牛人,也還是把這個習慣給延續了下來。好吧,有些程式設計師可不樂意幹這事兒。大家經常做的是,快速瀏覽開源項目,然後開始不斷的搜尋文檔來獲取幫助。我敢打保票的說,不管在哪裡,幾乎所有的程式設計師被要求寫文檔時,都會說:「不能讓其他人去寫嗎?」5. 缺少文檔的程序好吧,我從來沒有說過我們程式設計師是說一套做一套的人。
  • 開源軟體蓄勢待發 - OSCHINA - 中文開源技術交流社區
    相關內容11家值得關注的開源技術公司優異的技術特性和相對低廉的價格的結合使得開源產品廠商比以往有了更多進入企業網絡的路徑。Likewise公司執行長 Barry Crist 稱:「在網絡泡沫時期,由於Linux比SPARC上的Solaris更為便宜,開源產品逐漸由Unix轉移到了Linux。
  • 開源社區的「忌諱」話題 - OSCHINA - 中文開源技術交流社區
    加拿大資深開源技術記者Bruce Byfield較早前發表了一篇名為「開源社區從來不想承認的九大事實」(9 Things That Are Never Admitted About Open
  • zmail 6.1版本更新 - OSCHINA - 中文開源技術交流社區
    Zmail的官方主頁:www.z-email.orgZmail的官方論壇:bbs.z-email.orgZmail的QQ群: 257959126系統要求redhat 6.x centos 6.x 64位最小安裝Zmail安裝說明:概述:(1)該安裝包為一鍵安裝包,方便快捷部署;(2)Zmail是開源郵件技術社區的最新的郵件伺服器軟體包
  • 華為莊表偉:三代開源社區的協作模式 - OSCHINA - 中文開源技術...
    隨著Web技術的不斷成熟,開源社區也開始創造一個又一個的Web開源項目,其中Web化的項目管理工具,如雨後春筍般冒了出來。在wikipedia上,issue-tracking systems列出了55個,project management software列出了152個,其中開源的也有30+,open-source software hosting列出了22個,堪稱蔚為壯觀。
  • 關於編程裡的那些 ABCDEFG - OSCHINA - 中文開源技術交流社區
    它是一款開源 JavaScript 函式庫,由 Google 和它的社區來維護,用來協助單一頁面應用程式運行的。它的目標是透過 MVC模式(Model-View-Controller)功能增強基於瀏覽器的應用,使開發和測試變得更容易。函式庫讀取包含附加自定義(標籤屬性)的 HTML,遵從這些自定義屬性中的指令,並將頁面中的輸入或輸出與由 JavaScript 變量表示的模型綁定起來。