查看原文
其他

从学习到架构[上篇]

于君泽 中生代技术 2017-05-30

转载声明:本文为中生代技术群联合蚂蚁金服技术经理于君泽的原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:中生代技术群(FreshmanTechnology)。


话题:从学习到架构[上篇]

讲师:于君泽

职位:蚂蚁金服技术经理

简介:于君泽,蚂蚁金服高级技术专家、支付核算技术部负责人、成都研发中心技术团队创建者之一,先后负责或参与过转账类业务、账单类业务、社区支付、开放平台、支付平台、资金核算平台、类营销类支付工具的建设;之前有数年电信业务研发经验,涉及BSS|OSS|针对性营销等平台。个人感兴趣的方向:高并发、分布式系统、稳定性模式;内建质量、技术型管理。


我分享的主题是学习和架构,架构今天估计没有时间讲了。

先说学习,学习是一件有意思的事情。孔夫子说学而时习之,不亦乐乎!大意是说学到的东西有机会付诸于实践,这难道不是一件值得高兴的事情吗?这里面就蕴含了读书和实践的一个关系。


我的前老板兼敏友、导师大卫张有一系列关于学习的论述,参见http://www.ituring.com.cn/article/28775。比如前3年效应、 德雷福斯模型模型、 刻意锻炼Deliberate practice、 ADKAR模型等。我如果不去他的blog看看,我不可能记得全这些模型的样子,也不知道什么时候会应用到。但是它有一个影子在哪里,提醒我,最近的产出是低效还是高效,是否需要一定的刻意锻炼


德雷福斯模型


当谈到学习的时候,我脑袋里浮现了很多场景。


1、某个工程师用了2天时间,最后是因为一个配置的问题(此处会心一笑的人大有)--我跟这位同学说,你总结一下,他回答总结不了,因为这个问题最后是中间件团队去改的。----暴怒,见到鬼了,下次遇到这个问题咋办,我们的2天就这样悄无声息的成为沉默成本了?


2、第2个故事,关于罚款的故事。开会迟到咋办,罚款!不按时交周报咋办,罚款!简单粗暴!--我们都是成年人,不能有更优雅的方式麽?管理学大师大卫.张虽然不是罚款制度的公开倡导者,但是他也默默的支持了这一制度,因为它有效。这里面讲了一个非常朴素的道理,人类不期望被约束,同时自律是非常难的一个事情。为了维持罚款制度,我每周要观察大家发送周报的时间,我累不,非常累! 现在是某天想起了看看时间,其实这个制度已经非常难运行好。---这里面有一个问题,为啥要去监督?



3、关于周报的故事,为什么要写周报先不展开了。反正以前一直要写。某一天我们说不写了,肯定就没人写;我们说可以写也可以不写,基本也没有人写。因为写成了一种负担,甚至是为主管写,那么不写也罢。我曾说过,与其记流水账,不如不写。提倡写写思考,比如本周处理了一个线上问题,难道没有任何想法,深度缺陷分析?


4、人家说处处留心皆学问,可我们往往却视而不见。之前在3楼的走廊上我们曾把故障的分析张贴出来,期望走过路过的兄弟们能在某日回首之际能看看,可惜半年过去了,找一研发同学问之,你知道xx组遇到了某个故障问题吗?-不知道;某某同学的周报不是提了这个事情吗?--看了,没注意;那么知道走廊上汇总了我们半年的所有线上故障吗?-不知道,没看。这里面就有一个问题,从哪里学习,风景到处都是,却缺乏技术的敏锐度和观察力!


这些问题有没有解,各施各法,今天也不给答案。我们先看看古代人是如何谈论学习的。


满招损,谦受益。(《大禹谟》)

知之为知之,不知为不知,是知也。《论语·为政》


什么意思呢?


这2则是说谦虚的,虚怀若谷。知道就知道,一旦被捧为专家、大牛能不能说自己[unknown],是衡量能否走得更远的一把尺子。


