以下是近日读《阿里工程师的自我修养》的笔记,有些概念性的东西是需要结合具体案例理解的,总结或者说笔记,只是概括性的东西,需要慢慢咀嚼。
技术人员具备结构化思维意味着什么?
结构化思维就是:逻辑+套路
要学会四种组织思想的逻辑关系:
5W2H 分析法就是一个非常好的,可以帮助我们分析问题的一个”套路”
从 Why、Who、When、Where、What、How 和 How much(如下图所示),七个方面去思考
比如:系统bug多,向上抽象是“提升代码质量”,向下抽象是“加强测试”,都可以作为中心,选择哪个为中心取决于你当前要解决的问题是什么。
做空间分解的时候,要注意满足 MECE(Mutually Exclusive Collectively Exhaustive,相互独立,完全穷尽)原则。
如何落地新团队?
对一个企业来说,核心要素无外乎就是业务、技术和人,也就是说这三个要素是我们要建立的中心。基于这个中心,我们可以进行进一步拆解,形成子结构。然后对子结构再进行分析找到应对策略。这样一步步递进,我们就已经在用结构化思维解决如何落地新团队的问题了。
1)熟悉业务:了解产品/了解流程/客户走访
2)熟悉技术:了解系统架构/了解领域模型/了解代码结构
3)熟悉人:了解组织结构/了解人员角色/拜山头(找到和自己工作息息相关的岗位人员)
优秀工程师必备的三大思维,你拥有哪些?
好的产品体现于“易用”二字,其极致在于迎合用户的本能反应并符合各种生活或专业常识。
工程师个体需要在工作中逐步建立起产品、技术和工程三大思维,以便用更为全面的视角去看待日常工作中所面临的困境和困惑。
优秀工程师必备的一项技能,你解锁了吗?
技术成长误区:
• 只要把事情搞定了,成长是自然而然的事情——可能过段时间,你发现之前犯过的错误,后来一个都没有避免;
• 我只要努力,996甚至007,我就能够成长得比别人快——可能你发现你干得最多,但是并没有拿到最好的结果;
• 我尽力了,还是比别人慢,应该是我智商确实差一些——恭喜你,其实大家的智商并不会有太大差别;
• 别人表现好,或者晋升了,只不过是比我表达能力更强而已——我可以负责任地告诉你,这并不是仅仅是表达能力的问题。
“思考力”是程序员需要具备的一种至关重要的素质
思考力是一门很深的学问,包括认知科学,心理学、教育学、逻辑学,如果要系统化学习,是需要看很多书的,我推荐以下几本:
1.《金字塔原理:思考、表达和解决问题的逻辑》-[美] 芭芭拉·明托
2.《麦肯锡教我的思考武器》- [日] 安宅和人
3.《思维的本质》-[美]约翰·杜威
1. java,linux,数据结构和算法,数据库,网络通信与分布式计算的原理,这几类是比较重要的基础知识,我们在做方案设计、编码、问题排查中会运用得很多;
2. 设计模式,UML这个是对系统架构设计必要要掌握的知识,当你经历了很多大规模的软件系统设计,回到根本上,你会发现逃不出这一块的理论和工具;
3. 领域性的基本原则,比如我们上面提到的“钱货平衡”,“财务平衡公式”,“线下收银让消费者最快速度走人”,这种逻辑需要大家get到这些领域性的设计原理,甚至自己去总结出这种原理;
4. 关于管理学,人际沟通,心理学的一些基本原理,大家可以按照自己的实际需求去看一下。
如何训练出自己的知识树?
1. 一定要总结出自己的知识树,而不要盲从书本上的或者别人的
2. 习惯性总结
3. 推荐一个很常见的工具:xmind,把自己的树记录下来;
4. 训练自己的思维习惯和做事方式变得结构化
利用碎片时间/抓住工作的过程。
思考力有3个度:广度/深度/速度
1. 思考力对程序员的成长至关重要,团队和个人都需要有意或者无意识地提升思考能力。
2. 对程序员最重要的思考力有:原理性思维、结构化思维、反思性思维、扩展性思维、抓重点思维。
• 原理性思维是根基,因为没有搞懂的情况下所有的知识建构都是空谈;
• 结构化思维帮助我们建立了我们的知识树;
• 反思性思维不断对知识进行重构,是实现认知升级的必备条件;
• 扩展性思维可以提升知识的广度和深度;
• 抓重点思维可以加快知识的使用效率和传递效率;
3. 在提升思考力的实践中:
• 思考力提升最关键的是意识的转变;
• 要对思考力的提升充满信心;
• 多在工作中去锻炼思考力,不需要花太多额外的休息时间;
• 多相互分享;
• 团队Leader要团队同学的成长和把思考力提升作为最重要的内容,并拿出实际行动。
如何在工作中快速成长?
致工程师的10个简单技巧
“今天的最好表现,是明天的最低要求”
划重点:所谓直觉反射就是通过大量的逻辑反复训练,提升自己的直觉准确性,从狭窄的5%进入广阔的95%;
所谓改变习惯就是在触发条件发生进入下一个行为时,让自己做对选择题。
所谓时间管理就是找到不被打扰的时间用于投资自己的成长。
划重点:所谓提升注意力就是专注在目标事务上,直到产出预期的结果。
划重点:参与会议讨论就是在模拟机器学习,通过正反馈来优化自己的逻辑和观点。
划重点:跳出舒适区就是进入学习区,平衡挑战和技能从而达到心流体验
划重点:所谓职业规划,就是工作能力提升。
划重点:所谓时间换空间,就是慢慢来,持之以恒,成长最快。
总结:
以上10个认知升级,分别用一句话进行总结,完成自我认知升级:
所谓直觉反射,就是通过大量的逻辑反复训练,提升自己的直觉准确性,从狭窄的5%进入广阔的95%;
所谓以习为常,就是在触发条件发生进入下一个行为前,做对选择题;
所谓时间管理,就是找到不被打扰的时间用于投资自己;
所谓注意力,就是专注在目标事务上,直到产生期望结果;
所谓执行力,就是让自己先想明白,然后一步一步走下去;
所谓贵人,就是能够持续陪你一起输出高质量内容的人;
所谓会议,就是模拟机器学习思路,通过参与讨论获得正反馈来验证自己的观点;
所谓跳出舒适区,就是先跳出,然后进入学习区,平衡挑战和能力达到心流的体验;
所谓职业规划,就是提升工作需要的能力;
所谓时间换空间,就是慢慢来,持之以恒,成长最快;
有空阅读以下参考资料:
李笑来:《通往财富自由之路》
武志红:《武志红的心理学课》
刘润:《5分钟商学院》
特奥·康普诺利:《慢思考》
米哈里.契克森米哈赖:《心流:最优体验心里学》
技术三板斧:关于技术规划、管理、架构的思考
程序员如何自我学习?阿里资深技术专家这样做
从计算机知识到落地能力,你欠缺了什么?
阿里资深技术专家的10条感悟
你感觉不舒服的时候,就是成长的时候
1.一个人走的快,一群人走的远
《能力陷阱》
3.学习能力与思维模式是一个人的核心竞争力
3.2掌握优秀的学习方法
如何证明一个人有比较优秀的学习能力?学习做到目到,口到,心到。
3.3掌握搜索信息的有效方法
3.4具备优秀的批判思维模型
《批判性思维工具》
参考资料:
1.结对编程
2.李笑来的自学
3.怎么变成一个更好的程序员
4.找到高质量信息指引
如何量化考核技术人的 KPI?
为什么需要kpi?
技术KPI:
●业务贡献:包括需求把控,业务项目和业务创新。
● 技术贡献:包括设计重构、技术影响力、Code Review、创新提效和代码质量。
● 团队贡献:包括招聘、新人培养和团队氛围。
如何成为优秀的技术主管?你要做到这三点
「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。
和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的
开发规范:命名规范/统一IDE代码模板/Maven使用规范/代码Commit规范/统一API规范/异常处理规范/分支开发规范/统一日志规范/统一MYSQL开发规范/统一工具与框架
基于架构评审,我们的目标核心是要满足以下几点:
1. 设计把关,确保方案合格,各方面都考虑到了,避免缺陷和遗漏,不求方案多牛,至少不犯错。
2. 保证架构设计合理和基本一致,符合整体原则。
3. 维持对系统架构的全局认知,避免黑盒效应。
4. 通过评审发掘创新亮点,推广最佳实践。
关于技术层面,技术TL需要具备如下素养:
*技术视野良好,解决问题能力与架构设计能力出色。
*动手能力要强,学习能力出色。
在阿里做了五年技术主管,我有话想说
阿里有句土话“平凡人、非凡事”,技术团队同样如此,管理者的战略眼光、管理方法、人格魅力等,都会给团队的工作结果带来决定性的影响。
团队建设:teamLeader主动扛责任,让团队成员没有后顾之忧,让团队同学相信我可以搞定他们担心的事情,出了任何问题teamLeader可以来背锅,给自己的团队创造一个相对宽松和自由的工作空间,保护团队不被外部的各种杂事伤害到。
团队管理:作为一个团队的管理者,通常会有两种风格管理策略,简要概括为集权式的管理风格、放权式的管理风格。多数技术人员他们喜欢被领导,不喜欢被管理。
团队文化:《基业长青》对于一个企业而言,决定短期的是技巧,决定中期的是战略,决定长期的是文化。
接下来我希望给团队树立的文化是:
1.坦诚,公开,透明;
2.平等相处,消除等级感;
3.工作气氛轻松,团队关系和谐;
4.敢于担当,主动承担责任;
5.成就他人,乐于分享。
建立学习型的组织
《格鲁夫给经理人的第一课》、《创业维艰 : 如何完成比难更难的事》,这两本书有更多关于一对一沟通介绍
《创业维艰》