四年,上海,车房妹

B 哥是个人导师,记得我刚进入腾讯实习的那天,是他出来接我。当时我有点怀疑,不会吧,不会吧,个人导师这么年轻?和我想象中的经验丰富的程序员的样子简直天壤之别。程序员

想象中的程序猿

后来确认了,他就是个人导师,怎么会这么年轻呢?惊讶之余,我也在期待他有没有什么过人之处,能够带我学习带我飞。数据库

直到如今认识 B 哥已经一年多了。老实说,刚开始我还并无以为他特别厉害,可是随着和他在工做中的合做交流,渐渐地加深了对他的了解,我才愈来愈发现,这我的是真的强啊!编程

有多强呢?小程序

B 哥本科毕业后直接工做,经历了四年的打拼,现在的他已是腾讯的高级软件开发工程师和技术 owner,在上海有好车、买得起市区房,前段时间还和漂亮妹子领告终婚证,真是典型的人生赢家啊!关键还很帅,发量足,你说酸人不?设计模式

酸了

那么 B 哥是怎么作到年轻有为、有事业、有车房妹的呢?markdown

曾经 B 哥也和我讲过他的成长经历,可是今天我要分享的不是他的奋斗史,而是想和你们聊一聊,我做为他的徒弟,和他发生了那么多故事,从他的身上看到了哪些优秀的技术人应该具备的特质,也是我认为 B 哥牛逼的缘由。网络


技术控

不少优秀的程序员应该都有对技术的追求,或是见多识广,或是深刻研究,并且很是乐于将他们懂的技术分享给更多人。架构

B 哥就是这样一位技术控,他刚毕业的时候,就通读了不少知名框架的源码,而且可以将他们清晰地讲出来。记得我刚进腾讯的时候,听的第一场技术分享就是 B 哥的《深刻 Netty》,从分享中,能明显地感觉到 B 哥对这个技术的深刻理解和融会贯通,让咱们这些小白也能深刻浅出。而让我震惊的是,B 哥早在多年前,就已经了解并学习了这门技术。框架

若是不是对技术有独特的追求,怎么能坚持这么多年去深刻学习一门技术呢?真的很佩服。运维

全局观

我以为跟 B 哥开会老有意思了。

每次和 B 哥一块儿开会讨论技术方案,在咱们其余人以为这个方案没问题时,B 哥都会说一句:“我建议你们再好好想一想,有没有什么遗漏的点,我以为这里面可能有坑!”

其实我当时心想:能有啥问题啊,多好的方案啊!

陷入沉思

而后 B 哥和你们就陷入了沉思,一下子以后,果真 B 哥发现了这个方案的漏洞。

原来,咱们不少同窗都只考虑这个方案对本身团队的项目是否适用,保证本身的负责的数据是否正确,而忽略了你们的项目是要紧密协做、相互配合的,视野太过局限。而若是将这个方案应用到完整的大项目中,各个团队的数据可能出现不一致,就是一个很大的问题!

后来和 B 哥接触多了,发现 B 哥很是有全局观,总能站在一个更高、更全局的视角去考虑问题。在设计方案时,不只考虑本身的负责的系统,还要想一想这个方案会对其余团队的系统、以及整个大项目会有什么影响。所以,规避了不少的风险,也在各团队中树立了本身 “稳” 的形象。

想成为优秀的技术人,必定要培养全局观,不然在负责大的项目时可能会力不从心。

慎行

B 哥作事很是当心谨慎,体如今多个方面。

在设计方案时,B 哥会尽力验证方案的可行性,而不是凭直觉和过去的经验主观臆断。

在编写代码时,B 哥坚守『 软件世界中的不信任原则 』,采用防护性编程,在每一个可能的风险点加上异常处理机制,并利用监控告警即时发现线上问题。

在测试时,B 哥会考虑到不少的极端状况,保证测试有效且完整。

在提交代码时,B 哥会再次总体通读代码,并让咱们其余同事参与代码审核,保证代码的质量。

正是由于 B 哥的慎行,跟他一块儿作项目很是放心,几乎没有出过线上问题。唉,很久没有体验过改 bug 的紧张刺激感了。

平淡

沟通

在企业中,高效沟通过重要了。

记得有一次我遇到了一个问题,就拉了一位相关的业务负责人来讨论,而后这个负责人又拉了一个产品经理,而后这个产品经理又拉了一个开发,最后这个开发又找到了 B 哥,而后 B 哥又来找我。

禁止套娃

最后局面很是尴尬,实际上是我本身沟通不当,没把问题描述清楚就去找别人帮忙了,浪费了你们的时间。在 B 哥的指导下,我整理了本身的思路,清晰地描述问题,而后直接找到相关负责人,打个电话问题就解决了。