敏而好学,不耻下问。《论语·公冶长》

知而好学,然后能才。 ——荀子


这2则在说好学、好问的问题。问问题不丢人,关键在于如何问。


反模式1:你对时局有何看法?

反模式2:因为语言争得面红耳赤!恨不能杀人!

反模式3:你们家缓存用的什么,用啥机房好,凡是能度娘的都在问。


徐昊说提个好问题,给个好答案。

我喜欢的提问模式是:对于xxx场景,我采用xxx方案,但是有xxx问题,我尝试xxx解决之,结果xxx;我考虑xxx,不知道其他人有何看法或者解法? ---一句话能把背景说清楚,结果直接问题xxx问题,有何解法,为了挖掘背景用了20分钟。和时间咋能做朋友呢(罗辑思维《时间的朋友)?


给个好答案也是有意思的事情。超卖(编者:超卖——电商用语,是指店内所载库存多于仓库实际库存则店内对应商品售罄时会有部分顾客的订单无货可发,这种现象称之为超卖。--引自知乎)问题我考虑xx。回答:你们应该招聘一个架构师... 所谓...


人类习惯按自己的经验提供答案,对方的场景和自己可能不一样,甚至差别很大。在提供答案的时候不宜过于武断。



循序而渐进,熟读而精思。《程氏家塾读书分年日程·朱子读书法》


读书有三到,谓心到,眼到,口到。三到之中,心到最急,心既到矣,眼口岂不到乎?朱熹《训学斋规》


口而诵,心而惟,朝于斯,夕于斯。《三字经》


学而不思则罔、思而不学则殆 《论语·为政》


这几则说的是学思结合,并要循序渐进,无终南捷径。从何处学?现在的网络媒体、自媒体、群、浩瀚书海、无数技术大会、公司内网.....


躺在那里的叫信息( information),只有内化为自己的才是知识(knowledge)。涓涓细流,饮多少全凭心意。


我个人看周报的习惯是没有干货的略过(100份也就剩下20份了),老板的要看,直接汇报给我的特别看;然后把这些信息和我们的规划、计划的关系在脑子里过一遍,或者在本子上画一画。


我特别留意兄弟团队犯了什么错,因为这个是千金难买的知识。还曾组织过对应的学习,也曾去代码版本管理软件比较前后2个版本的代码,最后发现是缺陷分析报告没有写到点子上,最致命的问题不是报告中那个。


这里特别多谈一句深度缺陷分析报告,太多的报告为了交差,检查问题的思路应调整为下一次这样的问题我们能不能一定规避。太多的报告的action是加强代码review,SQA的分析报告永远是绝大部分的问题是编码问题。


12-13年从转账业务线到核心平台,老板跟我讲他们要向兄弟团队学习,敬畏资金。听多了也略烦:)


但是我往心里去了,我在想新团队的生命线就是资金安全和稳定性。对于这部分知识我自己首先要进行掌握,我通过公司内部的2个分享平台,搜索关键字,读了几十份报告,并对其中好些UML图进行解剖,包括上面说的代码考古,尔后我在团队做了关于并发设计的分享、资损防护的分享。


TL们和架构师也是用对应的敬畏之心做事,每一行代码做code review坚持下来不容易,因为他们本身有大量的业务需求讨论,出具架构方案方面的工作。


三人行,必有我 师焉,择其善者而从之,其不善者而改之。《论语·述而》

弟子不必不如师,师不必贤于弟子,闻道有先后,术业有专攻,如是而已。《师说》


这部分说的是术业专攻,谦虚谨慎。文人相轻,也有技术同类相轻的。

有人讲如果我的老板换成谁xx,我不服;

还有人说如果xx转过来,我就走。


我只说一个道理,公司选择一个人做你的老板是肯定有考虑的,你有没有欣赏到呢?你是不是自己想的那么NB呢?如果是,怀才不遇!?--大卫张说,没有怀才不遇这件事!


