【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?

大家好,我是白云。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第1张图片

今天来聊一下程序员的进阶话题,程序员如何突破crud工程师的瓶颈,摆脱终日只能增删改查,早日成为一个架构师。

回想一下,很多人在面试的时候,甚至是在校期间已经左手微服务,右手高并发,张口闭口聊算法。为什么在进入公司两年以后,反倒觉得自己除了crud什么都不会了?这里很大一部分原因是我们的关注点,以及我们看待项目的视角在退化。

在进入公司之前,我们做个人项目时其实是站在上帝视角的,我们站在上帝视角关注项目的整体情况,服务之间的关系,服务和中间件之间,包括前端和后端之间。因为很有可能从头到尾都是我们一个人在搞嘛,所以我们都站在高处看得清清楚楚。

但是在进入公司以后啊,工作内容迫使我们渐渐地把自己的视角从上帝视角退化成了第一人称视角,我们不再关心项目的整体运行情况,只需要关心自己那一亩三分地,也就是自己所在的模块到底今天能不能开发完,有没有bug,该给出来的接口有没有给出来?这种视角和关注点的退化,其实远比你技术退化更致命,因为它会直接影响你的主观能动性。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第2张图片

如果大家有心的话,从明天开始,暗中观察一下你所在团队的技术大佬,看一下他每天的工作内容以及他提交的代码是什么。你就会发现,一旦你捅破这层窗户纸啊,这个技术大佬他真的没有那么神秘,他写的语言也是跟你同一门语言,只是他的工作内容和关注点不同。至于这些工作内容和关注点,基本上都是你面试的时候已经懂了的,只不过在漫长的岁月中,有些被你退化掉了,有些你始终找不到实践的机会。

所以要想进步,我们首先要保证。自己别退步。虽然有句话叫面试造航母,上班拧螺丝,但我们不能因为拧螺丝就把造航母的手艺给丢了,那样的话真的有一个造航母的机会摆在眼前,都把握不住。所以如果你已经工作了一两年,现在感觉自己很难提升的话,明天开始去把自己所在项目的系统架构图画出来。

当你把这个架构图画出来,并且把自己的视角和关注点重新拉回上帝视角后,我相信你大几率第一反应是就这啊原来感觉很神秘、很高深莫测的东西原来就这。虽然不敢说你图里的东西肯定样样精通吧,但至少你已经把你的差距具象化到这一张图上了。当你在很好的能完成自己的本职工作后,仍然愿意站出来关注项目的整体运行情况以及整体架构时,你就会有更多的机会去得到不一样的工作内容,想办法去为自己。争取有变化的工作内容,这一点非常重要。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第3张图片

工作内容发生变化后,你才能积累到新的工作经验。同样是上班十年,有些人是实打实的十年工作经验,而有些人这是一年工作经验用了十年,剩下九年都是肌肉记忆,这两者年龄相同,但是身价可是天差地别。

另外很重要的一点,我们身处于职场之中而非学校里,我们不要去做一个闷头敲键盘的技术员,大家对项目额外的贡献、思考、积极性以及归属感,一定要想办法让自己的领导知道,现在已经二十一世纪了,靠自己良好的工作表现和社交能力,为自己赢得更好的工作内容以及晋升机会,一点儿都不丢人,怀才不遇才是最丢人的。

当我前面说的这些问题你都可以处理好后,你应该去着重提高自己的设计能力和处理问题的能力。在这一阶段,很多人遇到的问题就是:我语言基础能力挺扎实的,各种技术战也均有涉猎,换句话说就是深度和广度都可以。但是让我去设计一个系统,或者让我去输出一个什么解决方案,我感觉很头大,无从下手。

说白了就是单词我背了不少,但是作文我写不出来。这里要明确的一点就是做设计不是搞发明,它绝不是要求我们从无到有的去搞一个新东西出来,市面上有非常多被证实过的良好实践供我们去学习和参考。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第4张图片

那么举个例子,我对于商行业有一定了解,市面上比较典型的大型电商系统以及中型电商系统的架构设计方案,我都像棋谱一样印在脑子里了。虽然说实战中没有人完全照着棋谱去下棋,但至少这些被证实过的良好实践,它里面蕴含的技术选型以及设计思路,能够让我有一个大体的方向,而不至于无从下手,也可以防止我因为见识短而导致的南辕北辙或者钻牛角尖,帮我去避免这些试错成本。

那么在落地的时候,根据我公司的实际情况,对这些方案进行组合和取舍。因此先根据大家所在的行业,比如你是搞电商的,它是搞金融的,把这个行业比较典型的架构设计方案拿几份过来学一学,你可能会发现在设计思路以及模式上都是大差不差的,只是在实际的技术站选型时,可以根据体量来进行变通。

最后我希望大家都能做一个接地气的人,因为并不是所有的公司都有百万级并发的业务场景和用不完的软硬件资源,大部分公司的产品在实际运行的时候,QPS是连十都达不到。因此我希望大家在搞设计的时候,都能把自己过于理想化的那一面,或者说你内心的书生气把它去掉。最牛逼的方案不一定是最好的,最适合的才是最好的。

比如说你进入一家初创公司,老板只是拿出几百万来试一试商业模式是否正确。在这种情况下,比如说你拿出一个能扛得住春运抢票的设计方案,这方案在技术上非常牛逼、非常完美,唯一的问题就就是老板需要倾家荡产来给你堆软硬件资源,那么老板很有可能就会觉得你是个呆,小庙容不下您这尊大佛。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第5张图片

因此我在做了一段时间的设计工作后,我脑海里其实只剩下两个词,第一个是取舍,第二个是妥协。向公司战略和资源现状做妥协,在方案和技术站之间做取舍。也就是说如果你能在有限的资源内经过妥协和取舍,输出一个较优解,那么你就已经是一个接地气的、合格的、甚至是优秀的designer。

最后呢跟大家说一下现状,大部分的中小企业其实都还挣扎在生存线上,他们最关心的还是如何稳稳地把这个钱赚到。所以所谓的关注个人成长,也就是hr在面试环节嘴上说说的公司可能更亲倾向于让每个人都去做自己最擅长,并且是一直在做的事情,因为这样是最稳的。因此大家一起来跟我问自己两个问题,来考察一下自己的公司。

第一个问题,你们公司现在有架构师在,但如果在客观上你经过自己的努力,你已经达到了架构师应有的水平,那么此时如果公司有一个新的产品线或者一个新的项目启动,需要一个技术大佬去牵头做的时候,你的公司是会让原来的那个架构师继续做他擅长的事情,还是会给你一个机会?第二个问题,你们公司原来的那个大佬离职了,而客观上你经过自己的努力又拥有了大佬的实力,那么此时公司是会从外面外聘一个。大佬空降过来,还是会给你这个机会提拔你。这俩问题我个人心里的默认答案我就不说出来了,省得大家说我阴谋论啊。

【编程进阶】架构第一步:打破CRUD的瓶颈,程序员如何质变?_第6张图片

总之,如果大家考核完后,两个问题最终的结果都选不到自己头上的话,那么在你技术上积蓄了一定的实力,但是在职场上却迟迟无法突破瓶颈的话,确实有可能错不在你了。你是不是可以考虑不要钻牛角尖,而是换一个地方空降做大佬呢?

①3000多本Python电子书有
②Python开发环境安装教程有
③Python400集自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目源码案例分享有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里(技术交流和资源共享,广告勿入)可以自助拿走,群号是764406565。

你可能感兴趣的:(程序人生,编程语言,python,程序人生,经验分享)