33

我被C++开发欺辱的岁月 - kiba518

 4 years ago
source link: https://www.cnblogs.com/kiba/p/10950526.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我被C++开发欺辱的岁月

前言

人被压迫了,为什么不斗争?——鲁迅

作为一个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++开发直接骂街。

也许是林子大了,真的什么鸟都有,而且成群结队。

经验分享:【当你听到C++开发需要更多思考,C++工作强度更大,C++开发是底层工作,C#做不了C++能做的事的时候】等等证明C++更高级的言论时,切记不要生气,不要反驳,因为对方一定是个菜鸟,他即不了解C++也不了解C#,而你能听到这样的言论,说明你的水平已经远远在对方之上了,因此,你的反驳,其实是在教导对方学习,这很吃亏。

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

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

 

243596-20190904083750507-629449790.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK