这篇文章是从【爱开发】公众号转发的,如涉及版权问题,请联系我,我将马上删除。

这篇文章大概需要花费8分钟的时间,看后会有些许的收获。

初入职场,对一个程序员来说最重要的是什么?

技术基础是指作为一名程序员来讲的一些基本的、通用的技术,诸如数据结构、算法、数学能力、软件工程理论、操作系统基本知识、编译原理以及你所从事的技术岗位所使用的技术。这些在你的程序员生涯中它们都将跟随你一辈子,无论你从事什么技术岗位,在这个行业中,这些东西都是共通和必要的,是身为一名软件工程师的立足之本。

业务积累指的是你在部门里边具体承担的业务,相对前一条来说,这一条是不存在行业中的普遍性和通用性的,然而如果说前面一条是使你顺利拿到校招offer的前提,那么这一条则是你所在的公司每个月付给你“比任何一个行业的任何职位在初期都要高得多”的薪资的理由。换言之,如果你是一名实习生而你手上却没有任何业务积累,你该为自己能否得到offer而感到忐忑,而相反的情况如果你手上已有很多业务,每天忙得要命,你也该清楚现在的这个部门给你发offer应该是板上钉钉的事了。

第三点也许是最容易被我们程序员这样一个群体所忽略的——情商。这也是本文真正想要表达的重点,是我想在这篇文章中给你的建议。

程序员的情商有那么重要吗?

但凡是一名公司职员,就免不了职场中的人情冷暖、酸甜苦辣。因为身处公司最基层,每一个工作日你无法避免的要与各种人和事打交道。说的直白一点,有人的地方就有利益,职场中人与人之间的利益不可能没有冲突。

当你的个人利益与其他同事的个人利益、团队利益甚至公司的利益发生矛盾时,你至少应该清楚没有哪个职场人能够避免这一点。

那些充满“正能量”的新员工培训可能告诉你什么“主人翁意识”什么“不想当老板的员工不是好员工”,然而在现阶段对你来说最重要的却是融入团队,和你身边的同事还有领导搞好关系。

如果你跟部门里的任何一位同事关系闹僵,我敢保证在这个公司里你将举步维艰,每天上班的心情犹如上坟。

情商体现在哪里?

对于一名初入行业的软件工程师来说,你不只需要和代码打交道,更需要与产品沟通需求、向领导汇报工作进度以及跟其他技术岗位的同事协商和联调代码。

我从没见过或是听过哪个公司的哪个项目可以从产品策划到UI设计再到前后端编程开发调试测试上线发布后续运营维护等工作全部由一个人来完成的,如果有,这也一定不常见。

我知道校招生们多数愿意进BAT这些大公司,我当年也不例外,并且回头看来这一步也确实没有错,大公司给你的不只是更高的起薪以及毕业时在老师们面前优人一等的光环,更重要的是你将会认识更多和你一样优秀的同龄人,你的视野将会更开阔。

然而细细想想在一个大公司里,我们工作的更多时间是开会而不是写代码。扪心自问在一个公司里干了一个月以后,你究竟写了多少行代码?你又开了多少个会?

这不叫效率低下,在公司体制庞大以后这些沟通我认为全都是必要的,这些花在管理和沟通上面的成本对公司来讲绝对值得,就像一块硬盘能存下多少数据就必须产生相应的区块保存数据的物理地址和逻辑地址,再加上系统级的内存管理、应用级的框架消耗和垃圾回收,仔细想想我们每天使用的手机、平板和电脑设备的更多内存资源和CPU使用其实都是消耗在了设备自身对数据的管理上,机器尚且如此,更何况人呢。

所以不要对开会产生反感,每一次会议都是你学习的机会,更是你表现自己的机会。如果在一次会议上你提出了一处UI设计稿上面的缺失刚好是你的leader没考虑到的,他下次还会带上你一起开会;如果在服务端Rest接口确认的过程中你想到了一个leader们没考虑到的数据项,这很可能为整个开发周期节省一到两天;与产品沟通需求时,并不是一味地否定和砍减需求,也不是毫不过脑子的点头,你应该设身处地的站在把一个产品做到尽善尽美的角度去跟对方沟通,删掉对大家都没有利益的需求,必要的时候甚至增添一个对双方都有收益的需求。

初期应该如何融入团队?

