大刘终于当上了架构师

2024-01-03 10:32
文章标签 终于 架构师 当上

本文主要是介绍大刘终于当上了架构师,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天这篇文章是架构师大刘的故事,架构师大刘——3 个 180 的男人(身高、体重、房子…………的贷款)(传送门:架构师大刘的故事合集)

如果你想将来成为一名架构师,不妨看看大刘的经历。

大刘对架构师一直持有两个基本观点:

  1. 高级程序员和架构师是两种完全不同的物种,但足够强即可物种跨越。

  2. 不是每个程序员都有机会可以成为架构师,但准备的足够多即可争到机会。

大刘自己亦是如此。

多年前,大刘已经是一位高级程序员了。分给他的任务,完成的比团队中的任何一个同事速度都快,比任何一个同事质量都高,在完成自身任务之余,他甚至可以腾出手来帮别人。

当时,大刘公司有自己的电商平台,同时还从外接了一些项目单子,去维持公司的盈利。无论是电商平台,还是项目单子,都是用的同一套开发框架——SSH,也就是:

Struts + Spring2 + Hibernate3

这其中,有三个主要技术问题是迟迟没有解决的。

1. Hibernate 的 Session使用问题

Hibernate 的 Session 滥用,在大刘公司内部长期存在。这种情况造成的后果就是:

  • 要么资源狂占内存,使得应用崩溃;
  • 要么 Session 提前关闭,导致存储数据报错,数据丢失。

对这种问题,大刘他们的做法就是根据出现的错误栈,对应的修改下出错的方法。比如,临时 Google 查一下,去换种获取 Session 的 API 调用;又或者就修改下逻辑,创建个新的 Session 了事。

因此,大刘发现在他们的项目里获取 Session 的方式,那叫一个五花八门。估计 Hibernate 的作者看了,都会非常吃惊——“我竟然还写过这种获取 Session 的 API 呢?”

而这些花样繁多的获取方式,又进一步刺激了项目在线上的各种问题,这些问题又造成了各种 Session 的乱用的进一步泛滥。

恶性循环啊!

2. 缓存使用问题

在大刘他们的系统中,或多或少都用了外部缓存。缓存组件是当时最流行的 Memcached。

但是,由于对 Hibernate 没有深入了解,这套缓存并没有和 Hibernate 综合在一起使用,于是问题就来了。

缓存数据和数据库中的数据出现了各种脱节:

  • 查询数据的时候,本来可以走缓存的时候没有走;
  • 更新数据的时候,又经常忘记同步缓存状态。

说出来都不怕丢人,缓存命中率可能都不到 20%。

性能堪忧啊!

3. Spring 对框架对象的管理问题

在使用 Spring上,也是个笑话。

最大的问题是,有些人和 Spring 感觉有仇,他就是不让 Spring 去管理对象的生命周期。

这造成的问题就是,NPE 异常在线上成了过年的烟花一样,处处盛放。要不就是,本来应该是单例的地方,却出现了好几个亲兄弟,好家伙,搁那里玩克隆人呢。

解决起个小问题,都能让人着急的脱水。

错误不断啊!

面对以上那三个问题的折磨,大刘却不得不忍受着。因为大刘当时只是个高级程序员,受技术水平和话语权所限制,明知道有问题,但是想解决问题又有点有心无力。

大刘自己默默地学习、看书,去不断熟悉 Hibernate 和 Spring,除了日常写已经写腻了的 CRUD 代码以外,他对业务代码之间的关系也做了十分深入的研究。当用户发起请求后,从系统收到请求,一直到业务流程完全结束,大刘对其中的各种技术细节都摸了个滚瓜烂熟。

但是,他却不敢对系统做任何工作以外的改动。

直到有一次,有一个月的时间,大刘几乎每天都陷在解决那三个技术问题引发的线上错误的泥沼里,当然,整个团队都是一样的状态。不知道别人能不能忍受,大刘终于受不了了,他有自己的技术梦想,有对自己的技术要求,不能忍受在屎坑中游泳的日子。

于是,大刘行动了。

那时候大刘工作已经五六七八年了,做事也没那么莽撞了。为了证明他能搞定那几个问题,他需要一套证据,一套他亲自验证过的证据。是什么证据呢?

大刘先把当时的项目拷贝了一份,然后熬了几周的夜,就着一本《Pro Hibernate3》的英文电子书和一本廖雪峰写的《Spring 2.0核心技术与最佳实践》,把里面所有不对劲的问题,愣是统统的改了一遍。

改完代码后,又找运维同事借了机器,完全部署了一套改过的系统。

