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

前言html

人被壓迫了,爲何不鬥爭?——魯迅程序員

做爲一個C#開發者,我經歷了,也見證了不少同行飽受C++開發的歧視和欺辱。windows

並且,這種行爲,如今依然持續的發生在C#開發者的身上,就目前爲止,絕大部分C#開發還都沒法擺脫這樣的命運。設計模式

能力不足的C++開發會欺辱能力不足C#開發安全

C++語言的基礎是【語法+windows系統調用邏輯】,其餘語言的基礎是【語法+基礎設計模式】。架構

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

但在聊天和會議等語言溝通中,倒是不同的。性能

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

實際上類型與其佔有的內存及使用方式都是微軟開放給你們的,並不能成爲一我的傲慢的依據,但C++開發不懂這些,固然C#開發也不懂,因此不少C#開發,在即興的聊天中,並不能及時的有效切中要害,有效的攻擊對方。而據我我的經驗,就算切中要害,也會輕鬆被對方詭辯回去。因此,結果就變成了,在外行人和技術水平不夠高的人眼中,一樣學習一兩年的開發,C++開發遠超其餘語言開發的水平了。spa

其實,大部分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++開發直接罵街。

也許是林子大了,真的什麼鳥都有,並且三五成羣。

經驗分享:【當你聽到C++開發須要更多思考,C++工做強度更大,C++開發是底層工做,C#作不了C++能作的事的時候】等等證實C++更高級的言論時,切記不要生氣,不要反駁,由於對方必定是個菜鳥,他即不瞭解C++也不瞭解C#,而你能聽到這樣的言論,說明你的水平已經遠遠在對方之上了,所以,你的反駁,實際上是在教導對方學習,這很吃虧。

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

注:此文章爲原創,歡迎轉載,請在文章頁面明顯位置給出此文連接!
若您以爲這篇文章還不錯,請點擊下方的推薦】,很是感謝!

相關文章
相關標籤/搜索