架构师成长之路:从学习到架构[上篇]

简介: 在你的技术成长之路上如何去学习,如何不断完善自己的技术栈,从程序员逐渐成长为架构师,需要怎样地去学习?本文蚂蚁金服技术经理于君泽将与大家一同分享技术人员学习的那些事。

对于技术人员的成长历程而言,每个架构师都需要从一步步学习并且积累经验,不断完善自己的能力。而对很多同学而言,往往在成长的历程中会经历很多困惑,本文来自中生代技术群(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

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

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

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

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

Q3 如何看待全栈学习?

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

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

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

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

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

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

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

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

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

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

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

Q9 推荐的code review形式及周期。

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

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

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

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

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

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

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

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

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



本文转载自中生代技术群(FreshmanTechnology)微信订阅号。


相关文章
|
4月前
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
高并发下的秒杀系统设计是一个复杂的挑战,涉及多个关键技术点。40岁老架构师尼恩在其读者交流群中分享了16个关键架构要点,帮助解决高并发下的秒杀问题,如每秒上万次下单请求的处理、超卖问题的解决等。这些要点包括业务架构设计、流量控制、异步处理、缓存策略、限流熔断、分布式锁、消息队列、数据一致性、存储架构等多个方面。尼恩还提供了详细的实战案例和代码示例,帮助读者全面理解和掌握秒杀系统的架构设计。此外,他还分享了《尼恩Java面试宝典》等资源,帮助读者在面试中脱颖而出。如果你对高并发秒杀系统感兴趣,可以关注尼恩的技术自由圈,获取更多详细资料。
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
|
5月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
84 0
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
高并发下,如何设计秒杀系统?这是一个高频面试题。40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试Shopee时遇到了这个问题,未能很好地回答,导致面试失败。为此,尼恩进行了系统化、体系化的梳理,帮助大家提升“技术肌肉”,让面试官刮目相看。秒杀系统设计涉及16个架构要点,涵盖业务架构、流量架构、异步架构、分层架构、缓存架构、库存扣减、MQ异步处理、限流、熔断、降级、存储架构等多个方面。掌握这些要点,可以有效应对高并发场景下的秒杀系统设计挑战。
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
|
3月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
71 18
|
3月前
x86体系架构学习
x86体系架构学习
|
4月前
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
49 1
|
5月前
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
144 10
|
15天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
14天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####