工程师个人提升计划怎么写,工程部人员如何提升自己
介绍
古人云:“活到老,学到老。”互联网是最具挑战性的行业之一,加班已经成为工程师的常态。事情日新月异,许多工程师感到疲倦和抱怨。长期以来,人们普遍存在一种误解,认为程序员的年龄到了35 岁就结束了。
很多工程师同事可能都在思考如何在忙碌的工作生活中积累技能,打造核心竞争力。这篇文章是我自己总结的一部分,试图从三个方面来回答:
第一部分介绍学习原则。无论如何,遵循行之有效的原则是效率的关键要素,正确的方法是成功的秘诀。
提高工作或学习效率的另一个重要因素是混乱和良好的姿势。在第二部分中,我将分析我在工作中遇到或看到的典型干扰。
成为一名优秀的架构师是大多数入门级和中级工程师的渐进目标。第三部分,我们分析架构师的能力模型,让大家更清楚地了解实现目标所需的能力。
如何学习
在繁忙的工作中坚持不懈、不断学习、不断进步,是一项艰巨的任务,需要坚强的毅力和坚定的决心。如果做得不对,就会事倍功半。幸运的是,古今哲学家们总结出了许多伟大的学习方法论。遵循这些方法,对大家的工作或学习都会大有裨益。
最重要的是可持续性
据报道,过去几十年的知识量超过了人类过去几千年的知识总量。毫无疑问,计算机领域是现代知识更新最快的领域之一,工程师必须接受这样的现实:他们目前拥有的深层知识体系很快就会消失。如果你想在计算机领域继续成为一名优秀的架构师,你必须不断学习最新的技术。简而言之,学习是不可避免的。
俗话说:“冰三尺不可一日,滴水穿石,亦非一日可成。”成为建筑师的道路是漫长而艰辛的。艰巨。你所有的努力都会瞬间付诸东流。如果你想成为一名优秀的建筑师,坚持是关键。
知识更新很快,但基础理论变化却很慢。这就是“道”和“尚”的关系,无论这个世界发生什么,道都不会改变。这些非常基础的理论知识需要经常复习,或者说“时时学习、学习”。
练习时要小心
古人云:“纸上学的,只有纸上有意义,不去尝试,永远不会知道。”在学习领域,有所谓的721模式:个人成长的70%来自于工作实践中,20%来自向他人学习,10%来自培训。尽管这一理论存在争议,但对于工程师来说,对实践、学习和培训的重要性进行排名通常是一个好主意。因此,重视实践、在实践中成长是最重要的学习原则。
人类的认知有两种:感性认知和理性认知。这两种观念是不可替代的。实践主要来自感性学习,而阅读则类似于理性学习。以学开车为例,仅仅学习书本知识是不可能会开车的。
虽然书本知识主要讨论的是抽象原型,但对具体应用场景的描述往往比较模糊,也只是简单地触及了抽象原型之间的关系。使用完全相同的语言来描述应用场景和关系会导致缺乏焦点并使人们感到困惑。换句话说,仅仅靠读书来成长就像单腿走路一样。
正确的学习方式是注重实践,充分发挥自己的感知认知潜力,通过项目磨练自己。事实上,通过刻意练习某些关键动作,可以收到事半功倍的效果。
照顾好沟通
牛顿说:“如果我能比别人看得更远,那是因为我站在巨人的肩膀上。”我们需要向别人学习。向老师、领导、同事、下属甚至对手学习是快速成长的重要手段。
向老师和领导学习已经成为人们生活方式的一部分。但向同事和对手学习也很重要。因为他们和我们一样。因此,我们应该多观察,扬长避短。对于团队中的弟弟和下属,你也应该“不要害羞地提出问题”。
此外,在项目期间积极参与具体的计划讨论也很重要。参与者先验了解相关背景,讨论的意见和建议融合了演讲者的多种知识和技能。因此,讨论可以让参与者非常全面、立体地理解书中的知识。同时,当我们与专家讨论时,他们的意见就像一台修剪机,快速剪掉我们自己知识领域的问题。
注意摘要和输出
工程师实际上掌握了细节,但如果不深入思考就这样做,最终就会陷入学而不思无用的境地。成长的“量变”是一步步彻底把控细节带来的,而真正的“质变”则是对“道”的更深理解带来的。
以下是导出您的经验并接受他人测试的概述:这样的产出不仅帮助了别人,也让自己受益匪浅。总结的方式有很多,比如整理分享或者写技术文章。当然,“一日三省己”是一个很好的总结。换句话说,没有什么比收集更多、分享更多更好的了!
回答别人的问题也是个人成长的重要手段。有时你一开始不明白一个问题,但是当你向别人解释它时,你突然明白了。所以,“热心教导他人”,既是为了别人,也是为了自己。
照顾好计划
未雨绸缪,不预判浪费,就是提前做好准备。对于长期的学习生涯来说,适当的规划是成功的一半。
长期计划
执行一个长期计划需要耐心和决心,但执行一个好的长期计划也需要远见、非常敏感的神经和很大的运气。对于大多数人来说,长期规划主要是确定方向。但是,您可以通过遵循以下原则来减少走错路的机会:
远离衰退的行业。
让我们做一些我们感兴趣的事情吧。
我会尽我所能积累。
走路时要小心,避免走到黑暗的一侧。
短期计划
良好的短期规划需要在生活、成长、绩效和进步之间取得平衡。大多数公司的评估周期短则一个月,长则一年。因此,评估周期也可以作为短期学习规划周期。从根本上来说,规划是一个多目标优化问题,有一系列的理论解决方案,我们在这里不详细讨论。我们根据相关理论提出了一个简单易行的解决方案。
优先考虑你的目标。例如:成长、生活、表现。
确定每个目标的下限。从优化理论的角度来看,这称为约束。例如,性能必须高于平均水平,之前计划的行程不能更改,并且必须读取《Effective Java》。
优先为下限目标分配足够的资源。例如,如果您预先计划的旅行需要10 天,您就需要为这10 天做好预算。
按照每个主要目标的顺序分配资源。例如,最后分配的学习时间是10天。
请在给定的学习预算内设定学习目标,并积极努力实现这些目标。接下来,提供执行计划。例如,您的学习目标是获得基本的统计知识并成为Java 专家。具体计划是读完4本书:《Effective Java》、《Java Performance》、《Design Pattern》、《Head First Statistics》。
根据目标优先级对计划中的每个学习任务进行排序,首先从最高优先级的任务开始。例如,如果学习统计理论是您的首要任务,那么您应该先阅读《Head First Statistics》。
使用此程序请注意以下几点:
最低目标应该很容易实现。否则,从最优化理论的角度来看,这个命题无解。例如,“我将在六个月内获得两次晋升,并且全部获得S 级,并从新手变成Java 专家”并不是一个好的最低目标。换句话说,我们必须区分理想和梦想。
规划主要目标一定是困难的,不可能的目标也一定要规划。过度规划本质上是一种贪婪算法,旨在最大化目标值。一切都会发生变化,所以如果你可以提前完成其他目标,最好利用这段时间完成更多的学习目标。换句话说,前途一定是光明的,路一定是艰难的。
目标不一定共享资源,计划也不一定相互矛盾。
此外,短期规划还可以从以下几个方面进行优化:
最好把学习和工作计划结合起来,理论和实践结合起来,学以致用。例如,如果你计划在本季度做一些数据分析工作,你可能会设定一个学习目标,学习统计知识。
计划的目标和具体实施步骤要灵活,避免出现“郑人买鞋”之类的笑话。面对新的挑战和变化,计划必须不断调整。
那些纠结的乱七八糟
人生是一场马拉松,漫长的旅程难免会遇到很多干扰。迷茫就像枷锁,让我们踉踉跄跄,但迷茫又像死胡同,让我们停滞不前。
以下是我在工作中遇到或看到的一些典型困惑的总结。这些困惑长期以来一直困扰着作者本人,或者我身边的同事和朋友。当这些困惑被清除后,每个人都重新获得了解放,并为下一阶段的旅程带来了充分的正能量。人生就像一场旅行,你不需要担心目的地,重要的是沿途的风景以及看到它时的感受。良好的心态是你技术之路上最好的伴侣。希望通过这次解谜之旅,你能经历一段漫长的学习之旅,并感到快乐。
学习没有止境吗?
我们必须承认残酷的现实。人的生命是有限的,但知识是无限的。在有限的生命中不可能学到无限的知识。考虑到这一点,一些工程师可能不得不变得悲观。只要有正确的方法和足够的精进,就没有必要悲伤。
然而,整个人类的知识体系正在不断扩展。然而,在许多重要的工程领域,基础理论并不先进。在许多重要的计算领域,工程师有能力在有限的时间内触及问题的核心。
例如,尽管密码学被认为是一门非常复杂的学科,但一大类密码技术的基础是数论中非常简单的理论。 —— 素数分解:给定两个素数,很容易计算它们的乘积,但结果是,找到两个素数的乘积需要大量的计算。
“一致性”可以说是计算中最经典的问题。它是所有分布式系统的基础,从多核、多CPU到多线程、跨机器到跨机房。 Paxos 为这个问题提供了一个非常优雅的解决方案。
权限管理对于许多工程师来说是一场噩梦,但是一旦掌握了基于属性的访问控制(ABAC)和基于角色的访问控制(RBAC),您就可以达到很高的水平。
此外,学习一项技能是一种竞争,学习永无止境,但如果你能超越大多数对手,你就赢了。因此,正确的学习方法和长期的投入形成了你的核心竞争力。
没有绝对伟大的技术,只有真正的大师。
对技术成就充满热情的工程师梦想有一天成为他们的工艺大师。然而,成为技术大师的标准却存在很大争议。这是一个长期存在的误解,认为掌握某一特定技能被用作确定掌握一门手艺的标准。我经常遇到一些工程师因为掌握了Spring、Kafka、Elasticsearch等某项技术而自称为大师的情况。一些工程师非常尊重其他团队,因为该团队使用特定的技术。
造成这种误解的原因有很多,但“首先,拥有很多技能并不是一种负担。当然,你掌握的技能越多越好。掌握很多技能的人自然不是新手。”对此。其次,在互联网时代之前,获取信息非常昂贵。这使您能够获得技能并为个人或整个公司带来优势。互联网时代,各种框架的出现和开源的泛滥,让很多技能的价值迅速被消除或者削弱,同时也降低了很多技术的学习门槛。因此,就目前而言,获得特定技能和知识只能是一个短期目标。那些对某项技能感到满意的人必须记住,骄傲会导致一个人退缩。
所谓麻雀虽小,五脏俱全。如果你是作者,设计麻雀和设计大象在复杂性上没有太大区别。即使看似很小的业务需求也需要一套非常全面和复杂的技术和功能来实现其最终目标。真正的大师是倾听客户的需求并提供好的解决方案,而不是用学到的技术来满足客户的需求。满足客户需求是一场竞争,真正的高手是手艺高手。
不做项目你能成长吗?
在项目中学习是最快的成长方式之一,许多工程师非常喜欢这个过程。然而,如果你常年从事项目,那么你可能正在为一家外包公司工作。如果你是一家做产品的公司,如果你从年初到年底都在做项目,或者你正处于创业的早期阶段,或者你已经有很多失败的项目,你不是一家特别好的公司。理想状态。项目之间通常有一些非项目时间。有些学生在这段时间可能会感到迷茫,可能会减慢自己的成长。
项目真的越多越好吗?答案显然是否定的。重复的项目并不能给工程师带来新的成长。如果你不断地从事项目并且没有足够的时间学习新知识,这可能会导致“采取行动而不学习会产生危险”。工程师真正擅长的不仅仅是不间断地从事项目,而是项目的深度。因此,在项目之间,工程师应该珍惜难得的喘息机会,深入思考,更深入地细化项目。
编程是工程师最基本的能力和必备技能。其核心是翻译功能,将业务需求翻译成机器可理解的语言。
有很多书籍可以提高您的编程技能。掌握面向对象和设计模式是有效编程的基础。初级工程师需要多写代码、多读代码。请专家审阅你的代码也是提高你编程水平的捷径。
调试功能
程序代码是系统的静态形式,调试的目的是通过检查程序的运行状态来验证和优化系统。本质上,工程师可以通过持续调试,不断提高通过静态代码预测运行状况的能力。因此,调试能力也是提高工程师编程能力的重要手段。很早以前,有一个传说“你的调试能力越高,你的编程能力就越高”,但现在有很多非常强大的编辑器,调试能力的门槛已经大大降低。
调试能力是按时、高质量交付项目的关键。即使是一个中等复杂的项目,大多数工程师也无法在第一次就正确完成。大型项目通过不断的调试来优化和修复。因此,调试能力是一项必备能力。
编写更多的程序、解决bug、咨询更多的专家是提高调试能力的重要途径。
编译部署能力
在线编译和部署运行程序是系统启动的最后一步。随着SOA架构的激增和业务复杂度的增加,大多数系统只是完整业务的一部分,本地编译和运行无法完全模拟系统的在线运行。编译和在线部署是快速验证编写的程序是否正确的必要步骤。因此,编译和部署能力是必备技能。
运行许多相互交织的子系统并不是一件容易的事。得益于SOA架构的流行以及众多编译部署工具的发展,编译部署的门槛已经大大降低。基于应用层开发的公司很少承担“编译工程师”的角色。然而,编译和部署对于年轻工程师来说仍然不是一件容易的事。
性能优化功能
衡量系统成功的一个关键指标是使用率。随着使用量的增加和业务变得更加复杂,
大部分系统最终都会碰到性能问题。 性能优化能力是一个综合能力。因为: 影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、网络等。为了对系统性能进行调优,架构师需要掌握所有相关的技术。 精通性能优化意味着深刻理解可用性、可靠性、一致性、可维护性、可扩展性等的本质。 性能优化与业务强耦合,最终所采取的手段是往往折衷的结果。所以,性能优化要深谙妥协的艺术。 可以说,性能优化能力是工程师们成长过程中各种技能开始融会贯通的一个标志。这方面可以参考之前的博客文章“常见性能优化策略的总结”。市场上还有很多与性能优化相关的书籍,大家可以参考。多多阅读开源框架中关于性能优化方面的文档和代码也不失为好的提升手段。动手解决线上性能问题也是提升性能优化能力的关键。如果有机会,跟着高手学习,分析性能优化解决方案案例(我们技术博客之前也发表了很多这方面的文章),也是快速提升性能优化能力的手段。 在线运维能力 如果说性能优化能力体现的是架构师的静态思考能力,在线运维能力考验的就是动态反应能力。残酷的现实是,无论程序多么完美,Bug永远存在。与此同时,职位越高、责任越大,很多架构师需要负责非常重要的在线系统。对于线上故障,如果不能提前预防以及快速解决,损失可能不堪设想,所以在线运维能力是优秀架构师的必备技能。 为了对线上故障进行快速处理,标准化的监控、上报、升级,以及基本应对机制当然很重要。通过所观察到的现象,快速定位、缓解以及解决相关症状也相当关键。这要求架构师对故障系统的业务、技术具备通盘解读能力。解决线上故障的架构师就好比一个在参加比赛F1的车手。赛车手必须要了解自身、赛车、对手、同伴、天气、场地等所有因素,快速决策,不断调整。架构师必须要了解所有技术细节、业务细节、处理规范、同伴等众多因素,快速决断,迅速调整。 在线运维本质上是一个强化学习的过程。很多能力都可以通过看书、查资料来完成,但在线运维能力往往需要大量的实践来提升。 业务架构能力 工程师抱怨产品经理的故事屡见不鲜,抱怨最多的主要原因来自于需求的频繁变更。需求变更主要有两个来源:第一个原因是市场改变或战略调整,第二个原因是伪需求。对于第一个原因,无论是工程师还是产品经理,都只能无奈的接受。优秀的架构师应该具备减少第二种原因所导致的需求变更的概率。 伪需求的产生有两个原因: 第一个原因是需求传递变形。从信息论的角度来讲,任何沟通都是一个编码和解码的过程。典型的需求从需求方到产品经理,最终到开发工程师,最少需要经历三次编码和解码过程。而信息的每一次传递都存在一些损失并带来一些噪音,这导致有些时候开发出来的产品完全对不上需求。此外,需求方和产品经理在需求可行性、系统可靠性,开发成本控制方面的把控比较弱,也会导致需求变形。 第二个原因就是需求方完全没有想好自己的需求。 优秀的架构师应该具备辨别真伪需求的能力。应该花时间去了解客户的真实业务场景,具备较强的业务抽象能力,洞悉客户的真实需求。系统的真正实施方是工程师,在明确客户真实需求后,高明的架构师应该具备准确判断项目对可行性、可靠性、可用性等方面的要求,并能具备成本意识。最后,由于需求与在线系统的紧耦合关系,掌握在线系统的各种细节也是成功的业务架构的关键。随着级别的提升,工程师所面对的需求会越来越抽象。承接抽象需求,提供抽象架构是架构师走向卓越的必经之途。 市场上有一些关于如何成为架构师的书,大家可以参考。但是架构能力的提升,实践可能是更重要的方式。业务架构师应该关注客户的痛点而不是PRD文档,应该深入关注真实业务。掌握现存系统的大量技术和业务细节也是业务架构师的必备知识。 项目管理能力 作为工业时代的产物,分工合作融入在互联网项目基因里面。架构师也需要负责几个重大项目才能给自己正名。以架构师角色去管理项目,业务架构能力当然是必备技能。此外,人员管理和成本控制意识也非常重要。 项目管理还意味着要有一个大心脏。重大项目涉及技术攻关、人员变动、需求更改等众多可变因素。面临各种变化,还要在确保目标顺利达成,需要较强的抗压能力。 人员管理需要注意的方面包括:知人善用,优化关系,简化沟通,坚持真理。 知人善用意味着架构师需要了解每个参与者的硬技能和软素质。同时,关注团队成员在项目过程中的表现,按能分配。 优化关系意味着管理团队的情绪,毕竟项目的核心是团队,有士气的团队才能高效达成目标。 简化沟通意味着快速决策,该妥协的时候妥协,权责分明。 坚持真理意味着顶住压力,在原则性问题上绝不退步。 成本控制意味着对项目进行精细化管理,需要遵循如下几个原则: 以终为始、确定里程碑。为了达成目标,所有的计划必须以终为始来制定。将大项目分解成几个小阶段,控制每个阶段的里程碑可以大大降低项目失败的风险。 把控关键路径和关键项目。按照关键路径管理理论(CPM)的要求,架构师需要确定每个子项目的关键路径,确定其最早和最晚启动时间。同时,架构师需要关注那些可能会导致项目整体延期的关键节点,并集中力量攻破。 掌控团队成员的张弛度。大项目持续时间会比较长,也包含不同工种。项目实施是一个不断变化的动态过程,在这个过程中不是整个周期都很紧张,不是所有的工种都一样忙。优秀的架构师必须要具备精细阅读整体项目以及快速反应和实时调整的能力。这不仅仅可以大大降低项目成本,还可以提高产出质量和团队满意度。总体来说,“前紧后松”是项目管理的一个重要原则。 项目管理方面的书籍很多。但是,提高业务架构能力同样重要。积极参与大项目并观察别人管理项目的方式也是非常重要的提升手段。 团队管理能力 不想做CTO的工程师不是一个好的架构师。走向技术管理应该是工程师的一个主流职业规划。团队管理的一个核心能力就是规划能力,这包括项目规划和人员规划。良好的规划需要遵循如下原则: 规划是利益的博弈。良好的规划上面对得起老板,中间对得起自己,下面对得起团队。在三者利益者寻找平衡点,实现多方共赢考验着管理者的智慧和精细拿捏的能力。 任何规划都比没有规划好。没有规划的团队就是没头的苍蝇,不符合所有人的利益。 规划不是本本主义。市场在变,团队在变,规划也不应该一成不变。 客户至上的是项目规划的出发点。 就人员规划而言,规划需要考量团队成员的能力、绩效、成长等多方面的因素。 市场上有很多规划管理方面的书籍,值得阅读。最优化理论虽然是技术书籍,但它是规划的理论基础,所以不妨多看看翻阅一下。从自我规划开始,多多学习别人的规划也是规划能力提升的重要手段。 总结 因为受邀去做一个关于“一边工作,一边学习”的分享,作者花了一段时间去思考和汇总学习方法论,接着每天不断地采集谣言并尝试解惑,再根据个人经验绘制出优秀架构师的能力模型,最后汇集成文。 文章系统性地阐述了学习原则、分析了常见困惑,并制定明确学习目标,期望对工程师们的工作学习有所帮助。需要申明的是,文章内容挂一漏万,所谓的架构师能力模型也是作者的个人观点。欢迎大家在评论中分享自己在学习成长方面的心得。