然后,通过 Memcached 的 stats 命令,去统计出了缓存命中率,此时,这套改过的系统的缓存命中率已经从不到 20% 提升到了 80% 以上。

接着,又用压测命令,那时候还是 Apache 的 ab 命令,对改过的系统、原有系统进行了压测,得出了一个对比报告。

做完这些,大刘拿着这些东西,径直去找了直属领导,和领导诚恳的谈了谈,说出他想对系统不合理使用框架的地方进行改造,并且已经把改造这事儿自己独立完成了 90% 以上。

领导听完,看着压测对比报告久久没说话。那个时候,大刘的心紧张的像极了一团天津麻花,甚至想,大不了就带着压测报告和改造的经验去找下家了。

没想到的是,领导开心极了。领导告诉大刘,早就想规范整个项目了,想对整个系统的技术进行精确的改造和深度的优化,但是一直没能找到一个人能挑起大梁来,现在他支持大刘全面去负责牵头搞技术优化和系统改造的事情。

那几周没白熬夜!大刘通过自己的疯狂输出,得到了一个能全面审视、改造这套系统的机会,并且可以根据自身对 Hibernate、Spring、缓存的研究,把一些最佳实践应用到实际项目中。

此时的大刘,对架构师这个词,只是听说过,至于他是个什么概念,又需要做些什么,是完全不清楚的。不过,由于对 Hibernate 和 Spring 的深入研究,以及不断地在项目中实践各种它们的特性,大刘初步有了一些当架构师的感觉,知道了一套好的框架该是什么样子,以及它们为什么要这样设计。

再后来,公司的其他项目只要遇到了 Hibernate、Spring 相关的疑难杂症,都会过来问大刘,慢慢的同事们都知道,有个叫大刘的程序员技术还不错,大家给他起了个名:“SSH一哥”。

又经过了一年的摔打,大刘对架构师这个岗位已经有了自身的理解,知道架构师就是攻坚克难的技术骨干,知道架构师能掌握所有的技术选型,更知道架构师能光明正大的预研前沿技术。

大刘对架构师真的是向往极了,特别想成为这样的一种人。可惜,公司当时没架构师这个岗位,也没这个 title,真是犯愁啊。

再后来,大刘的领导晋升了,领导把他原来负责的事情一分为二:

  • 鉴于对大刘技术能力的认可和信任,几个相关项目的整体技术都让大刘负责;
  • 项目的日常管理工作,安排给了另外一位产品经理。

对于这样的安排,大刘倒是并不在意,他本身对管理工作也没什么兴趣,让他负责技术,能随他心意的去规范化开发项目,他已经很知足了。

但是,一件大事的出现,最终整个项目都给了大刘来管理,这是他万万没有想到的。

事情是这样,由于电商系统需要引流,为了吸引用户,产品和运营搞了很多活动,很多很多,多到了什么程度呢?多到了写的 if 语句可能占到系统代码的三成以上了的程度。

if(xx 满足 xx条件) {//做xx事情
} else if(xx 满足 xx条件) {//做xx事情
}

以上的这些代码,就像一条条择人而噬的鲨鱼,游荡在项目的字里行间。

多其实还好,也能忍。但最受不了的是,产品和运营自己也不知道活动会达到什么效果。结果就是,他们会不断的推陈出新,会不断地对活动修正。

这就难搞了。当时公司程序员人手本来就不够,不仅要维护电商系统,还要维护给客户做的各种系统,还要及时响应各种运营活动,响应的慢了还会被产品运营投诉。

不断地改啊改啊……终于有一天,一个程序员爆发了,疯狂的和负责管理的那个产品哥们儿对线。事实证明,祖安人是挑火的一把好手,于是嘛,产品和技术从动嘴终于到了动手的地步。

最终结果就是那位产品经理撒手不管项目了,那位程序员老哥被开除。

于是,就这么着,日常管理的这个事情也落到了大刘的头上了,技术和管理都是“SSH一哥”负责了。

但是公司对大刘的任命迟迟没有正式宣布,可能公司担心大刘资历尚欠,怕他 hold 不住吧。

对大刘来说,他能理解公司的这个考察期,想让领导吃上一颗定心丸,他就需要个机会证明自己。什么机会呢?还是运营活动和技术的矛盾这个事。

当时的问题大刘是非常明白的,根源就是产品运营给出的活动太多了,还频繁的各种修改,而这些活动规则的落地完全需要技术去实现,程序员们根本忙不过来。

如果把这些惹了大麻烦的活动,不管是新出还是修改,可以不让程序员们去修改代码就太好了。

于是,大刘引入了规则引擎这个东西,引擎用的是 JBoss Rules。

