不止代码,职业发展黄金手册

花了小半天时间,读完了阿里人出品的《不止代码,职业发展黄金手册》,记录下其中的诸多闪光点。

如何快速成长为技术大牛?

做的更多,做的比你主管安排给你的任务更多。

  1. 需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点

  2. 问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理

  3. 方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案

熟悉端到端,熟悉更多的系统、业务、代码

自学更多,比如垃圾回收等应用到项目中

Do better

    比如重复代码太多,是否可以引入设计模式?

   系统性能一般,可否进行优化?

    目前是单机,如果做成双机是否更好?

     版本开发质量不高,是否引入高效的单元测试和集成测试方案?

     目前的系统太庞大,是否可以通过重构和解耦改为3 个系统?

     阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?

如何避免让战术上的勤奋掩盖战略上的懒惰

关键问题点:

    为什么你的知识积累不了?

    同样实践,效果不一样?

    知识+ 逻辑就基本等于你的能力

    好的逻辑又怎么来?●● 实践●● 复盘

大学毕业5 到10 年teamLeader需要的技能:

●● 能对所负责领域的业务特点、发展趋势、友商竞争分析有很好的洞察?能知道这个业务领域的客户是谁?他们的需求是什么?他们的痛点是什么?所以,这个TL 应该需要学习《咨询的奥秘》、《探索需求》、《系统化思维导论》。对于技术型的TL,还应该了解《成为技术领导者:掌握全面解决问题的方法》。

●● 服务于特定领域的客户,我们需要能了解我们的客户企业架构、业务知识。要了解清楚规划的产品、服务,什么才是客户所需要的。那么,从理论上,我们是否应该学习一些TOGAF、NGOSS、ITIL 等业务理论以及业务知识?

●● 作为 TL, 是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板(或者投资人)说清楚、讲明白?并争取到老板的同意,包括资金、人力资源等。对于,能否把事情讲明白,我们可能需要学习《金字塔原理》,并能非常清晰、有逻辑性地进行表达与沟通。当然,有些业务发展的事不一定特别有逻辑,是需要摸索、尝试,那么你是否能将一个不确定的领域说服老板并获得支持,我们又需要什么?《博弈论》、《影响力》等。

●● 获得老板支持后,就需要开始带着兄弟们干活了。作为带头人,你看我们是否需要能将业务趋势、客户痛点进行业务建模好让团队的PD、技术都能理解?

在做业务进一步深入分析,可能就需要学习《领域驱动设计: 软件核心复杂性应对之道》、《实现领域驱动设计》、《企业应用架构模式》、《恰如其分的软件架构》等等。

●● 做完业务设计后,开始要带着团队做技术方案设计、接口设计以及编码实现等。这个过程,TL 又需要具备软件项目管理的能力。无论是《PMBOK 指南》,还是《敏捷软件开发》、《人月神话》、《程序开发心理学》,相信总归还是会有点帮助的。

●● 对于一些有国际化要求的公司,还需要再学习英语吧!

●● 嗯,还需要有个好的身体,还需要经常锻炼,学习科学的健身吧。至少我明白了一个道理,以前我都是跟自己说,等这段时间过了,闲下来去锻炼一下。其实,我发现,越是忙的时候,越需要锻炼身体!

●● 另外,在这 10 年内,比较关键的是——你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验?在这些经历里,你可能会遇到这些困难与挑战:团队磨合的挑战、技术方案上的争执、平台优先 or 业务优先的博弈、低落的团队氛围、个人的低谷等等。这些困难与挑战,你是退缩了?还是有成长?在带团队时,再次面临这些挑战时,这时你是否有解或者有勇气了?

技术变化那么快,程序员如何做到不被淘汰?

业务、技术与软件系统的价值链

 

通俗的讲业务就是用户的痛点,是业务提供方(比如公司)的盈利点。而技术则是解决问题的工具和手段。

架构师需要审时度势,仔细衡量正确性、大规模、可用性三者的关系

