查看原文
其他

程序员到高级架构师,必须经历的三个阶段

程序人生 2019-06-21

摘要: 每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。

每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。今天给大家分享的是一篇来自腾讯C/C++架构师对普通程序员的职业建议,希望对你有启发。

对于大多数的程序员,可以分为以下三个阶段。


第一个阶段三年 :  代码里没有人的思维


我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。

这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。

我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。一个比较明显的分水岭就是初学人员在用计算机的思维写代码,而有一部分人精益求精,开始在用艺术的思维写代码,比如我接触到一个朋友在群里问的问题:

如果你认为这是一个初学人员常见的一个问题,而我是认为很多人染上了江湖恶习或者梁山好汉的臭气一样,一者是喜欢在代码里耍酷,二者是随意随性,只管实现了功能了事。

所以一个程序员是否能继续深入到第二个阶段,需要的是系统地知识和阅读优秀代码的能力,比如数据结构、Linux系统、各种组件(如Redis、MySQL、Zookeeper),了解了应用程序如何调用周边系统的接口,以及学习了一点周边系统一般的抽象方法。


第二个阶段五年 : 不够深,没有追求


我认为五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西, 热衷于研究各种技术实现细节、看了N多好书、写一些博客、在GitHub上分享技术,但是大多都是人云亦云,没有技术的鉴别能力,没有深度的思考能力。

比如出去面试的时候:

面试官:熟悉TCP不?

程序员:熟悉!【PS心理活动】嘿嘿!我这几天在偷偷看了TCP的三次握手四次挥手。

面试官:TCP的TIME_WAIT状态是怎么回事,如何解决?

程序员:TIME_WAIT,我记得书上是这么说的……【PS心理活动】妈呀,都不按套路出牌啊,手心开始有汉,浑身开始不舒服......

面试官:你们这个游戏面临高并发时,网络IO处理的模型是怎么设计的。【PS心理活动】没有深入了解TCP也没有关系,可能业务不涉及,问点跟项目相关的。

程序员:哦,我们当时采用多线程的设计,每个线程负责一个连接的socket,而且用了缓存队列。【PS】终于问了我熟悉点的,这个项目的主程跟我关系好,给我讲解了他的代码。

面试官:嗯,那你还熟悉其它的IO模型不?

程序员:我们那个项目够用了,没有尝试过其它模型了。

这就是典型的菜鸟,你要说他菜他一定不服你,甚至口水战就要来了。

我想说“ 是故非澹漠无以明志,非宁静无以致远。” 一个人技术是否牛逼,在气质上都会不一样,虚怀若谷,大智若愚,不疾不徐,或者目光如炬,才思敏捷。当你深入了解,旁征博引,深入思考和测试才能逐步深入技术。

还有一类人以为会一些设计模式就是架构设计,会用各种组件拼接就是架构,跟你满嘴的SpringMVC、Redis、Mysql等等,可是当你提起系统性能、业务可扩展性、系统一致性时,似乎也听见过一些设计,但是当写起代码来全然不顾,然后又一堆的Bug解都没有办法解。

这些人里只有一小撮人能在五年后具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物,而其余绝大部分人会。停止不前,甚至陷入深深的忧患当中,奈何已成温水中的青蛙。


第三个阶段十年 : 登堂入室


十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。

如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。

我认为随着工作年限的增长、对生活对生命认识的深入,应当不断学习思考。

关于专业技能

程序员应该具备的技能

我这里要说明一下,以下列举的内容不是都要会的东西。但是如果你掌握得越多,那么你的架构设计能力就更强。

一、源码分析专题

数据结构:红黑树、平衡二叉树、B树和B+树、布隆过滤器、KMP算法

设计模式:责任链模式、发布订阅模式、Reactor模式、过滤器模式、代理模式、工程模式

开源源码分析:Nginx、zeroMQ

详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。

二、分布式架构

架构实战:斗鱼视频直播技术核心揭秘、网易门户高负载均衡实现、淘宝海量数据存储引擎、Open API设计。

架构中间件:分布式RPC框架 、分布式MQ。

架构策略:一致性、可靠性、可扩展性、高并发海量数据设计。

架构原理:消息驱动式架构设计、动态域名做高负载均衡、P2P去中心化。

作为技术开发者,如何去应对技术变革带来的技能危机。基于传统架构到分布式架构演变过程所带来的技术变革进行全面深入讲解。在技术深度和技术广度上得到飞跃的提升。

 

三、集群架构专题

MySQL、Redis、MongDB、Nginx + lvs、Zookeeper集群。

面对海量的数据、高并发的请求,集群保证水平可扩展性,保证系统可靠性是唯一的途径。 

四、Linux系统

深入内核层面理解系统,理解系统架构设计,使用一系列的工具深入挖掘系统瓶颈,而不是人云亦云的优化和架构设计。 

五、工程化专题 

六、性能调优

七、音视频专栏

不管是刚入门的小白,还是才高八斗的资深开发、架构,你都需要从这里开始:

对于来说小白可以快速提升

对于资深开发人群可以加分

以上就是我要说的内容,希望以上的内容可以帮助到正在默默艰辛,遇到瓶颈且不知道怎么办的程序员们,希望大家在往后的工作与面试中一切顺利。

如何快速学习,有没有免费资料?

当真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。

为了让学习变得轻松、高效!今天给大家免费分享一套教学资源,帮助大家在成为架构师的道路上披荆斩棘。

QQ群:C/C++ Linux服务器开发786035137      

想要进一步深入了解技术,或者简历书写和面试技巧的可以加老师。

微信:Lee_ge_1024

Lee老师曾供职于华为和诺基亚通信长达7年时间,曾在某上市公司担任产品总监。10年(C/C++)开发经验和产品管理经验,研究过过多款C/C++优秀开源软件的框架,开发过大型音频广播云平台,深入理解需求分析、架构分析和产品管理,精通敏捷开发流程和项目管理。

合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

点击阅读原文,加入学习,领取免费精品资料快速加入QQ群。

你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存