从后端到前端、从C++到Java、从应用系统到机器学习,从大数据到云计算,吾生有涯而知无涯,欣赏,开放、包容,很多地方都可以学!


至于boss,当你带了团队就明白了,从自己做好到驱动团队做好,如果你招聘的都是尽在掌握的人,那么你自己就是天花板!敢于招聘在专业方向比自己强的才可以做更大的事业!(刘邦敢于用萧何、韩信、张良 、陈平!)--项目打仗的专业能力强刘邦N倍!


so,当你迎来一个新主管,你要想想于我能学到什么!


学贵专,宁精勿杂,宁专勿多,不以泛滥为贤。

书富如入海,百货皆有。有之精力,不能兼收尽取,但得其所欲求者尔。故愿学者每次作一意求之。——苏轼


这里讲的突出专业,一专多能,肯定是学不完的。有一个叫牛新庄的朋友专攻db2做到同时接多个银行的咨询,俨然是苏秦挂六国帅印;


对于应用系统研发知识要全面要也特有出众之处傍身比如分析建模能力、高并发处理还是数据库设计方面等等。始于平均,终于平淡,不可不慎!


总结一下,我的学习观:


一:胸怀宽广、谦虚向学

二:从信息的汪洋挑选知识

三:保持敏锐度,寻根究底、举一反三

四:学思结合、提炼归纳

五:包容欣赏、术业专攻

六:一专多能、宁精勿杂


关于架构师的培养,以及架构观点,且听下回分解!

(打字困啊)


the end

谢谢大家!



编者:里面的小故事相信做IT这一行的朋友也能感同身受, 最简练的是作者将自己的学习观总结为六句话,这六句话值得大家反复研读。以下是从直播现场整理的QA精彩集锦,请继续阅读。


Q&A

#1 想问下于老师,你是如何规划和制定自己的学习计划的?比如短期、长期计划,有没有一定的规律,如何去制定适合自己的学习计划和方案?


于:貌似朋友圈有个帖子,越是崇拜,越失去自我。关于学习计划,要从大目标来看,比如半年目标,如何分解到3个月、1个月;另外我建议学习和工作结合。


#2 如何成为某方面专家? 刻意练习?

于:有人说10000小时训练。这里就有刻意训练的部分,刻意练习特别提到了mentor的作用,并要形成反馈的闭环。1点,如果你要成为高并发网站方面的专家,你去tmall 淘宝,包括jd 还是在公司做OA系统,是没什么机会的,因为问题挑战促使进步;第2点,我如何能应聘到淘宝,我之前是做OA的,我的经验是首先要了解淘宝的技术,没吃个猪肉,总见过猪跑吧,不然就是猪头!我曾面试过一个同学,他把鲁肃分布式事务的分享pdf自己反复做推演,后来,他入职成功了。结论:要成为专家,要有环境,同时要行动。


#3 如何看待全栈学习?

于:一专多能,全栈是基于效率和组合的需要,但不是专业的需要。我认为可以发展全栈,我们公司也在做着尝试。也有一定成效,但是还是要有最强的技能和抓手。徐克还是那个大师的[三国]电影,里面孔明说的略懂,不是真的略懂,是谦虚。


#4“书富如入海 ,百货皆有”,于老师自己选择的原则能分享一下吗?

于:方面是知识面,兼容并包,跨界学习,我提供作管理的要读技术书,至少分布式理论、协议得知道一些;我也提倡架构师要听程序员的呐喊,不是做死架构,也要关注人。另一方面,结合专业,有人做数据库能做一辈子,要靠时间磨,从理论到实践,再到理论,形成闭环。


#5制定了计划可能被各种事情打扰,发现总是完不成怎么办?

于:打扰是常规,大卫张也说过要去拥抱它。关注工作的优先级,所谓重要非紧急的事情其实你要提前做,要不然就变成重要且紧急了;另外,完成不了或者修改任务,或者做调整,时间管理方面的书有。这里给一个小经验,比如做项目过程中,还有合作团队频繁做咨询,我们的处理方式就是一个人轮班一周,让其他人能集中精力,减少打扰。


