程式設計師的兩種職業特質

2021-10-02 09:04:28 字數 1845 閱讀 5860

這使得創造軟體的程式設計師失去了對簡單的敬畏!

我沒有針對某個程式設計師或者某個公司的程式設計師,我指的是包括我自己在內的所有程式設計師,並且,這並沒有攜帶貶義的意思。這只是一種職業特質。

程式設計師認為偉大的東西一定是複雜的,簡單的東西只能是玩具,或者工具。

最近,我接觸了ebpf,讓我驚嘆於它的小巧和精簡,我稱它為瑞士軍刀。但是,當我琢磨著ebpf到底能做些什麼的時候,我努力說服自己心存敬畏,但直到我接觸了open-nfp前,我做不到。

我感覺我大約做到了時,我試著做點小東西,它們在:

這些小東西也只能是小玩具,它們終於還是不能上線的。無論怎樣,我忍不住要展示給別人看,我就去展示了。

很多人只是把ebpf看成一種工具,就像trace,probe之類的輔助性監控除錯工具,把ebpf看作是核心的一種擴充而並非用ebpf實現一些功能,這就是為什麼只要你關於ebpf的topic,十有**都是bcc裡的那些和trace,probe相關的例子,這也許是linux原教旨主義者的情懷使然吧,「核心的事情核心管,其它的事情都在使用者態」

說實話,目前ebpf作為核心功能的擴充,其作用真的還十分有限,正是基於此,當我跟別人介紹用ebpf實現的一些小玩意兒的時候,大多數時候獲得的只是嘲諷:「我覺得這不靠譜,不如寫個核心模組呢…」

不過,我一直試圖去努力改變這種局面。我始終相信簡單的東西並不總是無用,並非總是搬不上檯面。

世界是確定的嗎?不知道。

但軟體的行為是確定的。

不,軟體底層是電子,那是量子力學的範疇,而量子世界是不確定的…

我就知道有人會用類似上面這句回懟,不過我說的不是這回事。我指的是抽象層面的軟體,也就是「程式設計師用**寫成的程式,其邏輯是確定的。」

debug有故障的程式是乙個繁瑣的過程,但是不論多麼複雜,最終的結論一定是確定的,乙個linux核心的屍體vmcore就是它死時的映像,無論多麼詭異的bug,分析這個vmcore都可以得到確定性的結論(可能又有人用踩記憶體來反駁了)。

由於軟體是確定的,長期跟確定打交道後,就會形成世界是確定的之定勢。

我老婆總是覺得跟我聊個事非常費勁,我自省過,但沒有成功。我老婆是日語專業文科生,持有教師資格證,又做過hr,又做過小小學校家委會的頭子,與人聊天是肯定沒有問題的,那問題肯定出在我身上。

自省是有難度的,那就用反射的方法。

我試著找典型的程式設計師聊天,聊一些跟技術無關的話題。我說的典型的程式設計師指的是他們把時間都交給程式設計的。

我發現,在他們的眼裡,世界是確定的,非黑即白,他們容不得世界的灰色地帶存在。

如果你跟他們聊天氣預報時,他們似乎不允許隨機性的存在,他們希望有什麼機制可以跟蹤每乙個水分子的行蹤,當聊起最近的城市封鎖時,他們認為僅僅鐵路,航空,高速公路,國道的封鎖是不夠的,即便是連鄉村的小路也圍起來了,還會有蝙蝠俠飛出來的。

其實**有這麼複雜,這一點我倒是不那麼較真兒,我相信兩點,一是公司沒必要這麼麻煩,監控員工不是公司的要務,其次,公司沒那技術。一般非程式設計師都沒有這樣的擔心,此外,退一步說,即便是監控了,又如何呢?

我想,這就是程式設計師心中的確定性的技術世界吧。萬事都採用技術手段解決並不是最高效的,有時社會工程學更有效率,但是程式設計師根本不care和技術無關的社會工程學,不是嗎?

程式設計師的世界是確定的,世界是由技術組成的,於是任何問題都必須要有個閉環的答案。

然而,世界沒有想象的那麼簡單,但卻也沒有想象的那般複雜,幹嘛非要確定性的閉環呢?

人生會遇到很多很多不確定的問題,解決它們就是了,見招拆招,就這麼簡單的事,幹嘛每件事非要較真兒去尋找確定性的技術方案呢。

世界不是**寫成的,至少在我們的哲學認知裡它不是,所以除錯它是無效的,享受它才行。

浙江溫州皮鞋溼,下雨進水不會胖。

職業程式設計師守則

新公司第一課 職業程式設計師守則 1.不許說,我的電腦上沒問題 軟體是寫給使用者的,不是寫給自己的。2.善於發現,注重細節。君子善假於物 最快速度發現需求 滿足需求,才能體現自己的價值,對使用者產生價值的是你的結果 質量 效率 而不是過程,使用者帶給你的快樂,會大於自我陶醉的快樂。軟體如人件,產品即...

程式設計師職業建議

國企還是外企?一直程式設計有沒有前途?下面是某前天給我發來的郵件 我是乙個剛剛畢業的大學生,我覺得自己對於程式設計師這個行業感到很迷惘,所以發郵件打擾您一下,麻煩了。我現在很迷惘的是,如果我一直在程式設計師這個行業上走下去,以後的出路應該是什麼呢?還是一直到高階工程師,還是專案管理這種程度嗎?我現在...

黑馬程式設計師 單例的兩種實現方式

單例模式只是像外界提供乙個物件,它在自己內部建立乙個自己的物件並且提供乙個方法讓外界來得到,從而保證程式中只有乙個自己的物件。第一種 餓漢式 public class single 向外界提供乙個得到該物件的方法 public static single getinstance private st...