程序员想要工作出业绩,必须认清楚系统背后的业务价值,按价值去梳理工作优先级,而不是像我一般过度纠结细节,追求技术理想化从价值出发-找寻学习与工作的新思路,明确自身的业务相关主体,向前一步,为更大的价值负责,像架构师一样思考,用价值找寻重心,学会连接,构建体系。

加班越久故障越多,如何跳出程序员的恶性循环?

解决方案落地和数据运营需求细化解决方案:

● 拆分成最小可交付产出,尽量避免一个需求做了 1 个多月,才去找PD 和用户验收。

● 随时拥抱用户:迭代式产出,交付即验收,让不准确性降到最低,在错误误差最小的时候修正。

●重点跟进质量管理和运营:透明数据,鼓励团队尽早尽快修复 bug,并有严格的上线前bug 解决率标准。

● 尽全力保证线上发布成功率。

如何进一步提升?

数据有魅力,研发数据也一样,我们使用它就是为了两个目的:一是保证质量;二是确保交付的速率。

如何在阿里技术面试中脱颖而出?

度量优秀人才的3个关键:技能,潜力,软实力

软实力这里其实包含了性格,执行力,领导力等方方面面,它代表了候选人

是否能快速融入团队,拿到结果,带领团队攻城拔寨,激励和影响身边的人变得更加优秀等等

面试应该做的事

● 问已经发生的事情

● 问题解决思路

● 少问多听

在招聘中有一个重要的STAR 原则:

STAR 原则

●处境 (situation) 在什么样的环境下

● 任务 (task) 接到了什么样的任务

●行动 (action) 然后具体怎么落地的

●结果 (result) 拿到了什么结果

我们尽量问清楚对方在什么样的环境下接到这个任务,接到以后是做了什么事情,最后的结果是什么样子的。

鉴别方式

● 更多的关心What/How/Why

● 细节!细节!细节!

技术人如何不断成长?

● 保持良好的习惯,不忘总结和提升

使用开源项目的正确姿势,血和泪的总结

选:如何选择一个开源项目?

聚焦是否满足业务?

 

聚焦是否成熟

用:如何使用开源方案?

深入研究,仔细测试

可以从如下几方面进行研究和测试:

1)通读开源项目的设计文档或者白皮书,了解其设计原理

2)核对每个配置项的作用和影响,识别出关键配置项

3)进行多种场景的性能测试

4)进行压力测试,连续跑几天,观察cpu、内存、磁盘io 等指标波动

5)进行故障测试:kill,断电、拔网线、重启100 次以上、倒换等

小心应用,灰度发布

做好应急,以防万一

改:如何基于开源项目做二次开发?

保持纯洁,加以包装

发明你要的轮子

前端工程师的未来在哪里?

不止代码,职业发展黄金手册_第1张图片

观点

1. 继续分化(领域、行业、技术栈)

2. 继续融合(端技术、Web 全栈技术、人工智能与端技术)

3. 核心不变(计算机科学本质、软件工程思想与实践、程序员职业素养)

不止代码,职业发展黄金手册_第2张图片

 

相关资源

●Web开发这十年:http://www.infoq.com/cn/articles/web-development-ten-years

●GUI应用架构十年变迁:https://segmentfault.com/a/1190000006016817

●大话前端时代一:https://halfrost.com/vue_ios_modularization/

●写给初学前端工程师的一封信:https://zhuanlan.zhihu.com/p/28536429

●母鸡与前端工程师:http://www.ruanyifeng.com/blog/2016/07/hen-andfront-end-engineer.html

●李开复人工智能预言:http://tech.sina.com.cn/it/2017-05-20/doc-ifyfkqks4361454.shtml

●《无界面交互》:https://book.douban.com/subject/26947799/

前端 Leader 如何做好团队规划?——阿里内部培训总结公开

●业务压力巨大,前端是瓶颈,如何做合适的规划?

●如何提高规划的成功率?

