个人成长总结

准备面试以来,除了学习以外的个人成长总结。

技术

中间件

架构设计

设计模式

思想

抽象

寻找共性

提升抽象层次

构建金字塔

金字塔模型

结构化思考和表达

自下而上思考,总结概括;自上而下表达,结论先行。

如何提升抽象思维能力

多阅读,少看视频和图像

多总结,写作、表达,锻炼抽象思维和结构化能力

领域建模训练

分治

分而治之

分:递归地将原问题分解成小问题

治:逐个击破之后合并小问题的解,从而得到整个问题的解

  1. 分解:将要解决的问题划分成若干规模较小的同类问题
  2. 求解:当子问题划分得足够小时,用较简单的方法解决
  3. 合并:按原问题的要求,将子问题的解逐层合并,构成原问题的解

编程中的分治

  • 相关算法
  • 函数分解

坏味道:又臭又长的代码,将大函数分解为多个短小、易读、易维护的小函数

原则:

  1. 单一职责原则
  2. 在使用组合函数模式时,要注意抽象层次一致性原则,不同抽象层次的内容放在一起会给人凌乱、逻辑不协调的感觉。
  • 写代码的两次创作
  1. 第一遍实现功能,创造
  2. 第二遍重构优化,创作
  • 分治相关设计模式

管道模式,装饰者模式,责任链模式……

  • 分层设计

分层设计是架构体系设计中最常见和重要的一种结构。

分层设计最大的好处就是分离关注。就可以通过分层隔离简化一个复杂的问题,让每一层只对上一层负责,从而使每一层的职责变得相对简单。

  • 横切和竖切

数据库设计,分库分表分区

技术人的素养

不教条

控制系统复杂度,但凡能提高代码可读性、可扩展性和可维护性的方法,都是值得考虑的,并不一定要拘泥于某种特定的开发过程或者编程范式。

IDP:强行拆模块,导致开发复杂度提升,关键是本来也没有先做规范,导致后续开发进一步陷入混乱。

当然,首先要学会基本的原则,然后才能知道什么时候去打破规则。在遵守规范和原则的基础上适时打破规则来满足目标。

不炫技

不能为了炫技而过度设计或强行使用。存在瓶颈的时候为了解决问题才要适当引入合适的解决方案。

批判性思维

批判性思维是一种谨慎运用推理去断定一个断言是否为真的能力。它要求个人保持思考的自主性和逻辑的严密性,不被动地全盘接受,也不刻意地带着偏见去驳斥一个观点。

成长型思维

成长的过程中不可能是一帆风顺的,肯定会有痛苦、有阻力、有挫折。

面对逆境,应该怎么做?

有些人也许不堪重负,就此沉沦;有些人可以越挫越勇,把每次失败都当成学习的机会。

成长型思维和固定型思维会极大影响人们面对逆境的处理方式。

我们获得的成功并不是完全由能力和天赋决定的,更多受到我们再追求目标的过程中展现的思维模式的影响。

成长型思维 固定型思维
我的态度和汗水决定了一切 我的聪明才智决定了一切
我可以学会任何我想学的东西 我擅长某些事,不擅长另外一些事
我想要挑战我自己 我不想要尝试我可能不擅长的东西
当我失败的时候,我学会很多东西 如果我失败了,我就无地自容
我希望你表扬我很努力 我希望你表扬我很聪明
如果别人成功了,我会受到别人的启发 如果别人成功了,他会威胁到我

成长型思维和固定型思维体现了应对成功与失败、成绩与挑战时的两种基本心态。认为才智和努力哪个更重要、能力能否通过努力改变,决定了你是否会满足于既有成果,还是会积极探索新知。通过了解自己的思维模式并做出改变,人们能以最简单的方式培养对学习的热情,以及在任何领域内取得成功都需要的抗压力。

具有成长型思维的人相信自己可以通过学习来提升自我,相信学习和成长的力量,相信努力可以改变智力和能力。会用更加理性的态度看待一时的成败得失,内心坚定地相信成长和学习的力量。工作或生活中面临挑战时,不会轻言放弃,而是会积极主动地去学习,去寻找解决方案。即使最终还是失败了,也不要一蹶不振,而是把失败当成学习的动力和机会。

结构化思维

逻辑+套路

逻辑

  • 演绎顺序