初入职场的你,就如同一个刚进入球队坐在替补席上的小球员一样,最初很可能连90分钟末补时的那几分钟上场机会对你来说都是无比珍贵。

在这种情况下,要学会捡别人不要的活儿干,而不是坐在工位上打开qq和同学抱怨自己在部门里不受重视。

举个例子:如果说部门里缺前端,你作为服务端也该自己学会写后台管理页面,这些东西leader看在眼里,他会明白你的努力。

遇到技术上的问题该怎么解决?

对于这个问题的看法有很多版本,我个人偏向于尽量靠自己解决问题。

作为一名初入岗位的工程师,不是看不起你,很多时候你对自己遇到的问题究竟该不该问别人,该问的话该问谁你都是不知道的。在这样的情况下,你很可能把一个google五分钟就能解决的程序语法报错拿过去问了你的同事,问问题存在沟通成本和理解成本,你的描述不清以及对方缺乏上下文了解这些都可能增加以上两个成本,这样一来不仅耽误双方的时间,长此以往还会让对方觉得你记得技术基本功不扎实,独立处理问题能力差。

我认为对于程序员来说,总有一天你要独立面对这些编译环境、运行环境的偏门bug,因为你不可能一辈子只写一门语言或是只从事一种开发岗位,你现在可以问你的导师问你的leader,那么你自己当上leader之后又该问谁呢?总不能告诉自己的老板,这问题太难了,我解决不了。

我记不清好像是之前百度的首席工程师说过的一句话:衡量一个程序员价值的标准并不是他掌握了多少知识,而是他掌握的知识与学会这些所花的时间之比。

对于初入开发岗位的你来说,每一次踩到一个坑然后独立填坑的经历都将会加速你对更多技术领域内的知识和问题的学习速度,也将会提高你作为一个工程师的价值。

如何与产品沟通?

在技术圈里这是老生常谈的话题,我认为与产品沟通的过程中是最能体现出一个程序员情商的时候。无论对方提出的需求是怎样的,你考虑问题的逻辑应该是:当前提的这一条需求做完以后对产品有什么收益?对技术这边又有什么收益?更重要的是leader们是否会在乎这一点?

然而这一切都应该发生在你的内心中,权衡利弊之后如果有什么没考虑到的你可以提出来,如果并不是十分确认自己的想法,你可以等会后私下里和你的leader提出自己的看法,这既是对leader的尊重也是节省开会时间。

幸运的是,在互联网这个行业里,需求沟通的过程中,技术人员的话语权通常还是较大的,然而绝不要滥用你的话语权。

我可以扪心自问的说,在我正式入职以后沟通过的每一位产品,没有和任何一位发生过争吵,相反的是产品们都愿意与我对需求。

这并不是因为我对任何奇葩的需求都有求必应,而是因为我把“与PM对需求”这件事放在“人情”这样感性的层面来考虑,而不像很多程序员那样只考虑代码逻辑的理性思维方式。

人是复杂的动物,一个PM提出了一个看似无理的需求,你却不应该不问青红皂白直接拒之门外,设身处地将心比心的想一想,公司里这样复杂的环境下,他/她是否也有自己的无奈和苦衷?如果有,这个问题是否存在其他折中的解决方案?

情商不是叫你如何精明的算计对方,那叫“别有用心的智商”,情商是包容与理解。有了人情作为基础,我觉得没有哪个PM会和你在一两天的deadline问题上面扯皮。

即使利益之间的冲突真的无法解决,也没有任何折中方案,你至少可以把问题记录下来,拿到leader们那里交给他们去做决定,而没必要当面撕破脸伤及双方的感情,毕竟产品是公司的,人际关系是自己的。

如何看待加班?

加班就像借钱,原则上必然是救急不救穷。然而并不是说对于一个“穷”的部门程序员就一定要选择离开,这既不是负责任的表现,又错过了一个成为部门核心骨干力量的机会。很多公司里的leader都是在危难关头扛下了部门的人手不足的压力,leader的职位也就顺理成章。

ruby on rails的作者曾说过,熬夜加班相当于借高利贷,偶尔一次可能是难免的,但如果你的工作长期需要你熬夜加班,你可能确实该考虑换一份工作。

最后祝愿各位未来的程序员在校招的潮流中能够成为offer收割机,并且得到自己真正心仪公司的offer!

留言