我被C++開發欺辱的歲月

kiba518發表於2019-06-01

前言

人被壓迫了,為什麼不鬥爭?——魯迅

作為一個C#開發者,我經歷了,也見證了很多同行飽受C++開發的歧視和欺辱。

而且,這種行為,現在依然持續的發生在C#開發者的身上,就目前為止,絕大部分C#開發還都無法擺脫這樣的命運。

能力不足的C++開發會歧視能力不足C#開發

C++語言的基礎是【語法+windows系統呼叫邏輯】,其他語言的基礎是【語法+基礎設計模式】。

事實上,就基礎而言,需要學習的時間和學會後的技術等級,都是差不多的,兩個都只有一年工作經驗的新人,按理說,不存在誰比誰更厲害多少。

但在聊天和會議等語言溝通中,卻是不一樣的。

C++開發會佔據極大的理論優勢,因為windows系統呼叫邏輯和C++的語法中包含了一部分記憶體的管理,當然那不是效能,但C++開發會誤認為那就是效能。而程式設計師這東西聊著聊著,就會聊到一些高階的東西,比如效能,所以,C++開發在這樣的交流中,更能說的上話。因此,這種交流也容易讓外行人產生,C++開發更厲害一些的錯覺;而當你準備反擊,想改變在別人心中的水平低的印象時,當你準備談一些基礎設計時,則會被輕鬆反殺。這也很好理解,因為設計這東西真不是你能在三言兩語中給說出來的,你說出來的只能是一點點片段,因此你要麼被對方抓住把柄反殺,要麼被對方以沒時間聽你廢話反殺。

實際上型別與其佔有的記憶體及使用方式都是微軟開放給大家的,並不能成為一個人傲慢的依據,但C++開發不懂這些,當然C#開發也不懂,所以很多C#開發,在即興的聊天中,並不能及時的有效切中要害,有效的攻擊對方。而據我個人經驗,就算切中要害,也會輕鬆被對方詭辯回去。所以,結果就變成了,在外行人和技術水平不夠高的人眼中,同樣學習一兩年的開發,C++開發遠超其他語言開發的水平了。

大部分C++開發是不懂效能的,這很好理解,因為他們沒到那個水平,但似乎C++開發都有一種莫名的自信,以為學兩年C++就有架構師的水平了。所以C#開發要保持平常心,心裡要有數,不要真的認為他們如同他們自身所吹噓的那樣厲害,不要因為辯論失敗而喪失信心,進而對自身的技術水平產生懷疑,要相信自己。

總結,能力不足的C++開發會歧視能力不足C#開發,並會引發周圍非技術人員的歧視。這對C#開發是一種極大的,無形的負擔。但請不要因此喪失信心與追求。

多年前,我的一個小故事

人被壓迫了,自然是要鬥爭的,但鬥爭也是要付出代價的。

很多年前,我經歷過這樣一件事。

在一次團隊會議中,我提出了產品框架設計要加入AOP設計元素,結果當場被【所謂的】C++大神開發,以及其不客氣的語氣直懟:“你知道AOP是什麼嗎?”

我忍耐住怒火,以最平靜的心態,詳細的為他講解了AOP的基礎概念,結果又收到另一個直懟“你去查查百度去”。

彼時,年輕的我,還不擅長這種應對,憤怒的反問道“那你覺得AOP是什麼”。

對方顯然是鬥爭中的高手,經驗豐富,留下一句“你去百度查查”,反身離開了會場。

會議草草結束,而我,恐怕是在部分與會人員心中留下了“裝腔作勢,觸怒了大神”這樣的印象。

那時,年輕的我,確確實實的感覺到了,自己被壓迫了。但一次的壓迫並沒什麼,這種事,成年人都可以忍耐,當時以為,忍耐過去了,就了事了。

但隨後的事態發展,卻並不是我想象的那樣,忍耐並不可以收穫安全,因為對方並是只想打擊你一次,而是想一次次的打擊你。(後來反思,對方其實也並不是針對我,因為對方是個假大神,所以他一定要把其他技術強點打壓下去,而我只是他打擊的其中一個物件而已)

忍無可忍,無需再忍,所以,當時的我,毅然決然的決定了,要鬥爭。

雖然鬥爭是一定要鬥爭的,但要如何鬥爭呢?

