【精选转载 】 | 作者 /阿里云MVP社区
快狗打车CTO沈剑的直播分享文字总结分享与你!
沈剑,公众号“架构师之路”的作者,曾任百度高级工程师和58同城高级架构师、技术委员会主席、技术学院优秀讲师,现为到家集团技术委员会主席和技术VP,同时也是快狗打车的CTO。本文是沈剑老师在阿里云的直播中分享的一些自己关于架构师的看法和成为架构师的心路历程的第二部分。
第一部分:点击这里, 点击本文“阅读原文”可以观看沈剑老师本次分享的视频录播哟!
1 什么样的人适合做架构 师?
好多同学会有类似“我适不适合”的问题,比如:走技术,还是走管理?走深度,还是走全栈?带项目,还是带业务?沈剑老师认为每个人的个人情况不同,这类问题没有标准的答案,但是可以通过问自己一些问题来分析自己。自己不适合,主要需要考虑两个方面: 我喜欢什么和我擅长什么 。
如果不知道自己擅长什么,不知道自己想要什么,可以问自己几个问题:把它当做职业,还是事业?解决技术问题,还是解决业务问题的时候更有成就感?自己单干,帮助团队成果,哪一个更有成就感?这些问题是要自己想清楚的,别人能你方向和经验,但是没法给你答案。走技术,还是走管理?对于这个问题,可以想一下是在做技术的时候还是带团队成长更加兴奋。走深度,还是走全栈?这个问题,可以想下是深挖一个技术细节更加兴奋还是学习各种新技术更加兴奋。带项目,还是带业务?这个问题考虑下是项目组按时交付更让你兴奋还是带领一个业务完成各种考核指标更让你兴奋。做一件事情的时候,口头禅是“我应该”、“我可以”还是“我想要”。他们的主要差别是在于主动去做和被动去做,“我应该”、“我可以”是相对被动的,而“我想要”是主动的。以上问题至少可以得出“我喜欢什么”这个问题的答案。
找到“我喜欢什么”这个问题的答案后,我们还要考虑“我擅长什么”。所以还要一些问题,这些问题是帮助自己找到自己擅长的:问自己,擅长搞技术,还是带团队?问同事,问领导,对自己的哪些产出更满意?看历史,做项目带业务,结果如何?上面有的问题是问自己的,有的是问其他人的,自我觉察可能没有那么准确,这时候可以问领导和同事,对自己的哪些产出更加满意,过往的成绩是不会骗人的。在找到自己擅长的过程中,心里要有谱,我在做什么的时候是容易的,压力没那么大的。
2 架构师这条路有什么坑?
很多人会问走架构师这条路有什么坑。比如,对于架构师来说,写代码还是不写代码? 沈剑老师认为 架构师是需要写代码的,且架构师要对业务非常了解,且业务中最核心、最关键的代码最好是架构师来写,且这个能力是一个架构师的核心竞争力。如果真的没有时间来写,也要Review这块代码,并且进行把关,否则很有可能不同部门之间会造成对业务逻辑的认知偏差 。
另一个问题,写PPT,还是不写PPT?沈剑老师认为这个问题与写不写代码的问题不矛盾,PPT是一定要写的,这本身也是一种能力。抽象、总结、沉淀、传承,本身就是一个架构师的核心职责之一。沈剑老师认为作为一个架构师,架构文档写不好,架构图画不好,不是一个合格的架构师。包括文档也一样,是对自己工作的总结,是对自己负责,也是对其他人的负责。写代码、写材料、写文档都是一样的,是不矛盾的,架构师都需要做,而这也是当前很多架构师需要进步的地方。
还有一个问题:单干,还是带团队一起成长?沈剑老师认为,很多大型公司的代码,是无法一个人写的,一定是团队在作战。在大的公司,架构师是一定要带团队的。而且在很多公司,架构师和带团队也是没法分开的,如果单干的话很多复杂的系统是无法完成的。架构师在带团队一起成长的过程中也获得成就感,对自己的成长也有帮助。
3 如何成为一名优秀的架构师?
要想成为一名优秀的架构师,首先会遇到的一个问题:使用最先进的技术,还是使用适合的技术?沈剑老师在文章中经常提到的一句话,架构不只是设计而来的,而是演进而来的。在做架构工作中要避免一个问题:不针对业务进行架构,比如突然接触到一个高深的技术,脑子一热就想要用到业务中。要知道架构是为了解决问题的,不是为了技术来架构,你学到的新的技术,有时候并不与业务相适应。一些架构师倾向于使用最前沿的技术,但是这些技术往往不是很稳定。对于新技术我们要去学习,要去关注,要去研究,但是与将其应用在线上是两回事。新技术对于个人履历来说是加分项目,但是新技术应用到线上要慎重,作为一个架构师要对整个业务负责,而不是单纯的为了给自己的履历加分就置业务于不顾。总的来说, 学习新技术与应用到线上是两回事,我们不能将两者定性的联系起来,架构师为了自己的履历而一心的去使用新技术,有可能会给运维、测试等部门带来不必要的麻烦 。
另外一个问题,做架构师是否需要听产品的“唠叨”?沈剑老师认为要多和产品去沟通,去问清楚为什么要这么做,这么做技术的难度大不大等等,可以从架构的角度给产品一些反向建议,以优化产品的功能来达到优化架构的功能。比如说秒杀的例子,这种业务能否异步呢?比如说下单之后要在一定时间内付款,而不是需要立马支付,这样子把下单和支付分开,大大降低了并发,给架构的压力也小了许多。
很多架构师在架构的过程中会出现较真的现象,试图做完美的系统。沈剑老师认为我们要依据二八原则, 解决主要矛盾为优先,因为人无完人,架构也没有面面俱到的架构 。如果为了一个出现概率千分之一的问题,使架构复杂了二十倍,那么这个投入是不划算的,拥有太多的what if,系统就没有做了,没有完美的系统。比如拿58同城为例,现在的架构跟十年前的架构肯定是不同的,但是就算现在回头再去设计十年前58同城的架构,仍然会是一样的,架构是结合业务的,脱离了业务的架构设计,都是耍流氓。
4 Q&A
问题(1):现在有些leader没有让团队成长的意思。 沈剑:个人认为leader最核心的职责就是让员工成长,帮助员工成长,帮助员工搭台唱戏。
问题(2):golang和C++哪个更适合服务端? 沈剑:脱离业务说架构是耍流氓,而且我认为架构跟语言关系不大。个人的建议是web侧和服务侧都用java是比价合适的,因为java的技术栈比较成熟,而且这样子出现问题的时候,两端可以交流,对整个公司的运维、开发等各个体系之间都有好处。如果说预测到了未来一定会做服务层,还是用java比较好。
问题(3):订单数据量达到几十亿会用分库分表的方案吗? 沈剑:会的,在公众号里面也写过相关的文章。
问题(4):学历重要吗? 沈剑:不同的公司不一样,我在社招面试的时候不看学历,只看面试的结果,只看综合实力。
问题(5):公司业务发展太快,都在追时间、赶时间怎么办? 沈剑:技术的一把手,早起还是要提前规划一下自动化相关比较好,这样子可以帮助项目更快的吞吐。
问题(6):面试的时候应该怎么去准备?遇到一些比较刁难的问题怎么办? 沈剑:我个人没有怎么参加面试,但是我面试过别人。在招人的时候我是主要问你懂哪些,也就是你做过的业务、架构、技术等等。我认识面试是为了了解他了解到了什么程度,而不是为了难为你。
问题(7):技术的广度,真的学得了那么多东西吗? 沈剑:比如说我们做微服务的架构,web侧的东西、数据库的东西等等,我们都要会,所以就围绕这个体系学,都要学。
问题(8):在一个企业如何做自己的职业规划? 沈剑:很多时候公司对你的要求和自己对自己的要求是不一样的,所以在为公司做事情的时候只要自己可以成长,有收获,就可以。
问题(9):做事情的时候如何持续学习? 沈剑:个人经验是做什么的时候就学什么,跟着工作来学习。如果学的东西跟工作不相关,那么很快就会忘记。此外,写文章是可以加深自己的记忆的。
问题(10):看哪些书? 沈剑:国外的经典书,google的经典论文。
问题(11):关系数据库是否要用外键? 沈剑:我经过的这些互联网公司业务特点是数据量大,并发大,是禁止用外键的。但是不同公司的业务不一样,要看业务特点。
问题(12):SQL Server没有用过怎么办? 沈剑:个人认为SQL Server跟其他的SQL之类的是类似。
问题(13):技术架构演进的过程? 沈剑:不同的业务不一样,可以参考我公众号的相关文章,有58同城详细的技术架构文章。
问题(14):写代码怎么减少bug? 沈剑:责任心。自己的代码要做大量的自测,要对自己的代码负责。现在也有很多工具帮你提高质量。
问题(15):为什么看到一些技术知识后总容易忘记? 沈剑:用过才能更好地记忆。在实践中记忆是最快的,同时,写下来也会加深自己的记忆。总的来说,两条建议:在业务中学习,同时写下来。
问题(16):如何避免重构? 沈剑:一般来说重构避免不了。最好在架构设计的时候提前规划一步,比如说考虑到两年后可能出现的问题,提前做规划。但是也不要提前规划太久,会对当前的架构带来压力。
问题(17):快狗云服务是用的什么? 沈剑:快狗的所有业务都用的是阿里云。
问题(18):向上管理和向下管理? 沈剑:我个人反对过多向上管理,这需要做很多的额外工作。向下管理的话,有很多方法,大家可以看看相关的书。
问题(19):架构师需要掌握前端的技术吗? 沈剑:当然需要。在大的面上是需要了解和学习的,细节上可能不需要那么了解。
问题(20):为了运维灵活,业务逻辑是SQL合适吗? 沈剑:这个是大忌,随着业务量的增长,数据库会成为业务瓶颈。要把瓶颈放在服务层,因为服务层比较容易扩容。
问题(21):哪些可以看到你写的文章? 沈剑:微信公众号“架构师之路”,有技术提问的话可以到知识星球。
备注:点击本文“阅读原文”可以观看沈剑老师本次分享的视频录播!
往期 精彩 回顾
沈剑:我的架构师之路(上)
点个“ 在看 ”/转发 朋友圈 就是对我最大的支持
:point_down: 点击 阅读原文 ,观看分享直播