大前提、小前提、结论

  • 时间/步骤顺序

第一、第二、第三,首先、再者、然后,大多数时间顺序也是因果顺序

  • 空间/结构顺序

前端、后端、数据库,东方、南方、西方、北方,化整为零,相互独立,完全穷尽

  • 程度/重要性顺序

最重要、次重要、不重要

套路

解决问题的方法论、路径和经验

5W2H:why、who、when、where、what、how、how much

逻辑是一种能力,而套路是方法论、经验;

逻辑属于道,而方法论属于术。

如何融入新团队

结构化拆解问题:团队/项目/企业——业务、技术、人

业务:产品形态,业务流程,走访客户

技术:系统架构,领域模型,代码结构

人:组织结构,人员角色,勤沟通

工具化思维

适当的懒比低效的勤奋更具智慧,懒惰的对立面除了勤奋也可能是硬干、苦干、傻干,可能是一种徒劳、低效、大可不必的努力,只会说明做事情过于急切,欠缺思考。人们很容易混淆行动与进展、忙碌与多产的概念。

在有效的工作中,最重要的是学习和思考,而人在思考的时候通常看上去不会很忙。

智慧懒是一种工具化思维,是磨刀不误砍柴工的智慧。

程序员与其他行业的最大区别是不仅使用工具,还能创造工具。

对于整天非常忙,忙到没有时间思考的人,真心建议停下来,思考一下:我是否存在知识盲区(先探索完整个地图,再选择交通工具,然后规划路线,最后一路顺风)?我的方法有没有问题?是不是有更“偷懒”的方式可以帮助我提升效率?

好奇心

记笔记,写总结

有目标,有野心

选择的自由

平和的心态

动机至善,了无私心;用无为的心,做有为的事。

无为:平和的心态,活在当下的智慧,宠辱不惊

精进

每天进步一点点,慢就是快

Leader & Manager

manager 是管理事务,是控制和权威;

leader 是领导人心,是引领和激发。

我们不需要这么多“高高在上”“指点江山”的技术 manager,而是需要更多能真正深入系统里面,深入代码细节,给团队带来提升和改变的技术 leader。

技术氛围

  • 代码好坏味道

  • 技术分享

  • 代码评审

  • 读书会

目标管理

  • KPI or OKR

  • SMART 原则

S:specific,明确性

M:measurable,衡量性

A:attainable,实现性

R:relevant,相关性

T:time bound,时限性

技术规划

  • 当前问题/痛点
  • 业务领域
  • 技术领域
  • 团队特色

工作

生活

工程师精进原则

https://tech.meituan.com/2018/08/16/10-principles-for-engineers.html

Owner 意识

  • 认真负责是工作的底线。
  • 积极主动是“Owner意识”更高一级的要求。

时间观念

做事有计划,工作分主次。

以终为始

先想清楚目标,然后努力实现。

要根据问题设定目标,再进行优化。

带着目标去学习。

闭环思维

一个人是否靠谱,就看他能否做到凡事有交代,件件有着落,事事有回音。它强调的是一种即时反馈闭环,如果别人给我们分配了一个任务,不管完成的结果如何,一定要在规定的时间内给出明确的反馈。

真正的闭环,要求我们对工作中的事情都能够养成良好的思维习惯,沟通要有结论,通知要有反馈,To Do要有验收。

“闭环思维”还要求能够定期主动进行阶段性的反馈。

保持敬畏

当我们进入到一个新的团队,请先暂时忘掉之前的习惯,要尽快学习团队既有的规范,并且让自己与团队保持一致。

让规范与约定与时俱进,也是另一种形式的敬畏。

事不过二

所有的评审、问题讨论、错误,不要超过两次。

设计优先

软件架构的目标,是为了让构建与维护系统的所需人力资源最小化。

架构设计,并不仅仅关系到系统的质量,还关乎团队的效能问题。

无数事实证明,忽略了前期设计,往往会导致后续开发周期被大幅拉长,给项目带来了很大的Delay风险。而且最可怕的是,不当的设计会给项目带来巨大的后期维护成本,我们不得不腾出时间,专门进行项目的优化与重构。

“设计优先”这一原则,要求写别人看得懂的设计。在设计过程中,要以需求为出发点,通过合理的抽象把问题简化,讲清楚各个模块之间的关系,再详细分述模块的实现细节。做完设计之后,可以发给比较资深的RD或者PM审阅一下,根据他们的反馈再进行完善。好的设计,一定是逻辑清晰易懂、细节落地可执行的。