畢竟彼此之間,只是同事;又沒有仇恨,矛盾也只是技術層面的交流。

既然如此,那鬥爭就要在技術層面展開。

首先,要證明自己的技術能力,因為,自身能力如果沒有獲得證明,那所有的鬥爭就都是扯淡了,因為沒人相信弱者。

接下來,去了解對手的技術水平;如果發現對手是個裝X的水貨,那麼,就要徹底撕開對手的假面具,讓所有人都知道他是個假大神;如果對手是個真大神,那只有先敬而遠之。

鬥爭

要了解一個人的技術水平高低,真的不難,稍微聊幾句,調查一下,就可以知道了;所以,很短的時間內,我就發現了對手是個假冒的大神。不過,說實話,對手【裝】高手的能力和手段真的很強。

自那以後,每一次會議被【所謂的】C++大神開發打斷話語,都保持平和心態,繞開他,堅持把技術觀點講述完整,這樣可以讓與會人員瞭解到自己正確的觀點。因為與會人員並不全瞭解技術,一旦你被打斷講述,與會人員認為你的描述錯誤,所以,有人提出疑問,他們完全不會想到有人會因為其他因素而打斷你的發言。在非技術人員面前,堅決迴避技術討論,一旦被迫發生,則留下一句含糊不清的話,儘早脫身。在技術人員面前,堅決討論技術,一定要討論出對錯,如果對方執意迴避,則儘量追回討論,實在追不回,也要把正確的結果擺在參與討論的技術人員面前。

鬥爭的過程是艱苦的,是不開心的。因為,一開始我並不適應這種對殺,技術層面的鬥爭說起來容易,當你真的在做的時候,總是會過多的把個人感情投入到裡面,屆時,對手就不在是對手,而是敵人了。那種感覺真的很不好。

雖然,最終我適應了那種對殺,但真的希望未來的職業生涯不在出現這樣的局面,因為那真的不是理想的工作環境。

假大神的反擊

這是一個很有趣的故事,當時我們有個專案線上上執行時有個bug,會不定期的軟體崩潰,大約持續了兩三年,也沒人解決。

剛入職不久的我,奉命前往現場攻關調查這個問題。

在茫茫多的程式碼中,一點點追查,最終找到了問題所在,調查結果,是因為這樣的一句,看上去很可笑的程式碼。

string.Format(變數);

我想,稍微有點基礎的人,應該都瞭解string.Format的用法吧。如果,如上面這樣寫程式碼,會出現什麼樣的結果?

當有人在這個變數中輸入字串【{ 】或 【}】的時候,系統會因為字串格式不正確丟擲異常。而我們那個專案不定期崩潰的原因正是在此,因為當有使用者打字輸入了【{ 】或 【}】時,才會引發系統崩潰,不過客戶由於並不是天天都輸入【{ 】或 【}】,所以也就造成了不定期的系統崩潰。。。

找到問題的所在,自然是回公司覆命,當時,我還並不知道這段程式碼,是專案早期的最原始的程式碼,並且是出自那位假大神的手筆。

回公司後,自然是要向我的直屬領導彙報,描述問題出在哪裡,要如何修改,領導聽了彙報後,很滿意,並讓我發郵件,向全體開發人員,說明修改方案,和以後要注意,不要這樣寫程式碼。

因為這樣的程式碼,並不是只有一處,而且很多人都這樣寫,我猜想,大約是那位假大神寫了初稿,然後再大肆宣揚,要別人也和他一樣這麼寫,因為如果不是這樣的原因,後續假大神的反應,似乎是不太合邏輯的。

我想,我的領導大約也是知道這程式碼是怎麼回事,因為他是和假大神同期進入專案的,估計早期還被迫寫過這樣的程式碼。

假大神當然也收到了這郵件,於是乎,他惱羞成怒,開啟了一輪大秀,他居然集體回覆了一封郵件,【那你說該怎麼寫】。

每當想起此事,我都不禁發笑,我從來沒想過他會如此自爆,哈哈。這麼基礎的語法,其實只要百度一下就會了解了,何必如此白痴的集體回覆郵件秀智商呢?

之後,我並沒有回覆他,一是保留自己的人品,二是我真不知道該如何回覆,難道要我回復他【你是白痴嗎】,哈哈。

