送给即将成为程序员的你们
亲爱的你们即将从极悦毕业进入到工作单位中,我希望你们在新的工作岗位中有新的收获,动宝儿送给你们几句祝福和工作中的注意事项.
初入职场,对一个程序员来说更重要的是什么?
初入职场的你们要有初级程序员应有的职业规划比如以下几点.
• 1.技术基础
• 2.业务积累
• 3.职场情商
技术基础是指作为一名程序员来讲的一些基本的、通用的技术,诸如数据结构、算法、数学能力、软件工程理论、操作系统基本知识、编译原理以及你所从事的技术岗位所使用的技术.这些是学校里教给你的东西,无论学得怎么样,在你的程序员生涯中它们都将跟随你一辈子,因为无论你从事什么技术岗位,在这个行业中,这些东西都是共通和必要的,是身为一名软件工程师的立足之本.
业务积累指的是你在部门里边具体承担的业务,相对前一条来说,这一条是不存在行业中的普遍性和通用性的,然而如果说前面一条是使你顺利拿到校招offer的前提,那么这一条则是你所在的公司每个月付给你”比任何一个行业的任何职位在初期都要高得多”的薪资的理由.换言之,如果你是一名实习生而你手上却没有任何业务积累,你该为自己能否得到offer而感到忐忑,而相反的情况如果你手上已有很多业务,每天忙得要命,你也该清楚现在的这个部门给你发offer应该是板上钉钉的事了.
第三点也许是更容易被我们程序员这样一个群体所忽略的——情商.这也是本文真正想要表达的要点,是我想在这篇文章中给你的建议.
程序员的情商有那么重要吗?
引用大家所熟知的OOP的思想,无论你是一名服务端、Android还是机器学习算法、数据挖掘工程师,你的职位title都是从软件工程师这个父类继承下来的,而软件工程师这个职位继承于工程师,更继承于”公司职员”.
但凡是一名公司职员,就免不了职场中的人情冷暖、酸甜苦辣.因为身处公司基层,每一个工作日你无法避免的要与各种人和事打交道.说的直白一点,有人的地方就有利益,职场中人与人之间的利益不可能没有冲突.
当你的个人利益与其他同事的个人利益、团队利益甚至公司的利益发生矛盾时,你至少应该清楚没有哪个职场人能够避免这一点.
在诸多利益交织下,到一定程度以后你会明白始终维持着这一切的不是别的,是人情!
那些充满”正能量”的新员工培训可能告诉你什么”主人翁意识”什么”不想当老板的员工不是好员工”,然而在现阶段对你来说更重要的却是融入团队,和你身边的同事还有领导搞好关系.
如果你跟部门里的任何一位同事关系闹僵,我敢保证在这个公司里你将举步维艰,每天上班的心情犹如上坟.
情商体现在哪里?
对于一名初入行业的软件工程师来说,你不只需要和代码打交道,更需要与产品沟通需求、向领导汇报工作进度以及跟其他技术岗位的同事协商和联调代码.
我从没见过或是听过哪个公司的哪个项目可以从产品策划到UI设计再到前后端编程开发调试测试上线发布后续运营维护等工作全部由一个人来完成的,如果有,这也一定不常见.
我知道校招生们多数愿意进BAT这些大公司,并且回头看来这一步也确实没有错,大公司给你的不只是更高的起薪以及毕业时在老师们面前优人一等的光环,更重要的是你将会认识更多和你一样出色的同龄人,你的视野将会更开阔.
然而细细想想在一个大公司里,我们工作的更多时间是开会而不是写代码.扪心自问在一个公司里干了一个月以后,你究竟写了多少行代码?你又开了多少个会?
这不叫效率低下,在公司体制庞大以后这些沟通我认为全都是必要的,这些花在管理和沟通上面的成本对公司来讲很值得,就像一块硬盘能存下多少数据就必须产生相应的区块保存数据的物理地址和逻辑地址,再加上系统级的内存管理、应用级的框架消耗和垃圾回收,仔细想想我们每天使用的手机、平板和电脑设备的更多内存资源和CPU使用其实都是消耗在了设备自身对数据的管理上,机器尚且如此,更何况人呢.
所以不要对开会产生反感,每一次会议都是你学习的机会,更是你表现自己的机会.如果在一次会议上你提出了一处UI设计稿上面的缺失刚好是你的leader没考虑到的,他下次还会带上你一起开会;如果在服务端Rest接口确认的过程中你想到了一个leader们没考虑到的数据项,这很可能为整个开发周期节省一到两天;与产品沟通需求时,并不是一味地否定和砍减需求,也不是毫不过脑子的点头,你应该设身处地的站在把一个产品做到尽善尽美的角度去跟对方沟通,删掉对大家都没有利益的需求,必要的时候甚至增添一个对双方都有收益的需求.
这一切都能够让你的工作状态更为积极,而积极的工作状态对你对公司对所有人都是有利的.
初期应该如何融入团队?
举个例子:如果说部门里缺前端,你作为服务端也该自己学会写后台管理页面,这些东西leader看在眼里,他会明白你的努力.
另外千万不要放过任何和同事们沟通的机会,哪怕是午餐时的闲谈.这恰恰是发现一些”可捡的活儿”的一个途径.
遇到技术上的问题该怎么解决?
第一个原因是作为一名初入岗位的工程师,不是看不起你,很多时候你对自己遇到的问题究竟该不该问别人,该问的话该问谁你都是不知道的.在这样的情况下,你很可能把一个google五分钟就能解决的程序语法报错拿过去问了你的同事,问问题存在沟通成本和理解成本,你的描述不清以及对方缺乏上下文了解这些都可能增加以上两个成本,这样一来不仅耽误双方的时间,长此以往还会让对方觉得你记得技术基本功不扎实,独立处理问题能力差.
第二个原因是,即使这个问题真的是一个较为冷门的编程语言运行环境层面的bug,你在不经过任何思考的前提下把它抛给了你的导师或是你的leader,他很可能是遇到过这个问题的,于是直接把问题的答案告诉了你,这样你就错过了一次在你所使用的语言环境下亲自踩坑然后填坑的机会.
我认为对于程序员来说,总有一天你要独立面对这些编译环境、运行环境的偏门bug,因为你不可能一辈子只写一门语言或是只从事一种开发岗位,你现在可以问你的导师问你的leader,那么你自己当上leader之后又该问谁呢?总不能告诉自己的老板,这问题太难了,我解决不了.
对于初入开发岗位的你来说,每一次踩到一个坑然后独立填坑的经历都将会加速你对更多技术领域内的知识和问题的学习速度,也将会提高你作为一个工程师的价值.
如何与产品沟通?
在技术圈里这是老生常谈的话题,我认为与产品沟通的过程中是更能体现出一个程序员情商的时候.无论对方提出的需求是怎样的,你考虑问题的逻辑应该是:当前提的这一条需求做完以后对产品有什么收益?对技术这边又有什么收益?更重要的是leader们是否会在乎这一点?
然而这一切都应该发生在你的内心中,权衡利弊之后如果有什么没考虑到的你可以提出来,如果并不是十分确认自己的想法,你可以等会后私下里和你的leader提出自己的看法,这既是对leader的尊重也是节省开会时间.
人是复杂的动物,一个PM提出了一个看似无理的需求,你却不应该不问青红皂白直接拒之门外,设身处地将心比心的想一想,公司里这样复杂的环境下,他/她是否也有自己的无奈和苦衷?如果有,这个问题是否存在其他折中的解决方案?
武断砍需求的程序员往往错过了这样的商讨”折中方案”的机会,同时也错过了一个让PM认可你的机会!这一点其实很重要.
换个角度考虑,我倒觉得在其他职位的人眼中,你的技术多么多么的NB他们是无法直观洞悉的,每一个无理取闹的需求也都是一个你证明自己的机会.
情商不是叫你如何精明的算计对方,那叫”别有用心的智商”,情商是包容与理解.有了人情作为基础,我觉得没有哪个PM会和你在一两天的deadline问题上面扯皮.
即使利益之间的冲突真的无法解决,也没有任何折中方案,你至少可以把问题记录下来,拿到leader们那里交给他们去做决定,而没必要当面撕破脸伤及双方的感情,毕竟产品是公司的,人际关系是自己的.
如何看待加班?
加班就像借钱,原则上必然是救急不救穷.然而并不是说对于一个”穷”的部门程序员就一定要选择离开,这既不是负责任的表现,又错过了一个成为部门核心骨干力量的机会.很多公司里的leader都是在危难关头扛下了部门的人手不足的压力,leader的职位也就顺理成章.除非部门真的气数已尽.
最后祝愿各位同学在未来的程序员招聘中的潮流中能够成为offer收割机,并且得到自己真正心仪公司的offer!