● 规划的雷区是什么?

●如何寻找规划的线索?

●我的老板不是前端,如何做出被认可的成绩?

 

一般技术规划路径如下:

不止代码,职业发展黄金手册_第3张图片

一、先从团队特征说起

1. 识别团队特征

如何做?

●寻找团队共同目标

●增强团队协同

●明确清晰短期目标与长期目标

从团队特征中寻找规划的边界:

 

不止代码,职业发展黄金手册_第4张图片

二、寻找规划线索

 

不止代码,职业发展黄金手册_第5张图片

1. 向上管理

与老板注意沟通的有效与质量,提问题最好带着初步的解决方案,业务/ 产品老板的时间有限,又存在“语言差”,相对复杂的内容务必准备 PPT。

2.脑暴共创

3. 关注业务痛点

三、价值聚焦

1. 前端规划四问

1. 要解决什么核心业务问题?

2. 创造什么核心价值?

3. 为什么要做这件事?为什么是我们做?

4. 是单点,还是相对通用?

5. 以什么样的模式和方式来解决问题或创造价值?

6. 业务边界,系统边界如何取舍?

7. 问题在集团的大图位置和现状是什么样的?

8. 优势?劣势?

9. 终局思考和实现路径是什么样的?

结合前端,我个人认为有核心四问:

1. 做成了会如何?(核心价值、终局构想)

2. 是我团队最重要的事吗?

3. 有没有更简单的方案?

4. 与业务的链接是什么?

2. 来自大牛灵魂的拷问

● 要让评审者学到点什么

● 在前端技术的横向影响

● 对业务中其他角色或业务的影响

● 对未来的判断

● 是否是重复造轮子

● 是否是“技术投机”,缺乏业务场景适用性思考

3. 规划推导

规划推导分正推:从线索-> 本质痛点或问题-> 解决方案-> 目标,反推:从目标-> 解决方案-> 本质痛点或问题-> 线索。

所有的线索都是现象,你需要去剖析现象背后本质,思考:

●什么问题导致了出现这些现象?

●痛点够不够痛?

解决方案的设计要思考:

●调研是否充分,集团是否有现成方案?

●是自己做,还是引进?还是引进后二次定制?

●预计投入资源,投入产出比如何?

目标的设计要思考:

●能够体现规划价值

● 可量化,可衡量,有影响

●可达到

一般写规划时候,我们是先写目标,再写解决方案,而在实际推导规划时,一般是有个大概的解决方案,然后预判可能达到的目标。

 

4. 控制力

四、规划落锤

● 规划内容按照重要性排序

●产出规划 PPT

● 产出关键里程牌时间点

● 排兵布阵、资源调度

1. 长期规划

明确团队技术体系的演进方向,穷尽所有高价值的事,每个季度复盘调整这张大

图,让团队有共同的目标。

拔赤老师建议“ 技术规划以一年为最小单位,每季度做详细复盘,跟的勤,就不

怕跟丢”。

2. 勇气与吸引力法则

吸引力法则(你关注什么,就会将什么吸引进你的生活)告诉我们,有勇气去要

求,笃定你的判断,有策略的执行,周围自然会发生你所希望的变化。所以关注于对

的事,别被困难吓倒。

一位优秀前端的自我修养

编程能力,就是用代码解决问题的能力,你编程能力越强,就能解决越复杂的问题,细分又有调试、算法、数据结构、OS 原理等这些的支撑架构能力,则是解决代码规模的问题,当一个系统足够复杂,你会写每一块,能解决每一个问题,不等于你能搞定整个系统,这就需要架构能力,

架构能力包含了一些意识,比如解耦、接口隔离,也包含认识业务建立抽象模型,也有一些常见的模式,比如经典的 MVC,还有设计层面,面向对象、设计模式等等。

最后工程能力,则是解决协作的问题,当系统规模更大,光靠一个人,是没办法完成的,如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿?这个工程化建设,往往会跨越多个业务,以汇报关系上的团队为单位来做。包括前后端解耦,模块化,质量保证,代码风格,等等。