不過,現在,我仔細想了想,我沒回復他,實在是錯誤的。看過琅琊榜的同學應該都知道,如果問題是因為太子和譽王的黨爭,則皇帝並不會太事件本身的對錯。

所以,雖然專案組的開發人員都通過郵件知道了他的水平,但那些不懂技術的高層領導,恐怕只會認為這是一次普通的技術鬥爭,並不影響假大神的技術水平定位。

也就是說,假大神,並不在乎自己在同事心中的地位,他在乎的是,他在高層領導心中的地位。

而事實上,直到我離開那家公司時,假大神在高層領導心中的地位,也沒有動搖,即便已經沒有開發人員相信他的技術意見了。

說到底,還是我的鬥爭經驗距離對方差距太大,視野和對方不在一個等級上,相信,多年以後的現在,那家公司的技術人員已經換了一批又一批,而假大神,依然屹立不搖。

反思

我曾經認為,在專案中做正確的技術選擇和正確的技術判斷,對專案是正向發展,在領導心中,這應該是我的加分項。

但事與願違,人是有情緒的,尤其是高層領導在不能和你長期接觸的情況下,是很容易被刻板印象和情緒所主導。

而且在長期的鬥爭中,我雖然撕碎了【假大神】的偽裝,但在其他同事和高層心中,留下了喜歡爭鬥,不善於忍受的印象,這是非常不利於我的長期發展的。

撕碎【假大神】的偽裝,是因為被壓迫等等因素而引發的鬥爭之心;而證明自身技術能力,是職業需要;其實,對我自身而言,兩者之間是沒有直接關聯的;但在他人眼中,卻可能被聯絡到一起,會認為我是藉由打擊他人來抬高自己(因為他們根本不會去想,也沒有時間去想,你打擊的是個真大神還是個假大神),而這樣的結果,顯然是彼時的我始料未及的。

因此,真的不要輕易去選擇鬥爭,因為鬥爭的代價,太昂貴了,即便打到敵人,自身也會是傷痕累累,而且敵人未必是你想象中,那麼輕易可以被打倒的,說不定倒下是你自己,即便你有更高的技術優勢。

這也是很多年長的開發,特別能忍的原因,我想,如果是今天的我,面對當年的情況,我也會選擇忍耐,一直忍耐。

而這個故事的結論則是,能力不足的C++開發也會歧視能力很高C#開發。也就是說,C++開發是無差別的歧視C#開發。

部分C++開發更像工人

經過多年的經驗和經歷,我總結出來,部分C++開發更像工人,而不像程式設計師,也許是因為C++過早出現的原因。

很多C++開發,給別人提供DLL的時候,都不給文件,甚至連口頭說明都沒有。

因為,他們不習慣配合,不習慣共享,不習慣擁抱變化,當然,這也和工人很封閉的流水線思想很一致。

這部分C++開發在帶新人的時候,也像工人一樣,有【帶會徒弟餓死師傅】的想法,所以,他們都吝嗇的傳教技術。

並且這種C++工人的特質,是會傳遞的,所以,即便是思想更開放,視野更優秀的90後的C++開發,也會因為遇到這樣的師傅,而變的更像工人。

我們可以看到很多工人是任勞任怨的,這是優點,但優點伴隨著缺點,那就是工人是習慣頤指氣使的,他們不僅習慣別人的頤指氣使,也習慣頤指氣使別人。

而我的親身經歷是,我的一些同學,因為在工廠上班,原本青春飄揚的知識分子,在十幾年後,變的和農民工一模一樣,那說話的語氣語調,對事物的認知態度,根本和當年判若兩人。

對於C++工人,我還沒見過,有變成跟農民工一樣的氣息的。但確實,氣息是真的很接近,區別可能就是穿的更好一點,罵街這種事,對他們而言就是常規的語言輸出。

這一點我在上一篇文章《一個C#開發者重溫C++的心路歷程》的評論裡,再一次深刻的感受到了。

雖然有很多C++開發溫文爾雅的回覆,證明了C++開發的高素質,但也確實有更多的C++開發直接罵街。

也許是林子大了,真的什麼鳥都有,而且成群結隊。

----------------------------------------------------------------------------------------------------

注:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文連結!
若您覺得這篇文章還不錯,請點選下方的推薦】,非常感謝!

 

相關文章