有话说丨程序员的职业道路是死路一条/h2> 2016-08-03 Ben丨谢鹏 法本
↑ 点击上方 “ 法本 ”关注我们
我眼中的初级开发人员(JuniorDeveloper):
有0-3年开发经验(从学校出来就写程序),能写简单的脚本语言,初步的了解整个应用开发过程,初步的了解通用数据库和应用服务器(Queues, caching等等),对于复杂的应用并不能全盘承接不同的开发步骤。当你刚开始程序员生涯的时候会感觉很抓狂,很多时候会感觉力不从心,怀疑怎么可能有人能够独立完成一个巨复杂的应用开发。但是过不了多久,你迈过了刚才那个坎以后,马上就会开始想为什么自己还没有被晋升为高级程序员,因为找到感觉后的你总认为那些资深的程序员干的活和自己没什么两样。
其实一个初级程序员最大的特点就是缺乏经验,这个特征基本在所有职业的初级岗位中都一样,解决方案就是时间和实践。就算最聪明的、学习能力最快的程序员也需要通过足够的Coding和Debug才能累积出更高一级岗位需要的智慧。在开发工作中,一种公认的能力就是软件建模,这需要你写出足够多的bug,然后debug后才会逐步深入了解建模的价值和其中的精髓。
我眼中的高级开发人员(SeniorDeveloper):
有4-10多年开发经验,能写复杂的应用,深入理解整个应用开发的全生命周期,深入理解各类数据仓库和应用服务器。在软件开发过程中可以承接任何部分的工作。一个资深开发人员最显著的特点应该就是可以独立构建和组织构建整个大型应用。在我看来大多数开发工程师的职业道路中最长的一段路应该就是这个角色,甚至如果你讨厌做管理类的工作,就是喜欢写程序,构建应用,你可以一辈子做一个资深程序员,就像我文章开头说到的,在欧美太多白发苍苍的Senior Developer,但就我的经验来看,并不是年纪越大就越能胜任这个岗位,都怪这个世界变化太快,某种意义上来说,资深程序员主宰了这个世界的发展,这个世界的发展决定了一个资深的程序员在不同的时间点应该是什么样子。
如果能够胜任这个角色,在职业发展上就有很多可能性了,当你足够的了解流行的技术和架构,完全可以成为某些项目、产品和商业组织的技术负责人和CTO。这个时候在人员管理和组织运作技巧上就需要重点的学习和了解了,但不论如何这些岗位真正考验的还是技术能力。
我眼中的开发经理和架构师的画像:
是7-10多年的开发经验,具备了一定的高级开发者的技术技能。如果是开发经理,他需要在人员培养、工作沟通、业务导向意识上有突出的表现,能够具备在后续顺利的过度到中层管理人员的潜质。如果是架构师,则需要在应用架构设计上有更多的创造性思路和提升开发质量的经验,一般来说在特质上不适合转向管理岗位。
如果干了7年的开发工作,你发现管人管事不是你的菜,那么成为一个出色的架构师将是最合适的选择。架构师时不时还是要写代码,但是更多的是对复杂系统和应用框架的设计,然后带领整个团队(初级程序员、高级程序员)沟通和落地执行开发工作。一个软件架构师的责任就是利用多年积累下来的技术智慧去构建一个成功的软件应用和软件项目。当有新的CR进入时,能够知道如何正确的构建和扩展应用架构。
如果是一个开发经理,那么就更多关注在人的事情上了,他能够指导和引导初级工程师和高级工程师,他可能不会直接拥有人事权力,但基本上团队的正常配置与运作需要他更多的意见和决策力,尤其是在代码编写的过程中。
我眼中的中层管理者(manager):
他们可能有很多不同的title,比如说经理、总监、开发经理、产品经理、项目经理等,总之是理论上的程序员的BOSS了,有权限任用和辞退开发工程师,并向高级管理者汇 。
管理线的晋升无疑是比较传统的程序员发展路径,但对于不同的管理岗位来说工作的关注点可能会发生很大的不同。比如,如果你擅长跟踪不同作业领域的推进以及特别能够抓细节,那成为一个优秀的项目经理可能是正确的选择。如果你喜欢研究产品功能和性能,提升产品质量,那可能更适合作为一个产品经理。
当然最常见的情况还是先转变为开发经理,成为产品经理和项目经理的partner, 来协调、管理开发者团队,使得工作顺利推进。但不管什么管理岗位,它都需要更强的人际技巧,沟通能力,处理冲突的能力,并且更多的扮演团队中粘合剂。话说回来,作为管理者不仅仅需要招募工程师和程序员,在必要的时候也需要辞退工程师,这就意味着作为管理者你很难和团队真的成为朋友,如果成为朋友在很多情况下会把自己放在很尴尬的境地。如果一个团队中谁从程序员变成了开发经理或者项目经理,一夜之间其他程序员就会对这个晋升者改变态度和观点。所以说,做管理者是个苦活,并且不太容易会获得别人的感激。
当然,当你带领团队获得成功的那一刻,回 将都向你涌来。
我眼中的高层管理者:
如VP, CTO 或者 CEO,他们是中层管理者的老板,一般向更高层的管理者或者董事会汇 工作。
很显然和中层管理者的不同点就是,高层管理者的责任就是管理中层管理者,但是一般来说合格的中层管理者是不需要被管理的,他们需要被指引。高层管理者需要让中层管理者了解在业务上、工作上、能力上需要前往的方向,并有力的把他们代入和认同这个方向,而不是一点一点的具体事务的指导(当然最好具备指导的能力)。
一个高层管理者的重要职责就是做出更重要的高层次的决策,并激发他的整个团队包括所有管理者沿着决策走下去,确保执行落地,让队伍相信这个决策,相信自己,相信在决策下的每一个任务。
越往上走,就越离你的程序编写越远,到了最上层,那里全是关于人的事情。中层经理还能时不时享受技术工作带来的快感,到了高级管理者必须要花费几乎所有的时间去做关于人的事情:激励、动员、领导、部署。如果这个时候你仍然想编程,那往往不会去做一些核心项目(当然,除非你是bill gates,但不是每个人都会成为比尔盖茨)
高层管理者的任务就是保证公司全体人员都清晰的了解大家的事业方向,都认同这个方向,都能够使各级工作沿着这个方向走向胜利。这是一个貌似很困难的工作,充满了风险,头痛和陷阱。如果你已经干上了,可以推荐去看一本书–《创业维艰》《the hard thing about hard things》, Ben 写的,Ben Horowitz, 不是Ben Xie。
高层管理者不是与生俱来的,他们是被培养和自成长的。当然,可以从初级程序员开始。
最后我想总结一下我的观点。在当今,程序员这个工作和岗位从来没有这么重要过,充满了历史的机遇和事业的机会,在可见的未来,全产业全 会对程序员和相应的高级岗位都求贤若渴,毫无疑问对程序员来说,这是个伟大的时代。因此,不需要那么急着去规划所谓的自己的职业道路,做好手边的开发事,写出漂亮的代码,做出优秀的软件,未来就已经在你的面前。
Ben丨谢鹏
2016/07/26
写留言
8月3日
了解留言功能详情
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表31525 人正在系统学习中 相关资源:fouro-application:iOSAndroid应用程序,用于发送虚拟拥抱并与朋友…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!