如何建立自己的知识体系呢?我个人总结的经验,是下面几个步骤:

第一步,寻找线索。

第二步,是建立联系。

我们找对应关系的方式有以下几个依据:

●美感

●完备性

●操作同一组数据

第三步,是分类。

第四步,是追本溯源。

能力培养其实重要性很高,但是其实说起来,内容却很少。只有两点: 教材、训练。

如果面临困境,可以选择系统训练来提升自己,但是对大部分人来说,可能更乐于选择一个一个变通的办法: 养成习惯,让工作变得更有挑战。

选择一份对自己来说具有挑战性的工作,正面解决问题。

如何成为一名顶尖的阿里架构师?

专职架构师的职责

微软对架构师有一个分类:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect) 和解决方案架构师SA (SolutionArchitect)。这个分类是按照架构师专注的领域不同而划分。在阿里除了EA 之外的领域大家可能会同时涉及到,只是不同的时期偏重点不一样。

职责一:全局的技术规划

职责二:统一的方法& 规范& 机制

职责三:完备的基础构建

职责四:落地的规划才是架构

专职架构师的权利

专职架构师的考核

考核一:全局的技术规划

考核二:统一的方法& 规范& 机制

考核三:完备的基础构建

考核四:落地的规划才是架构

从无到有的是架构;从表到里的是抽象;从粗到细的是设计

哪些技术好书值得一读再读?这有一份经典书单

  1. 推荐书籍:《Effective Software Testing》
  2. 推荐书:《程序员修炼之道- 从小工到专家》
  3. 推荐书籍:《设计模式之禅》
  4. 推荐书籍:《Spoken Language Processing: A Guide to Theory, Algorithm and System Development》
  5. 推荐书籍:《机器学习导论》
  6. 推荐书籍:《Reinforcement Learning: An Introduction》本书是强化学习领域的最经典书籍,它既是初学者打好强化学习基础的必读著作,也是强化学习研究者们需要温故而知新的强化学习宝典。该书的作者Richard S. Suttion 和Andrew G. Barto 是强化学习顶尖学者的代表,在此领域深耕超过30 年。这本书详细地介绍了强化学习发展历程、经典方法以及现实应用。
  7. 推荐书籍:《Programming Rust》系统编程——也就是在资源受限情况下,实现安全、稳定和高性能(并发)系统——并不为大部分程序员所熟知。Rust 是一门新兴的系统编程语言,它为安全性和并发而设计,提供高层的抽象,同时有C/C++ 的性能。
  8. 推荐书籍:《Machine Learning: A Probabilistic Perspective》大数据公司的每一个项目都需要自动化的数据分析方法。机器学习提供了相应的解决方案,不仅可以自动检测数据中的模式,也可以使用学习到的模式来预测未覆盖到的数据。推荐书籍:《Architecture of a Database System》此书是数据库图灵奖获得者Stonebraker 老爷子在2007 年完成的,全书不长(119 页),但极具功底。老爷子通过此书,向大家剖析了一个成熟数据库系统的整体架构,以及数据库的各个核心模块,包括:SQL 与优化器、内存和存储管理、事务和并发控制等的设计原则和实现方式,是全面了解数据库系统的第一选择。
  9. 推荐书籍:《从优秀到卓越》
  10. 推荐书籍:《为什么精英都是时间控》
  11. 推荐书籍:《创新者的窘境》
  12. 推荐书籍:《魔鬼经济学》提高我们在日常中提升思考深度很有帮助
  13. 推荐书籍:《孙子兵法》从道,天,地,将,法的角度来观察战略与兵势,是古今中外通用的道理,这本书属于读一本书可以代表一百本书的典范。
  14. 推荐书籍:《创造自然》
  15. 推荐书籍:《浮生六记》

 

--完--

 

 

 

你可能感兴趣的:(读书笔记)