P/PC 平衡

产出与产能必须平衡,才能达到真正的高效能

从系统的角度看,每一个系统都是通过持续不断地叠加功能来实现其产出,而系统的产能是通过系统架构的可扩展性、稳定性等一系列特性来表征。为了达到产出与产能的平衡,需要在不断支持业务需求的过程中,持续进行技术架构层面的优化。如果一味地做业务需求,经过一定的时间,系统会越来越慢,最终影响业务的稳定性;反之,一个没有任何业务产出的系统,最终会消亡。

再从RD的角度来看这个问题,RD通过做需求来给公司创造价值,实现自己的产出。而RD的产能是指技术能力、软素质、身体健康状况,有这些资本后,我们才能进行持续的产出。在日常工作中,我发现很多RD往往只重视产出。他们也在很努力地做项目,但是每一个项目所使用的方法,还是沿用自己先前一贯的思路。最终,不仅项目做得一般,还会抱怨自己得不到任何成长。这就是P/PC不平衡的体现。如果能在做项目的过程中,通过学习总结持续提升自己的技术能力和软素质,并将其应用于项目实施交付中,相信一定会取得双赢的结果。

善于提问

“善于提问”,首先要勤于提问只有在争辩中,才可能诞生最好的主意和最好的决定

“善于提问”,还要懂得如何提问。为什么同样是参加设计评审,有的同学就能提出很好的问题,而有的同学却提不出任何问题?除了知识储备、专业技能、经验等方面的差异外,还有一点很重要:批判性思维。

批判性思维主张通过批判性思考达到理性思维,即对事物本质的认知和掌握。关于如何进行批判性思维,大家可以参考一些经典的图书如《批判性思维》、《学会提问》等。在工作中面临一项决策时,会有各种各样的意见摆在你面前,所以我们必须要学会使用批判性思维来进行分析,每个人的论据是否可靠,论证是否合理,是否有隐含的立场。同样,在阅读一篇技术博客的时候,也要使用批判性的思维,多问几个为什么,作者得出的结论是否合理?论据是否充分?只有这样,才能不断地获取真正的知识。

空杯心态

保持“空杯心态”这一原则要求我们时刻进行自我检视与反省

工作中如何做好技术积累

https://tech.meituan.com/2018/04/16/study-vs-work.html

如何晋升蚂蚁 P8

程序员四大原则

加速原则

能加快工作的一切事物。

快捷键,工具,能提升效率的工作和沟通模式。

研究原理和其他的插件之后,手撕热部署源码,并且在组内分享,节省了大量的测试部署时间的成本消耗。

专注原则

专注可以很大程度上提高工作效率。

隔离干扰,提前上班(专注于编码一小时,完成 60%的编码工作,正常工作时间用来做沟通和自我提升,复盘、总结、整理),避免能分散自己注意力的东西(手机、浏览器)

自动化原则

把能自动化的一切都去人力去手工。

依然热部署

订阅

规范性原则

规范很重要,减少不一致。降低理解和沟通的成本。

主动做一些输出,例如开发规范、技术分享、设计模式、领域驱动等。

几项能力

  • 承担责任,但不为团队背不该背的锅

  • 任何事情首先从自己身上找原因,该认怂就认怂,问题尽量控制在一定范围内,避免扩大和升级

  • 综合能力,技术、业务、项目管理都要懂

  • 一叶知秋的洞察力

  • 自省,善待质疑自己和与自己争论的人

  • 带领团队一起提升,大家一起强了,其实才会轻松

  • 同理心

  • 情绪管理

  • 文档能力

文档是第一生产力,通俗易懂,结构化,简化/强化沟通。

  • 算法能力

除了技术的提升,思维提升也是受益良多。

  • 解决问题的效率

  • 表达能力

表达能力决定了所做的技术的影响范围,决定了影响力,决定了威信,决定了价值。

基于格局、思维、技巧。

  • 优雅和美观的抽象能力

  • 读书,总结

  • 裸编程能力

  • 掌握底层系统原理

  • 追求代码世界的简约

  • 保持谦逊,对一切充满敬畏

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2017-2021 Shadowalker
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信