优秀的技术大佬,他们的沟通能力一般是很强的,他们可以用方便他人理解的方式来描述问题,好比提供文档、图片、甚至是视频等,拒绝无效沟通。而沟通能力也是须要实际锻炼才能提高的,每一个人沟通和表达的方式也不一样,仍是要多和他人沟通,而且向沟通达人学习和积累经验。

架构能力

B 哥很会架构。就拿咱们负责的这个项目来讲,短短几个月,业务功能已经变得复杂不堪,并且请求量也已经增加了上千倍。

可是 B 哥在设计程序架构时,用了不少的设计模式,使得程序变得易于扩展。即便业务增加很快,咱们仍然能够轻松应对业务的扩展,每次新增一个功能也几乎不须要改动现有的代码,而是新增代码便可,不只开发效率更高,风险也大大下降。

B 哥在很早前就考虑到了业务增加的可能性,所以给项目采用微服务架构,针对部分性能瓶颈,采用可扩容设计,使得提高项目的性能和吞吐量变得易如反掌。请求量增加,咱加机器就好了!

轻轻松松

我问 B 哥:“你的架构能力是怎么提高的?”

B 哥却告诉我,没有捷径。想要提高架构能力可不简单,不只仅须要阅读大量的书籍,更重要的是在企业中不断参与项目实践,积累经验。

刨根问底

刚来实习的时候,对公司的不少技术框架、业务知识都不太懂,就常常去请教大佬们一些问题。可是每次只要成功地解决了问题,我就心满意足了,而不去关心问题背后的缘由。

好比有一次程序挂了,后来又恢复了,我就没去排查。

而后 B 哥问我:“程序为何挂了?”

我根本没去查,因此也没办法回答 B 哥,就说了一句:“如今好了不就好了么?”

B 哥语重心长地说:“程序出现问题不可怕,可是出现了问题不去追溯缘由,下次再出现相同的问题,怎么办?尤为是偶发问题,是最致命的!”

我以为有理,就去分析日志,查出来是有一段时间数据库宕机了,就赶忙开心地告诉 B 哥。

结果 B 哥很严肃:“数据库宕机不是小事!你知道数据库为何宕机么?”

我心想:我怎么知道啊!去问运维啊?

后来我就去问运维,发现是因为数据库压力过大致使的宕机,就又屁颠屁颠地告诉 B 哥。

B 哥依然严肃:“数据库压力为何大?”

我就又去分析日志,联合运维一块儿进行排查,最后发现是其余共库业务的慢查询致使的数据库请求阻塞。这才终于真相大白!因而咱们将数据库独立迁移,很好地规避了往后的风险。

这件事以后,我开始像 B 哥同样,遇到问题刨根问底,深挖问题的本质,我认为这个过程远远比解决问题更重要,让我获得了更大的成长。

打破砂锅问到底

洁癖

有一次,我写了一坨自认为不错的代码,提交前把代码先交给 B 哥来检查一下。

而后 B 哥看了一下子,神情凝重,缓缓转过身问我。

“你有洁癖么?”

我当时一愣,随即明白 B 哥是在说我写的代码不够整洁。

做为一个读过《代码整洁之道》的程序员,我很自信地回答:“固然有洁癖!”

B 哥就给我指出了代码中的问题,原来有一段逻辑我使用了多个 if-else,其实应该用设计模式来代替。

我当时还振振有词:“我以为这里直接用 if-else 就好了,省事儿啊!”

B 哥:“不经过,改!”

后来我乖乖地改了。果真以后这段代码增长了一些复杂的逻辑,若是用原先 if-else 的方式,代码的改动工做量很是大,还容易出错。而用了设计模式,程序变得更加可扩展、可维护。感谢 B 哥和代码洁癖!

如今想一想,当时的本身不过为偷懒找个理由罢了。

用户为本

B 哥很是宠用户,体如今两个方面。

首先,他在和产品讨论需求和设计方案时一切从用户出发。只要对用户真的有帮助、能提升他们的使用体验,哪怕工做量多一点,只要性价比是合理的,B 哥也会去作。所以,咱们的产品才能变得更加易用,获得用户的好评。

此外,每次出现线上用户的问题和反馈,B 哥都会在第一时间积极地配合产品进行处理和引导。在帮助用户解决问题后,B 哥会记录这些问题发生的缘由,并思考如何改进程序来防止相似问题的发生,以及如何进一步提高用户的体验。

不只仅是产品经理才要坚持 “用户为本” 的原则,优秀的技术人也会关心用户、倾听用户,而不是一门心思陷到代码中,只想着如何把代码写的又好看又简洁。

倾听用户

执行力

B 哥作事一贯快、狠、准,有着极强的执行力,只要答应过别人的事情都会按时完成。

曾经我也一直以为本身的执行力很强,但到了公司后,发现不少事情也喜欢拖延。好比答应给别人提供接口文档,结果后来就忘了,直到别人再三催促才草草写了几笔应付了事。

