• 做编程容易短命?衷心建议:三十六计,“保命”要紧


    一直听很多人说什么做软件编程是短命的工作,做5年以上的很少,基本上做到30岁以后脑子就不行了,逻辑分析能力下降,除非你做到项目经理不然必须转行。30岁对于程序员来说是个瓶颈,其实这种说法有一定的道理。一些原因会让一部分30岁左右还在编程的程序员感到压力,职业发展路上遇到小瓶颈。如果程序员不想一直编程或是主要工作不是编程,发展的方向是什么呢?今天我们就来聊一聊程序员的几个职业发展路线,希望能供各位程序员做参考。
    我们会来到一个重要的人生岔路口。就是管理和技术两个选择,一边专业路线,一边是管理路线。在互联网的头部企业,对管理和技术是平等对待的,所以晋升会存在管理和技两个通道的。
    既然有了选择,就会有人纠结,不知道是选择专业路线,还是选择技术团队的管理路线。
    这个选择是程序员人生中第一个大的选择,也是第一个障碍,倒不是说这个障碍是到底要不要选择管理,而更多的是对做管理的迟疑,怀疑到底能不能做好管理,做了管理之后,技术是不是就荒废了。这种状态犹豫不决、摇摆不定的状态保持时间长了,最终会导致技术和管理都没做好,这是得不偿失的。
    为了解决这个问题,有必要分析程序员职业发展的路线到底有几条,分别需要具备怎样的能力,从而做到”手中有粮,心中不慌“。
     
    1、技术
    技术类上,是有两个方向:架构师和技术专家
    架构师他的侧重点是在“广”上,他主要负责技术的整体和架构,在业务上,需要有很深的理解,有丰富的经验,甚至能做到“走的桥比你吃的盐还多”。在技术上,能够广泛涉略,掌握的技术知识越多,内力就越加深厚。
    我觉得架构师还需要三点必备能力,其一需要有极强的执行力,能够快速的给出合理的方案,推动技术落地。其二需要有极强的判断力,能够准确的找到复杂系统的疑难问题所在,就像武林高手,一眼就看出对方的破绽。最后还需要有极强的创新力,能够创造新的解决方案,解决现有技术难题。
    所以从程序员到架构师的成长之路,总的指导原则是:积累经验,拓宽视野,深度思考。
    技术专家他的侧重点是在“专”上,这个就很好理解,就是在某个领域能够深入,能够熟悉其背后运行原理。不同的领域都会存在专家,例如:Java专家、前端专家、图像算法专家、Linux内核专家等等。专家相对架构师,更加专注,并不会考虑太多整体方案。
    所以从高级开发成长为技术专家,主要是扩展领域内的技术宽度,提升领域内的技术深度。因为领域也不是特别窄的一个面,而是包含多个技术面。
    举一个例子:Linux内核专家,要想成为Linux内核专家,需要掌握,Linux CPU调度、内存管理、进程管理、存储管理、文件系统、设备管理和驱动、网络通信、系统调用、系统初始化等技术面。
    在每个技术面中,同样包含了很多技术点,这些技术都是知识盲区,所以需要提升技术深度。
     
    2、管理
    管理也分为了两个方向,技术管理和职业管理。顾名思义,技术管理更加倾向于技术,而职业管理完全抛开了技术,纯粹的商业方向。
    技术管理,这个方向是程序员最自然的选择。大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到技术经理岗位上的,并非是自己当初有强烈意愿、主动去选择管理岗的。然后走上慢慢打怪进阶的路线,从技术经理岗到技术总监,带领几十号人的团队冲关,然后到成为技术业务部和事业部的技术副总裁,相当于CTO了。
    技术管理需要在业务上有较深的理解,在技术上能够根据技术发展趋势,进行技术规划。在产品上能够极强的洞察力,进行产品规划。在团队加上能够规划团队建设、组织结构等等,所以这是综合素质的要求。
    职业管理者往往更加关心于整体产品业务的团队,不限于技术团队。比如某个事业部的总裁,或者是某个业务部的总裁。大家往往都听过某某事业部空降了领导,这个领导就是属于职业管理者,他的移动性更加强,能力更加通用。这个方向是可遇不可求的,有些人一辈子都不可能触及到。这个就是天花板上的别人家的楼板,你说难不难?
     
    3、创业
    创业这个方向上,一般是作为技术合伙人来参与,如果想要自己的创业公司能够成功,必须是全能型创业团队,在技术、产品、营销等方面不能有明显的短板。
    我举一个真实的例子:我的上一家公司的直接领导,辞去技术总监的职位,作为一个技术合伙人创建了一个团队,主要提供物流解决方案。前几个月和他聊,公司已经在去年实现盈利1000多万,通过股权上操作,已经成为最大的股东,掌管着整个公司的前进方向。
    说到这里挺惋惜的,创立之初,当时极力的拉我入伙,被我拒绝了,理由是工资太低了,这个理由在现在看来简直可笑啊
     
    4、其他
     
    项目经理
    这个方向也是程序员比较常见,也比较自然的方向。项目经理是整个软件项目的组织者和领导者。对内要管理好技术团队,制定开发计划、测试计划、培训计划、量化任务等;解决开发过程中出现的问题,保证软件按照进度计划推进;做好技术文档、说明文件的存档工作等。对外要与客户沟通,了解、完善、修改需求;要与公司沟通,及时汇报项目进度、工作情况和资源需求;要做好市场调研,及时调整技术方案等。项目经理其实一种组织整合能力。不同于技术管理,这条路线走起来,几乎不需要任何外界依赖因素。最需要关注的是进度、质量、人力、成本、风险。
    那如何提升项目管理能力呢?
    首先需要对项目管理知识框架有个大致的认识,避免在庞大的知识体系中迷失方向,比如:
    范围管理:项目为何总是做不完?范围管理要界定
    风险管理:项目风险引发的问题、成因以及防范方法
    沟通管理:做好项目沟通计划
    质量管理:加强项目质量
    时间管理:项目进度控制
    成本管理:产品成品控制
    。。。。。。
    其次需要掌握项目计划、项目变更、项目进展报告、复盘等过程方法。
    最后需要掌握跨部门协作,多维度沟通上进行加强。
     
    产品经理
    不知道大家有没有听过从事编程的朋友“抱怨”所正在开发的产品?有部分程序员在开发的过程中会有自己对产品的想法,当他们觉得正在开发的产品存在功能或是逻辑设计不合理地方的时候,他们可能就想表达出来,但是大多时候公司里面的人很少会听取程序员对产品的意见,因为这被认为是产品设计师或是产品经理的工作,所以有些程序员偶尔会把一些想法跟朋友说说。这部分程序员中,有些对产品设计、产品管理确实有很好的想法,这些程序员其实具备了往产品方向发展的基础:对产品功能、逻辑有很好的想象力、判断力。但是要想成为一名产品设计师或是产品经理,还有很长的路要走。
     
    程序员转产品经理,需要做到技术思维到产品思维的转换。技术思维角度是从功能开始,而产品思维的角度是从业务开始。
    作为程序员,当要做一个项目时候,我们最关心的是这个项目有哪些功能,然后考虑每个功能如何实现;
    而作为产品经理,当要做一个项目时候,我们看重这个项目的业务场景是什么,解决用户什么问题。
    技术思维角度是怎么去实现功能,而产品思维角度是为什么要这个业务。
    从技术思维的角度关注一个需求时候,总是先关注一个需求如何去实现,即HOW;
    而从产品思维上来关注一个需求时候,应该多问一下WHY,为什么需要这个需求,多思考为什么,从而找到需求或问题的本质。
    技术思维角度是向专家一样行动,而产品思维角度是向小白一样思考。
    作为程序员,我们日常接触到最多的还是技术人员,这些人一般来说逻辑思维都较强,擅长使用和处理各种软件,所以总是将这种形象代入到客户身上。
    但作为产品人员思考时候,将用户想得越“小白”越好,假设他们是不懂电脑,不太会玩手机,甚至不会打字的人。
     
    5、总结
    从以上几条职业发展路线可以看出,程序员的发展方向还是挺广的,可以往技术、管理、产品等方向发展。
    从中也可以看出,只做好编程的工作是不够的,也要注重相关能力的学习和积累,这样才能往更核心的岗位发展。上面的职业发展路线只是一个大概的方向,并非每个程序员都需要经历路线中的每个岗位角色,每个程序员也可以根据自己的情况制定更适合自己的发展路线,并为之而努力。
     
    程序员编程入门资料:
    程序员推荐学习书籍:
     
     
  • 相关阅读:
    第五章:向量运算
    第四章:向量
    第三章:多坐标系
    近期一些学习的随笔
    2020高考游记
    寒假集训好题记录
    STL基本用法的一些记录
    2020暑假集训做题记录——数据结构
    2020.12.13~2020.12.20做题记录
    2020.11.30~2020.12.6 做题记录
  • 原文地址:https://www.cnblogs.com/mu-ge/p/13902807.html
Copyright © 2020-2023  润新知