花了小半天时间,读完了阿里人出品的《不止代码,职业发展黄金手册》,记录下其中的诸多闪光点。
做的更多,做的比你主管安排给你的任务更多。
需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点
问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理
方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案
比如重复代码太多,是否可以引入设计模式?
系统性能一般,可否进行优化?
目前是单机,如果做成双机是否更好?
版本开发质量不高,是否引入高效的单元测试和集成测试方案?
目前的系统太庞大,是否可以通过重构和解耦改为3 个系统?
阿里中间件有一些系统感觉我们也可以用,是否可以引入 ?
关键问题点:
为什么你的知识积累不了?
同样实践,效果不一样?
知识+ 逻辑就基本等于你的能力
好的逻辑又怎么来?●● 实践●● 复盘
●● 能对所负责领域的业务特点、发展趋势、友商竞争分析有很好的洞察?能知道这个业务领域的客户是谁?他们的需求是什么?他们的痛点是什么?所以,这个TL 应该需要学习《咨询的奥秘》、《探索需求》、《系统化思维导论》。对于技术型的TL,还应该了解《成为技术领导者:掌握全面解决问题的方法》。
●● 服务于特定领域的客户,我们需要能了解我们的客户企业架构、业务知识。要了解清楚规划的产品、服务,什么才是客户所需要的。那么,从理论上,我们是否应该学习一些TOGAF、NGOSS、ITIL 等业务理论以及业务知识?
●● 作为 TL, 是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板(或者投资人)说清楚、讲明白?并争取到老板的同意,包括资金、人力资源等。对于,能否把事情讲明白,我们可能需要学习《金字塔原理》,并能非常清晰、有逻辑性地进行表达与沟通。当然,有些业务发展的事不一定特别有逻辑,是需要摸索、尝试,那么你是否能将一个不确定的领域说服老板并获得支持,我们又需要什么?《博弈论》、《影响力》等。
●● 获得老板支持后,就需要开始带着兄弟们干活了。作为带头人,你看我们是否需要能将业务趋势、客户痛点进行业务建模好让团队的PD、技术都能理解?
在做业务进一步深入分析,可能就需要学习《领域驱动设计: 软件核心复杂性应对之道》、《实现领域驱动设计》、《企业应用架构模式》、《恰如其分的软件架构》等等。
●● 做完业务设计后,开始要带着团队做技术方案设计、接口设计以及编码实现等。这个过程,TL 又需要具备软件项目管理的能力。无论是《PMBOK 指南》,还是《敏捷软件开发》、《人月神话》、《程序开发心理学》,相信总归还是会有点帮助的。
●● 对于一些有国际化要求的公司,还需要再学习英语吧!
●● 嗯,还需要有个好的身体,还需要经常锻炼,学习科学的健身吧。至少我明白了一个道理,以前我都是跟自己说,等这段时间过了,闲下来去锻炼一下。其实,我发现,越是忙的时候,越需要锻炼身体!
●● 另外,在这 10 年内,比较关键的是——你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验?在这些经历里,你可能会遇到这些困难与挑战:团队磨合的挑战、技术方案上的争执、平台优先 or 业务优先的博弈、低落的团队氛围、个人的低谷等等。这些困难与挑战,你是退缩了?还是有成长?在带团队时,再次面临这些挑战时,这时你是否有解或者有勇气了?
通俗的讲业务就是用户的痛点,是业务提供方(比如公司)的盈利点。而技术则是解决问题的工具和手段。
架构师需要审时度势,仔细衡量正确性、大规模、可用性三者的关系
程序员想要工作出业绩,必须认清楚系统背后的业务价值,按价值去梳理工作优先级,而不是像我一般过度纠结细节,追求技术理想化从价值出发-找寻学习与工作的新思路,明确自身的业务相关主体,向前一步,为更大的价值负责,像架构师一样思考,用价值找寻重心,学会连接,构建体系。
解决方案落地和数据运营需求细化解决方案:
● 拆分成最小可交付产出,尽量避免一个需求做了 1 个多月,才去找PD 和用户验收。
● 随时拥抱用户:迭代式产出,交付即验收,让不准确性降到最低,在错误误差最小的时候修正。
●重点跟进质量管理和运营:透明数据,鼓励团队尽早尽快修复 bug,并有严格的上线前bug 解决率标准。
● 尽全力保证线上发布成功率。
数据有魅力,研发数据也一样,我们使用它就是为了两个目的:一是保证质量;二是确保交付的速率。
如何在阿里技术面试中脱颖而出?
度量优秀人才的3个关键:技能,潜力,软实力
软实力这里其实包含了性格,执行力,领导力等方方面面,它代表了候选人
是否能快速融入团队,拿到结果,带领团队攻城拔寨,激励和影响身边的人变得更加优秀等等
● 问题解决思路
● 少问多听
在招聘中有一个重要的STAR 原则:
●处境 (situation) 在什么样的环境下
● 任务 (task) 接到了什么样的任务
●行动 (action) 然后具体怎么落地的
●结果 (result) 拿到了什么结果
我们尽量问清楚对方在什么样的环境下接到这个任务,接到以后是做了什么事情,最后的结果是什么样子的。
鉴别方式
● 更多的关心What/How/Why
● 细节!细节!细节!
技术人如何不断成长?
● 保持良好的习惯,不忘总结和提升
使用开源项目的正确姿势,血和泪的总结
聚焦是否满足业务?
聚焦是否成熟
深入研究,仔细测试
可以从如下几方面进行研究和测试:
1)通读开源项目的设计文档或者白皮书,了解其设计原理
2)核对每个配置项的作用和影响,识别出关键配置项
3)进行多种场景的性能测试
4)进行压力测试,连续跑几天,观察cpu、内存、磁盘io 等指标波动
5)进行故障测试:kill,断电、拔网线、重启100 次以上、倒换等
小心应用,灰度发布
做好应急,以防万一
保持纯洁,加以包装
发明你要的轮子
前端工程师的未来在哪里?
观点
1. 继续分化(领域、行业、技术栈)
2. 继续融合(端技术、Web 全栈技术、人工智能与端技术)
3. 核心不变(计算机科学本质、软件工程思想与实践、程序员职业素养)
相关资源
●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 如何做好团队规划?——阿里内部培训总结公开
●业务压力巨大,前端是瓶颈,如何做合适的规划?
●如何提高规划的成功率?
● 规划的雷区是什么?
●如何寻找规划的线索?
●我的老板不是前端,如何做出被认可的成绩?
一般技术规划路径如下:
1. 识别团队特征
如何做?
●寻找团队共同目标
●增强团队协同
●明确清晰短期目标与长期目标
从团队特征中寻找规划的边界:
1. 向上管理
与老板注意沟通的有效与质量,提问题最好带着初步的解决方案,业务/ 产品老板的时间有限,又存在“语言差”,相对复杂的内容务必准备 PPT。
2.脑暴共创
3. 关注业务痛点
1. 要解决什么核心业务问题?
2. 创造什么核心价值?
3. 为什么要做这件事?为什么是我们做?
4. 是单点,还是相对通用?
5. 以什么样的模式和方式来解决问题或创造价值?
6. 业务边界,系统边界如何取舍?
7. 问题在集团的大图位置和现状是什么样的?
8. 优势?劣势?
9. 终局思考和实现路径是什么样的?
结合前端,我个人认为有核心四问:
1. 做成了会如何?(核心价值、终局构想)
2. 是我团队最重要的事吗?
3. 有没有更简单的方案?
4. 与业务的链接是什么?
● 要让评审者学到点什么
● 在前端技术的横向影响
● 对业务中其他角色或业务的影响
● 对未来的判断
● 是否是重复造轮子
● 是否是“技术投机”,缺乏业务场景适用性思考
规划推导分正推:从线索-> 本质痛点或问题-> 解决方案-> 目标,反推:从目标-> 解决方案-> 本质痛点或问题-> 线索。
所有的线索都是现象,你需要去剖析现象背后本质,思考:
●什么问题导致了出现这些现象?
●痛点够不够痛?
解决方案的设计要思考:
●调研是否充分,集团是否有现成方案?
●是自己做,还是引进?还是引进后二次定制?
●预计投入资源,投入产出比如何?
目标的设计要思考:
●能够体现规划价值
● 可量化,可衡量,有影响
●可达到
一般写规划时候,我们是先写目标,再写解决方案,而在实际推导规划时,一般是有个大概的解决方案,然后预判可能达到的目标。
● 规划内容按照重要性排序
●产出规划 PPT
● 产出关键里程牌时间点
● 排兵布阵、资源调度
明确团队技术体系的演进方向,穷尽所有高价值的事,每个季度复盘调整这张大
图,让团队有共同的目标。
拔赤老师建议“ 技术规划以一年为最小单位,每季度做详细复盘,跟的勤,就不
怕跟丢”。
吸引力法则(你关注什么,就会将什么吸引进你的生活)告诉我们,有勇气去要
求,笃定你的判断,有策略的执行,周围自然会发生你所希望的变化。所以关注于对
的事,别被困难吓倒。
一位优秀前端的自我修养
编程能力,就是用代码解决问题的能力,你编程能力越强,就能解决越复杂的问题,细分又有调试、算法、数据结构、OS 原理等这些的支撑架构能力,则是解决代码规模的问题,当一个系统足够复杂,你会写每一块,能解决每一个问题,不等于你能搞定整个系统,这就需要架构能力,
架构能力包含了一些意识,比如解耦、接口隔离,也包含认识业务建立抽象模型,也有一些常见的模式,比如经典的 MVC,还有设计层面,面向对象、设计模式等等。
最后工程能力,则是解决协作的问题,当系统规模更大,光靠一个人,是没办法完成的,如何保证几个高手互相能够配合好?如何保证项目里面水平最差的人不拖后腿?这个工程化建设,往往会跨越多个业务,以汇报关系上的团队为单位来做。包括前后端解耦,模块化,质量保证,代码风格,等等。
第一步,寻找线索。
第二步,是建立联系。
我们找对应关系的方式有以下几个依据:
●美感
●完备性
●操作同一组数据
第三步,是分类。
第四步,是追本溯源。
能力培养其实重要性很高,但是其实说起来,内容却很少。只有两点: 教材、训练。
如果面临困境,可以选择系统训练来提升自己,但是对大部分人来说,可能更乐于选择一个一个变通的办法: 养成习惯,让工作变得更有挑战。
选择一份对自己来说具有挑战性的工作,正面解决问题。
专职架构师的职责
微软对架构师有一个分类:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect) 和解决方案架构师SA (SolutionArchitect)。这个分类是按照架构师专注的领域不同而划分。在阿里除了EA 之外的领域大家可能会同时涉及到,只是不同的时期偏重点不一样。
职责一:全局的技术规划
职责二:统一的方法& 规范& 机制
职责三:完备的基础构建
职责四:落地的规划才是架构
专职架构师的权利
专职架构师的考核
考核一:全局的技术规划
考核二:统一的方法& 规范& 机制
考核三:完备的基础构建
考核四:落地的规划才是架构
从无到有的是架构;从表到里的是抽象;从粗到细的是设计
哪些技术好书值得一读再读?这有一份经典书单
--完--