我很久没写代码了,但我是个好架构师
这篇文章还是架构师大刘的故事。
故事之前先说个题外话,最近到了金三银四跳槽季,有不少读者问我一些简历、面试的问题,这些问题大部分在之前的一篇硬核文章里都写过,传送门在这里:
非常全面的一篇程序员找工作的干货文章,基本涵盖了求职的整个流程,最难得的是除了经验,还有很多需要的坑。还没看过的读者,推荐看一下,肯定有帮助。
题外话结束,故事开始。
俗子胸襟谁识我?英雄末路当磨折。莽红尘何处觅知音?青衫湿!
作这首词的本是近代女英雄秋瑾。说的却是蔑视世俗、不畏挫折磨难的壮志雄心。此时,大刘却亦有戚戚然焉。
大刘是个架构师,随着工作的日益繁忙,已经逐渐离开了在一线写代码的工作。但是在离开一线的时候,也不免听到了一些不和谐的声音。
- 什么架构师不写底层代码,不知道还有何用……
- 什么架构师成天不写代码,以后肯定废了……
这些靡靡杂音不绝于耳,大刘难免就有了上面的情绪。
架构师无论从何角度来讲,本质就是一位技术专家。那些架构师们因为公司的发展和职责的扩充,有的离开了一线,有的尚未离开一线。但是,无论在不在一线,
都不影响一位技术专家的核心价值。
有某些理论说,技术专家吃技术饭的,技术是个手艺活,几天不练就手生。但是这套理论和实际不一样的是,这套“手艺活理论”,并没有考虑现实里的公司对架构师本人的核心价值定位。
之所以这样说,是因为“手艺活理论”,只定义了技术问题就是手艺活能解决的问题,认为技术问题都是靠写代码搞定的。这就跟产品经理告诉你“这个需求很简单”一样可笑。
架构师不写代码不会成为公司吃干饭的——要说明这个,首先得先说明下架构师的核心价值在哪里。
有些人糊里糊涂过日子,分不出来啥叫核心价值啥叫附属价值。刚入行,拿着还算可以的薪资,以为这就是他们一辈子的状态。素不知这其实就是个温柔乡,慢慢把人套牢,然后到了中年,一切轰然崩塌,那时候,后悔也晚了。
价值这东西,放在现在打工人身上,就是你能给公司带来多少利润。就拿技术举例,你给公司开发出个新产品,公司盈利了,你就体现了你的价值。
更进一步,如果你给公司弄出了新的产品,公司预估时间为一个月,你半个月搞定了,给公司了个小 suprise,你不仅体现了你应有的价值,你还买一送一,给了公司一些小小的快乐,那么就创造出了更多的价值。
以你给公司创造出了更大价值为前提,咱们看个公式:
你实际创造的价值 = 你本来就应该给公司挣的钱 + 你优秀的能力让公司意外赚(省)的钱
从这个公式你就可以看出来了,价值这事儿得分成两个,一个是公司需要你为公司挣钱的价值,一个是你自己能力可能比同行优秀,多搞出来的价值。
第一部分就是核心价值。那个你比同行优秀或者公司让你搞产品,你不仅搞了产品,你还把地板给扫干净了的价值是一些附带的,是附属价值。
OK,知道这事儿了,咱们就得嘀咕嘀咕架构师这事儿了。大刘郁闷在哪里?本来架构师开不开发代码,这事儿不是判断架构师够不够格的标准。
但是呢,有些人可能从小土里刨食儿惯了,出来搞些码农的事情,觉得不敲代码了,就不配搞技术。手里拿着在 2.14 还亲密接触的键盘,在互联网上苟且的发表着一些阴阳怪气的意见,这就很让人不待见了,也很容易误导后来的年轻人。
公司为什么需要架构师?鲁迅先生说过
公司里本来没有架构师,系统复杂了,也就有了架构师。
架构师这岗位不是地里长出来的,是有需求创造出来的。
看到了吧,架构师的核心价值出来了:专门用来搞定公司复杂的系统的。当然,资本家的事儿能叫剥削吗?那叫帮你成长。为了帮助架构师的成长,所以架构师的责任链条又拉长了:
从搞定一个复杂系统 -> 搞定所有的复杂系统 -> 搞定所有系统 -> 所有技术你都做主了吧
于是,架构师也是拥有自己的血泪成长史的。
好了,话题扯远了,说回来。
公司需要搞出复杂的系统产品来运营,需要复杂的技术链条来运维,需要复杂的工具来加快产品开发速度……这些事儿,其实都是架构师要关心的。
在这些里面,编码就是其中一小部分工作,架构师忙不过来了,自然要放弃编码,去考虑别的问题。
架构师编码编的好,那是他高级程序员做的到位,但是这是所有技术工作中的很小的一部分。
假如大刘编码做好了,上线无 Bug 了,但是精力没顾上整体技术架构,也没顾上整体的系统分析,比如
- 业务数据需要高可用还是高一致?
- 在线运营的系统运行了很久了,是不是要搞代码重构了?
因为大刘深入了编码细节,疏忽了更重要的,出现了判断问题,那大刘的核心价值就被损害了。就算他写代码写的全程丝滑,但整体系统却没搞的到位,对公司来说就是损失,这个架构师就不合格。
现在一些新入行的年轻人,一边编写着代码,一边被人灌输架构师必须写代码,不写代码,他就是伪架构师,这是完全的以偏概全。架构师其实挺难当的,上面说过,随着你干的活变化,很可能架构师一下子就把公司的技术活全捞来负责了。
很多有技术追求的人,他们很想当架构师,但是又不知道该怎么学习。根据大刘自己的经验,你得先培养自己的三种能力:
1. 快速分析问题的能力
因为架构师有一个很重要的工作,就是负责解决公司的系统问题,很多系统的问题其实解决不难,但是定位非常困难,所以,定位问题能力就需要有意识的训练。定位问题的能力需要能快速梳理整体流程,然后准确的找到流程中断的地方,那个地方很可能就是问题点。当然,多见识各种系统问题也是必须的。
2. 快速学习的能力
架构师其实负责的工作很杂,几乎任何技术工作,你都能扯上架构师。架构师就是技术工作的主负责人的各种备胎。但是,架构师也是人,他也不是万事通。为了能完成这些备胎工作,架构师就得能够快速学习,对一些新鲜领域能快速技术调研给出结论,对一些不熟悉的技术领域能快速的深入学习然后找到瓶颈并解决。而且,平时也得多关注技术领域,持久化,快速化的不断学习。
3. 快速资源调配的能力
快速资源调配的能力则是因为很可能运维、开发、测试他们面临了一些技术问题,需要这些人一起配合搞清楚。比如网络问题,很可能运维、开发、测试都是互相埋怨甩锅,这时候,就需要架构师们快速确定问题,调配人员,看如何把存在的技术问题给干掉。
看到了吧,上面哪个都不是干写代码可以搞定的事情,所以,架构师这事儿,真的不能光看什么写代码。
架构师嘛,不写代码不寒碜。
你好,我是四猿外。
一家上市公司的技术总监,管理的技术团队一百余人。
我从一名非计算机专业的毕业生,转行到程序员,一路打拼,一路成长。
我会通过公众号,
把自己的成长故事写成文章,
把枯燥的技术文章写成故事。
我建了一个读者交流群,里面大部分是程序员,一起聊技术、工作、八卦。欢迎加我微信,拉你入群