#6 在公司工作一段时间后,感觉成长放缓,哪些方式可以尝试一下,让我突破成长的瓶颈、走出泥潭?

于:第1,关注产出,然后看成长;有时候没有成长是因为对问题域识别不够;第2,要容许休息一下,一张一弛,文武之道;第3:尝试新鲜的内容、新鲜的视角、新鲜的团队、包括换公司和换团队。


#7 请教于老师,对刚入行的架构师能否推荐3本书阅读。

于:不知道做什么领域,通用的领域的我特别建议看看分析模式、彩色建模之类的(建模能力是从分析到设计的衔接,我们谈架构谈设计实现比较多,忘掉了分析的方法),另外推荐程序员修炼系列,你得懂程序员,架构问题是一个复合的问题。纯正架构方面的,如果做网站我特别推荐淘宝同学写的几本分布式技术架构方面的书。总结 1:业务分析;2:懂程序员和研发;3arch模式的实践。


#8 刚才听你提到某人接银行咨询,你觉得擅长哪些技术,可以承接咨询,可以更有效解决工资之外的财务问题。

于:我刚才说问题咨询,没有特指银行。另外没有看懂工资之外的财务问题是什么问题,麻烦解释一下,谢谢。


#9 推荐的code review形式及周期。

于:按照内建质量的观点,应该及时反馈,但是基于成本的关系,也无明确周期或者一定之规。我建议是一个特性完成后做结对review。我们是做金融的,还有代码走读等double 模式。


#10 现在语言,技术那么多,如何选择一门有持续发展的技术线路?

于:大部分语言没有过时,martin flower(不知道打错了没)【编者注:应为martin fowler提倡1年学1门新语言,在最近的某大会上几位老师建议Java这样的和函数式编程各学一门,因为是不同的思维模式。我学了一点ROR,其它的准备学习。另外没有银弹,取决于你要做什么,成为什么样的人。


#11 当前技术日新月异,在一些新兴领域工作多年的老程序员还不及毕业一两年的同学, 老程序如何保持自己的先进性,而对众多的新兴技术,老程序员应该如何选择?

于:你拼体力拼不过,还可以拼技巧。一是成长为主管、自己创业等,虽然看起来代码都会写,经验模式的提炼还是跟时间有关系的;另外老程序员我觉得要做专业方向,比如研究所的一些老干部,国外的一些50岁还在战斗的同志,要注意,是兴趣而不是生存问题,这样就没什么压力了。


#12 于老师,我觉得我还是要再问一个问题。你感到中年危机了吗?你怎么对待?为什么大家叫你导演?

于:没有,上面看看大卫,下面看看山丘,不知中年将至矣。至于导演这个title,忘掉它,架构师也是一个title。另外要注意标签,一旦你是导演的标签,反而别人会觉得你是不是不好好工作的。笑看人生!


#13 如何在每天看似打杂的任务中学习,提升自我价值?

于:有时间上微信,有时间学习、有时间思考打杂,说明时间已经很多了。每天的事情是点滴的,到一定阶段进行复盘,我是不是可以做得更好,可以通过工具改进;看似打杂的问题理清线索,抓到关键目标和问题的关键方面等等。




下期分享预告

分享讲师:陈显铭(花名:山丘)

公司岗位:蚂蚁金服-技术专家

个人经历:从事研发工作7年,资深程序员,爱思考,爱黑人。

分享话题:性能优化中几个概念和招式

话题简介:主要从性能优化常见模式,压测常见模型,全链路压测技术分解三个方面讲解。内容很多,目的在于让大家有个全局的认识;深入度上面稍微欠缺,不过对日常的性能分析已经足够了。

分享时间:2016年1月14日




转载请包含公众号二维码



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存