如何在 3 年内摆脱“普通程序员”标签 程序人生程序员升职加薪年薪职场
作者 | 王俊生
出品 | GitChat 精品课
▌技术层面
-
接到需求立即开发不合理?
很多开发人员日常工作中接到需求直接动手开发,在开发过程中一边开发一边设计,特别是刚入职的程序员,大多数更是只注重功能的实现,接到需求后往往只是在脑中勾画一个大概的实现方案,随即直接动手开发;这种现象是多方面因素导致的,首先可能由于时间紧迫,不能整体把控,只能做一步看一步,在加上可能需求很小,稍作改动,功能就可以实现,完全没必要花时间去做设计。
但是这样做却会导致很严重的后果,最直接的就是很多人为了实现功能,代码东拼西凑,这个项目的代码粘一粘,那个项目的代码拷一拷,网上在 copy 一下,大体功能就实现了,自己也慢慢的成为了传说中的“CV 程序员”。更重要的是这样做并不一定会快速完成开发任务,因为很多代码是粘过来的,所以在调试和测试过程中往往会遇到很多问题,经常有这样的现象,测试部门反馈研发提交的代码有问题,研发人员说在开发环境上运行没问题啊!
然后花了很多时间去解决,可能最后发现是自己 copy 的代码有地方忘改了!这种低级错误会随着经验的丰富慢慢减少,但是 CV 程序员在这样的恶性循环中技术往往提升较慢。这应该引起大家的警觉。
很多需求都是对项目局部尽心小的改动,或对现有功能进行升级完善,我们在接到需求的时候完全可以先从整体上了解一下产品,包括业务流程,产品架构,使用的技术等。
对项目有个整体的了解,然后在思考自己要实现的需求,进行概要设计,可能在熟悉项目过程中发现已经有类似的功能,很多工具类可以直接拿来使用,然后对有疑惑的细节在上网查查资料进行细节设计,整体都设计好了,然后在进行开发,这样做往往能达到事半功倍的效果,在测试和上线过程出问题也能快速定位解决,附加的好处是不但自己在这一过程中能力会有很大提升,而且也会给他人留下做事有条理的好印象。
-
如何评估开发时间?
我们必须要认识一点,开发时间不是越短越好,评估开发时间的时候一定要灵活,当然每个公司的情况不一样,这要具体问题具体分析。
这里我只是讲一个思路,开发速度是一个由慢到快的过程,所以不能一昧求快,很多人在评估开发时间的时候,总是显得过于急躁,往往只是把自己心里期望的“开发时间”报上去,甚至一些人由于不自信,特别是职场新人,很多人怕评估的时间长了会导致领导同事对自己的能力不认可,所以尽量缩短开发时间。
其实,我们首先要知道编代码时间只是我们评估时间的一部分,我的一个同事说过,编代码大概只是花费整体开发时间的三分之一左右,除此之外我们还要处理调试问题,环境问题,协同问题等开发过程中遇到的各种问题,特别是需要多个部门合作的需求。更是不能忽略沟通成本。而且在开发过程中,还会有许多其他的事情打扰,比如应急问题的处理、之前做的功能的迭代,需求的变动等等。
所以我们评估开发时间的时候把自己的编代码时间大概乘以 2 或 3 基本是合理的,这样我们在开发过程中才会避免忙中出错,游刃有余的完成开发任务,合理评估开发时间的另一个好处是能有效避免由于遇到各种各样的问题导致不能按时交付,反而大多数时候都能提前完成,这样会得到领导的格外信任。
要知道领导是不会因为员工逞能而没按时完成而去迁就员工,但是对于总是能提前完成的员工领导会更加信任…所以我们一定要学会合理的评估开发时间。
-
功能实现是目标吗?
一般来说开发人员完成功能开发提交测试,上线成功就算完成开发任务,然后继续做下一个需求…… 这样看来功能实现当然是目标。其实单单实现功能是远远不够的,首先也是最重要的是要注意自己的代码质量,这是衡量一个程序员好坏的基本标准。
请各位小伙伴们想一下我们是否有过在看之前的人写的代码的时候心里暗自骂娘?相信很多人都会在改程序的时候吐槽前人:代码没有注释,关键日志不打,重复代码一堆,别提效率了,连安全都做不到等等!
所以我们最好不要成为自己讨厌的那种人,多注意自己的代码质量;其次如果在开发过程中用到了自己原来没接触过的技术时,要花点时间去学习研究一下,而不是直接把代码粘过来实现功能就没有下文了,即使当时实在赶时间,也要把这事记下来,以后找时间去学习,最好做到接触即掌握,用过即专家。这才是程序员的自我修养!
此外业务逻辑也应该给自己一些时间来消化一下,而不是只做好小功能的改动或实现就好,这样对于整个项目的理解才更完整和透彻,对于以后的工作也会有很大帮助,只有这样才会慢慢的有积累。迅速的成长起来。还有一点需要注意,我们可能会遇到这样的问题,在开发过程中,用到之前的人写的代码质量不高,没有注释读起来很费劲,日志也很少,最好把这样的代码也优化一下。
这里有个小故事和大家分享一下,同事小张每次改公司的一个门户网站的时候的都吐槽一番,谁写的代码写的如此之烂,连最起码的日志都不打等等......后来一个实习生改动其中一个功能、上线的时候那个实习生说他调用的接口没结果,也没有日志,看版本提交记录是小张,然后只能大半夜的给小张打电话,折腾好久才解决,尽管代码开始可能不是他写的,但是他在作改动的时候应该边吐槽边加上关键日志,这样既方便后来人,也避免了自己的麻烦!
这里涉及到一个概念,责任感,我们对自己经手的代码其实是有责任的,可能只是在前人的基础上的小改动,但是既然经手了,最起码的注释和日志还是要加上的。
-
发布文档如何写?
写发布文档的原则就是要写的尽可能详细,需求是什么,实现了哪些功能,发布时的步骤,注意事项,联系电话,发布日期等,最好是傻瓜式的,标准就是:只要按照发布文档写的进行操作就算在大街上随便抓个人过来部署都不会出问题。
这才是好的部署文档,很多人在写发布文档的时候很敷衍,基本用的都是模版,大纲都是有的,然后内容大概改一下就 OK,甚至文档编写人和电话都不改!有人会说很多运维和测试人员基本不看发布文档,浪费太多时间没必要,其实发布文档写的详细一些,不但会省很多时间,还会避免很多麻烦:比如避免测试人员部署或运维上线过程中出问题在联系开发人员去调试;而且发布文档写的详细也对开发人员自己有好处,可能过了很长一段时间后程序出问题了或者有人询问这个功能,开发人员可能自己都忘了,这时候,拿出发布文档一看清晰明了,会省很多时间!
更重要的是对接的人也会对这样的开发人员有一个靠谱的好印象,这里又涉及一个词:信任度,试想如果 QA 每次测你开发的程序都有很多问题,运维上线你开发的程序成功率很低,那很自然对你的信任度就会很低,即使是协同开发的项目出问题了,第一时间想到的可能就是你,而不是别人。
-
上线成功不算结束
学而不思则惘,总结对于任何人都是很重要的,功能交付,上线成功,对于工作来说是结束了,但是对于开发者本身并不意味着结束,可能此次开发只是改动一个小的功能,并且开发时间很紧张,开发过程中没有从整体上审视整个项目,那么在上线成功后找时间在回过头来继续审视一下整个项目就显得尤为重要,业务流程,整体架构,技术实现细节,项目庞大,一次可能时间不够不能完全消化,那么多几次研究总结无论对以后开发时间的评估,或是对项目提出建设性的意见,都会有很大帮助。
当然,最大的帮助还是自身技术水平和业务水平的整体提升,行之有效的方式是形成文档,相信很多人都有博客,重要技术总结整理成文章,发布到网上还可能帮助到其他人。
-
拓展知识的深度和广度
这个是老生常谈的问题了,新技术层出不穷,程序员如逆水行舟,不进则退,而且就算进的慢了也是后退,当年毕业的时候,一个女同学问带我们做项目的一个很牛的老师有没有什么话特别嘱咐,老师就告诉她,要想在互联网行业立足,一定要多关注新技术,新理念,可以不用都去研究,但是一定要关注、了解热门技术,把握技术发展方向。
大家可以多看看 BAT 的招聘要求,看看自己还有哪些方面根本没接触过。我建议大家多关注热点和优秀的开源项目、找到自己的兴趣点就多花点时间去学习研究,知识的广度很大程度上会影响开发人员的职业发展。
同知识的广度相对应的就是技术的深度,这是要慢慢积累的,都说程序员越来越多,其实 IT 领域的人员分布是金字塔形的,越往上的人,技术越好,竞争的压力也相对就会小,所以好的程序员一定是深究技术原理、多看源码的程序员,万变不离其宗,知道使用的技术是如何实现的用起来自然得心应手!
▌生活层面
-
避免职业病是大事
早就听过程序员最后要看的书是颈椎病康复指南、而且网上也有许多段子调侃程序员的身体,诸如赚的多,吃得少,死得早;从头发的疏密程度可以判读程序员的工龄等,不时还有报道开发人员猝死的。但是感觉都很遥远,对于这些段子也就听个乐。
直到有身边的人病倒,去年五月份,一位刚入职两年的同事竟然突然因为腰疼下不了床了、试了各种治疗手段在家躺了一个月才能正常上班,此后他特别注意身体,还办了健身卡。买了机械键盘,支高电脑,每天尽量保持好的坐姿,还有尽量每天至少做两次眼保健操,晚上尽量十一点前上床睡觉。
同事开玩笑说他看完老中医后自己变成老中医了,但是这件事对我的触动还是很大的,我也下载了一个健身的 app,每天早上运动 10 分钟,晚上健身半小时左右,确实整个人每天的状态都好了很多,本来每天下班都感觉很累,运动完反而不那么累了。
由此可见,确实是生命在于运动啊,IT 行业加班如此严重,越来越多的程序员面临身体问题,这要引起大家足够的重视,如今,开发人员靠的已经不单单是智力了,还要有健康的身体。
-
快速融入团队有方法
职场当中我们不是一个个体,而是整体中的一部分,很多工作需要部门之间的配合、协同完成,这对于刚入职的小伙伴可能会有一些障碍,怎么才能快速融入团队中呢?
程序员很多都不善处理人际关系,所以融入团队也大都顺其自然,自己部门开会、团建之类的正常社交也就能和本部门的成员相互认识而已、不足以达到快速融入团队的目的。
其实快速融入团队的方法就是多接触、比如我们可以通过各种小团体来快速融入团队,如果喜好各种网络游戏,这是个很好的途径;除此之外,还有很多方式,比如运动方面的,每个公司一般都会有一些篮球,羽毛球,足球等小队,参加进去不但有助于身体健康,也能很快和各部门的同事熟悉起来。
还有些公司会有户外小队,读书会等,可以选择自己感兴趣的小团体加入其中,在这些活动过程中,会找到很多志同道合的朋友、还会快速和各部门同事之间建立起友谊、这在以后的工作过程中也会更加得心应手。
-
和同事沟通有选择
按时间的长短来说,同事比和家人在一起的时间还要长,所以同事之间的关系尤为重要,好的关系就要有合理的沟通方式、有礼貌是最基本的、内容上不要认为别人不在意,就经常挖苦别人;不要在背后说任何人坏话;最好不要打听别人薪水,新人入职很多东西不明白,不了解,所以会有很多请教的事情,这无可厚非,但是我的建议是业务上不懂的可以多问,技术上不懂的要尽量自己摸索,实在不懂再去请教。
-
解决单身无捷径
五一放假,很多年轻男同事不愿回家,说回家家里就给安排相亲,由此可见单身问题对于程序员来说是个很严重的问题了。
总结来说导致程序员单身最根本的原因有两点,一是接触到的女生偏少,二是自身原因,比如智商很高,情商一般,对于穿着不太在意等。
要想告别单身,可以根据以上两点原因采取针对性的措施、比如对于接触女生少可以想办法多和外界接触、喜欢读书就抽空就图书馆去读、喜欢户外就多加几个户外群、总之不要总是宅在家里,美女是不会主动上门的!
对于第二点我觉得还是加强自己内在,相貌是无法改变的,但是气质是可以改变的,方法就是多读书,读好书,当然,单身问题也不要过于着急,要乐观、有佛性思维,要相信自己的那个她可能就在下个路口。
下一篇: IBM无锡云计算中心“以战养战”实现盈利