因为那个程序员老哥和产品经理的物理交流而走人了,所以,大刘手头有个招聘名额。此时,引入了规则引擎,正好就可以用上这个名额。

于是大刘招了一个程序员,专门负责改规则引擎的规则,这样,其他程序员就能解放出来干其他事情了。

总的来说,引入规则引擎这套方案实施的很好,大家都很满意,领导也非常满意。不久之后,大刘就正式的转正了。

可是,这不够啊,大刘想当架构师,现在这条路是技术管理。没有架构师的 title,对以后自己成为真正的专业的架构师不利啊。

因此,趁着领导满意之际,大刘向领导提出,能不能把 title改一改,改成架构师。

领导看着反正也没什么大碍,既没有增加什么成本,也没有什么负面影响,也就答应了这事儿。

于是大刘成了当时公司的第一位架构师。

以上就是大刘如何成为架构师的故事了。

你看,是不是这样:

  • 大刘能搞定SSH就是架构师了?有点水啊!架构师到底是一个什么样的岗位?不同的公司,对架构师有不同的要求,有的要求技术很强,有的要求技术+业务结合的好,有的要求手写框架,有的要求擅用框架解决问题……有的公司压根就没有架构师这个岗位。

  • 我们都希望成为一名架构师,某些时候是更希望自己是众多程序员当中的那位“技术一哥”。我当年也是非常渴望成为架构师。

  • 我们需要保持对技术的强烈热爱,很可能因为这种热爱,要做一些比较狂热的超出既定工作范畴的事情,这些事情既能极大提高我们的技术水平和视野,也能帮助团队的产品质量得到极大的提升,这是双赢的事情。

  • 有些机会,我们需要自己去把握住,去主动出击,去向机会亮剑,亮出我们的才能,亮出我们的态度,只有这样,才能向我们向往的职业岗位迈出坚实的一大步。

所谓不负此生,唯此而已。

最后,希望这篇文章对你有帮助。原创不易,希望得到你的三连支持。

这篇关于大刘终于当上了架构师的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565399

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

系统架构师-ERP+集成

ERP   集成平台end:就懒得画新的页

终于解决了excel操作及cspreadsheet.h问题

困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。 首先, 出现暴多错误。解决UNICODE问题,全部添加L。 [1] +++++++++++++++++++ 其次, 出现问题: error   C2664:   'SQLGetInstalledDriversW '

系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践

本章考点:         第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值的考查。本课时内容侧重于对知识点的记忆、理解和应用,按照以往的出题规律,嵌入式系统架构设计基础知识点基本来源于教材内。本课时知识架构如图19.1所示。 一、嵌入式系统发展历程

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (

高级架构师备考计划

每周计划 我将每周进行一次总结和调整,确保自己的备考进度和效果。 第一周:基础知识复习 目标: 全面复习所有基础知识点,确保没有遗漏。 任务: 阅读教材和参考书,覆盖所有基础知识点。 整理笔记,制作思维导图,帮助记忆和理解。 每天安排固定的学习时间,确保每天都有进步。 检查点: 完成所有基础知识点的笔记整理。 进行一次基础知识小测验,检验学习效果。 第二周:重点知识强

Spark 全套知识体系,终于搞到了!

福利手慢无 ☆☞ 廖雪峰的大数据开发必备教程-Spark视频资料终于免费啦!限额领取~ 2019年已过去3/4,年初许下的愿实现了吗?可爱的程序员们都有哪些愿望呢? 找个女朋友。升级电脑、键盘、鼠标等。来一次说走就走的旅行。升职&加薪。…… 说起“升职&加薪”,一向“多金”的程序员们,今年的职场晋升似乎并非那么顺畅。说是大环境所致,这也没错。 但有一部

终于知道如何简化时间序列的特征工程了!

在处理时间序列数据时,时间特征往往是最基础且独特的要素,我们的目标通常是预测某种未来的响应或结果。 不过在很多情况下,除了时间特征之外,我们还能获取到一系列其他相关的特征或变量。 时间序列数据中的特征工程涉及从原始时间序列数据中创建信息丰富的特征,以提升机器学习模型的性能。 以下是时间序列数据中一些常见的特征类型: 日期时间相关特征: 这些特征是从日期时间列中提取的,如月份、日期、星期

架构师接龙 岑文初VS. 杨海朝_系统架构

淘宝架构师岑文初:淘宝开放平台技术历程_系统架构 上传者: lwqc_yq       我也要“ 分享赚钱” 2014/9/8 评论( 0) ·注册就送50元:温商贷 - 全国首家挂牌P2P     ·友利汇:新人注册送188红包 ·月月惊喜,红包奖励“没完没了”         ·好车贷:688元即投即送 id="iframe