首页 > 代码库 > 一名程序员十年技术之路的思考与感悟
一名程序员十年技术之路的思考与感悟
要成为一个团队的精兵,必须是专业知识过硬,经验丰富,指哪打哪,能够非常让人放心的完成领导安排的任务的人。要做到这些,学习和实践是最直接的路径。通常一个毕业生,刚进入企业的时候,所学的知识并不能 100% 胜任岗位的需要,这个时候,快速地学习补充自己的知识缺陷就显得非常重要。在企业里的学习和实践,要注意以下几点。
1.借助导师、同事资源。这样可以让自己快速解决遇到的问题,少走很多弯路。我刚毕业时的导师就对我有问必答,直到现在和同事讲起我的导师时,我都会说他是我工作以来遇到的技术最全面的、最佩服的人之一。
2.系统化的学习工作所需要的是基础知识,而不是到百度或谷歌查资料解决。这样有助于遇到问题后通过相关知识关联分析,也有助于搭建更合理的技术架构,或改进现有技术架构的不足,让知识形成协同效应。为了让没有做过研发的运维同事对研发不觉得神秘,能够去分析异常故障深层次原因,我特意开发了《直观认识网络通讯》、《直观认识进程间通讯》、《直观认识 HTTP 协议》等几门课程,将这些知识体系化地通过一个个的小程序案例传递给我们的同事。
3.除了工作中需要的新知识外,建议在工作一段时间后再回头系统性学习相关专业基础知识。因为在学校的学习多数都缺乏实践,很多知识的掌握比较粗浅,在工作一段时间后重新再学,会有完全不同的收获。比如,我有了一段时间排查业务异常和网络问题的经验后,又将学校读过的《TCP/IP 详解卷1:协议》①读了一遍,发现收获特别多,很多实际业务在异常时表现的现象都和书上讲的对应起来了。一些只在书上看过但无法在试验环境模拟的现象都在实际工作中找到了场景。
4.借助平台学习成长。实际工作中,爆发式增长的业务或大平台是一个人快速成长和进步非常好的资源。因为爆发式增长的业务会让你在很短的时间内遇到在其他地方好多年可能都不会遇到的问题,而大的平台一定是从小而来,趟过很多的坑,在这样的环境中,保持一个好奇好学的心态,可以快速提高自己。比如,在 QQ 空间业务开始爆发增长的时候,有段时间我曾经十天里有六天夜里和同事一起分析解决业务异常,经常持续几小时甚至到天明,也正是那段时间,遇到了别人几年才有可能遇到的各类问题,让自己知道该补充什么知识,在后续的运维工作中对我有了很大的帮助。
5.如果可以对自己进行细分定位会更好。就如同我和我的团队在过去的七年里都经历了工作内容和岗位的细分一样,现今社会是一个信息爆炸的时代,IT 技术也是不断地出现新的技术分支,要想每一样都做到精通是非常困难的。所以结合自身情况以及工作需要,对自己有一个更加细分的定位,这样做精力才能聚焦,更有可能快速在你所做的领域不断深入,进而成为专家。而如果你想要成为一个综合性的人才,也可以考虑通过阶段性专注于某一细分领域,重点学习积累,具有一定深度后再切换重点关注领域。
随着经验的增长,从精兵变成骨干,我们所从事的工作会逐渐由简单直接变得复杂综合且无法独立完成,这时候就需要团队协作甚至跨团队、跨部门推进。这个时候就需要我们很好地协调平衡各方资源,推进项目达成目标,并将团队的业绩最大化展现,获得肯定。在这个过程中,要注意以下几点。
1.保持开放的心态。需要在沟通合作中更多的换位思考,多创造一些双赢的机会。平时先帮助兄弟团队或同事完成目标,等到自己团队需要帮助的时候,也一定会有兄弟团队或同事出来帮助你。
2.找到一些对大家都有帮助,大家又都感兴趣或可以学到新东西的事情。比如我前面提到的速度优化虚拟团队就是一个例子。
3.注重成果总结和展现。我在公司职级晋升以及一些技术奖项评审中发现有不少人或团队所做的工作成绩非常突出,但在答辩的时候讲得很一般,平时很辛苦,最后呈现很糟糕,没有通过评审或取得的成绩比较靠后,很可惜。职场不是一个只有一次机会的演讲,更像一个马拉松。对于不善表达的人来说,可以更多地注重利用日常工作中通过各类文本的形式表达场景,这样可以在长期的工作中,让周围的同事和领导了解自己及团队的工作成果。
4.注重平时的资料积累。总结展现不好,很多情况也是由于内容不够丰富有价值。为了解决这个问题可以养成将一些日常工作中坚持将成果邮件、PPT、数据图表等案例分类汇总保留。这样在需要总结的时候数据会很丰富,有内容就不怕讲不出。
很多骨干走上管理岗位后,随着管理人数和团队的增加,会发现以前由领导指派的清晰目标逐渐没有了。团队部分成员甚至一些团队整体都会困惑应该做什么,除了不断重复一些任务和工作外,团队成员长远的发展是什么等关键问题不明晰。如果这个问题得不到很好的解决,那么团队就可能出现不稳定、士气不高、战斗力差等情况。
这个时候是很难的一个坎,因为以前不管是单兵作战,还是团队项目,目标多数比较明确,但在带领一个较大规模的团队时会发现,自己的工作内容往往不再是如何完成一个既定的目标,而是思考该做什么,我该将团队打造成一个什么样的团队,怎样帮助团队成员的发展,等等。
我自己也作了一些思考和探索,比如我在运维团队里以减少运维对象以及按专业分工的思路将团队分工不断细化,并尝试清晰地定义每个团队的核心工作职责,让大家在自己团队核心工作职责的方向上不断沉淀,通过积累建立起和别的团队差异化的经验,形成自己独有的经验和平台优势。另外,提出“服务产品、服务研发、服务自己”的理念,特意将产品放在第一位,研发第二位,希望引导运维团队有产品意识,寻找更多的办法去帮助产品、协助研发,从而让产品更加成功。而不是只着眼于自己的运维效率,做一个纯粹的支持者。只有做好这个思考和探索,我觉得才能真正转变为一个强将,我自己依然在这样的思考与探索的路上。
一名程序员十年技术之路的思考与感悟