我就很好奇 B 哥是如何作到 “雷厉风行” 的?

好奇

暗中观察 B 哥一段时间后,发现 B 哥始终保持对工做的热情和积极性,别人有事找他时,他可以站在对方的角度去考虑这个事情的紧急程度,而后将其进行记录,并和本身正要处理的其余事情按优先级进行排序。有时,B 哥还会设置一个定时提醒防止本身忘记。

安排好要作的过后,B 哥就保持专一地一件一件去处理事务,并在完成后及时回复对方。即便有时实在太忙,也会提早告诉对方本身暂时没法处理,并给对方一些临时的处理方案。

比起乱序地同时去处理多个事,B 哥的这种工做方式显得更加沉稳,这也是 B 哥能持续保持强执行力的缘由吧。这么一想,不少技术大佬好像都是这样。

刚刚夸完 B 哥执行力强,怎么又提到 “懒” 了呢?

的确,不管是在处理业务仍是具体到敲代码,B 哥都很懒。

好比,因为网络等缘由,咱们的定时任务程序可能执行异常,就须要从新去执行一次。最开始都是咱们人工去平台上点从新执行的,但次数多了就比较烦了。B 哥懒啊,就提出写个程序自动重跑执行失败的任务。后来咱们不再用人工去操做了,巴适得很!

用 B 哥的话来讲,全部人工的操做本质上均可以交给机器自动来完成,只是实现的难度不一样罢了。若是编写一个小程序就能省去重复的工做,何乐而不为呢?

其实,大部分优秀的技术人都很 “懒”。懒得写重复代码,咱们就抽象、封装、组件化、复用;懒得去核对数据,就写任务定时自动去检测数据;懒得写代码,就使用一些脚手架、框架、低代码构建平台等。

懒人推进世界。

画图能力

这里的画图不是指电脑上的 “画图程序”,而是指计算机相关的图片,好比系统架构图、部署图、UML 类图、时序图等。

在认识 B 哥前啊,我以为本身画图老厉害了,简直 “灵魂画手”,巧夺天工啊。

直到后来看了 B 哥画的一些架构图、时序图、状态机图等等,我才发现本身真的是井底之蛙。B 哥画的图不只大气干净,并且利用一些小技巧帮助你们更快地理解这些图要表达的意思,好比用不一样的颜色来区分关键信息等。

最佩服的是,B 哥画图不只好看,还特别快。有时画图的速度甚至超过了咱们去阅读理解图的速度,恐怖如斯!

后来,在公司待久了,阅读了更多的技术方案,才发现优秀的画图能力是技术大牛的必备技能。不少复杂的系统和方案,咱们没法单纯地用语言去表达,而使用图片的形式可以帮助你们理解。

固然,想画好图自己并不容易,也是须要设计思惟和经验的。所以,咱们须要多多锻炼本身的画图能力。建议多看他人的图,模仿的多了,说不定就超越了呢?

复杂的架构图

引路人

我放弃保研,选择直接实习转正留在腾讯,很大一部分是由于 B 哥。

B 哥可能不是技术最强的师傅,但必定是一位好师傅。别的不说,B 哥给新人很是多的发挥空间,让我本身去思考和设计方案来实现需求。在我遇到一些问题后,并非直接帮助我解答,而是引导我本身去解决这个问题。

B 哥很是信任新人,一些项目的技术选型、方案调研、架构设计,B 哥都可以交给我来作。所以,我很是有动力,也变得更加自主,在短期内获得了很大的成长。

B 哥还很是关心新人的成长,常常和我交流,给了我不少实用的意见,真的很感谢 B 哥。

此外,B 哥还常常耐心地帮助其余同窗解答问题,不是简简单单三言两语就完事儿,而是直到提问的同窗完全理解,方才罢休。

优秀的技术人不只要自身技术过硬,还应该懂得如何分享传授技术、带领他人进步,不断提高本身的影响力,甚至是成为某项技术的布道者。

爱生活

最后啊,分享 B 哥保持年轻的秘诀吧!

B 哥不像你们想象中的程序员,双眼无神、眼圈发黑、脊背弯曲、格子衬衫、不爱运动。相反,B 哥很是热爱生活,每周会坚持健身、本身下厨作饭、养了一只布偶猫,还常常带妹子去各类地方玩!

羡慕了,何时我能像 B 哥同样,平衡工做和生活,活的潇潇洒洒啊!


其实,还要不少优秀的技术人须要具有的其余特质,好比追求极致、洞察力、决策力、创造力等等。学无止境,咱们仍然须要不断努力和成长。

最后,正好 B 哥的生日也在这个月,就提早祝 B 哥生日快乐叭!

但愿可以继续跟着 B 哥混啊,有朝一日青出于蓝而胜于蓝,我也能成长为一名优秀的技术人,成为别人的导师,帮助更多人进步!

相关文章
相关标签/搜索