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

每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。今天给大家分享的是一篇来自腾讯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

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

二、SDK开发

高性能组件:如何设计内存池、高并发场景下的消息队列、协程框架的实现、手写线程池、异步请求池、链接池。

网络高并发IO:漫谈select,poll和epoll模型的区别、Linux系统IO模型、理解Linux服务器高并发编程、网络接入层架构设计、你必须懂Epoll玩法。

网络协议栈:tcp/udp/ip/eth、多进程实现高并发、滑动窗口、延迟确认、定时重传、流量控制、tcp握手挥手。

三、集群架构专题

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

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

四、Linux系统

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

五、音视频专栏

流媒体:音视频编码原理详解、AAC,H264主流编码、H264视频格式文件走读、音视频编码格式详解、关键帧,前后帧,非关键详解、通道数详解,采样率与人声原关系。

编解码:FFMPEG常用函数及ffplay 框架分析、FFMPEG之ffplay控制原理分析、芯片原厂工程师教你音视频同步分析、FFMPEG之ffplay音视频同步分析、播放器开发基础。

六、性能调优

理解性能优化、MySQL调优、Linux调优、GCC调优 。

七、工程化专题

Git、Jenkins、dockers、svn。

八、分布式架构

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

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

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

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

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


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

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

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

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

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

当真正开始学习的时候难免不知道从哪入手,学习时频繁踩坑,导致效率低下影响继续学习的信心,最终浪费大量时间。为了让学习变得轻松、高效!今天给大家免费分享一套教学资源,帮助大家在成为架构师的道路上披荆斩棘。

QQ群:C/C++/Linux/Lua/go148745800

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

QQ:517609429

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

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

加入学习,领取免费精品资料快速加入QQ群。

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

  1. 每个程序员都有的经历:从程序员到高级架构师,必须经历的三个阶段

    程序员是我们国家一个庞大的群体,每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天给大家分享的是一篇来自腾讯C/C++ ...

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

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

  3. 天天说架构师,到底什么样的程序员能称为架构师?

    2019独角兽企业重金招聘Python工程师标准>>> 我曾问过很多自称热爱代码的程序员的发展规划,大多都回答说期望成为一名架构师.而在招聘一方,有的团队会过滤掉多次提起架构一词而一 ...

  4. 到底什么样的程序员能称为架构师?

    我曾问过很多自称热爱代码的程序员的发展规划,大多都回答说期望成为一名架构师.而在招聘一方,有的团队会过滤掉多次提起架构一词而一点不提具体内容的简历.可见,虽然在大多数程序员眼里,架构师是神圣的,但又不 ...

  5. 从Java程序员进阶到架构师,6大核心技能要领详解

    " java架构师技能将分为如下6大环节:数据结构和算法,Java高级特性,Java web核心,数据库,Java框架与必备工具,系统架构设计. 希望能真正帮助到从程序员进阶到架构师之路的朋 ...

  6. 从Java程序员进阶为架构师,全套16张图概括最全技能!建议收藏!

    如何从程序员进阶到架构师?今天完整的把我积累的经验和技能分享给大家! 作者:陈睿|优知学院创始人 数据结构+算法=程序 数据是一切能输入到计算机的信息总和,结构是指数据之间的关系,数据结构就是将数据及 ...

  7. Java程序员怎么迈向架构师

    怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题. ...

  8. 程序员如何变成架构师,软件公司如何变成苹果

    /*************************************************************************************************** ...

  9. 程序员如何向架构师转型?看完就明白该怎么做了

    软件行业技术开发从业人员众多,但具备若干年开发经验的普通的开发人员往往面临个人发展的瓶颈,即如何从普通开发人员转型成高层次的系统架构师和技术管理人员.想成为一名架构师,应当具备全面的知识体系,需要进行 ...

最新文章

  1. 青源 LIVE 预告 | 华为诺亚韩凯:视觉 Transformer 综述
  2. SQL Server 2016新特性:Query Store
  3. 最大似然估计 (MLE) 最大后验概率(MAP)
  4. RocketMQ 错误:The broker does not support consumer to filter message by SQL92
  5. 计算机网络基础概念知识笔记
  6. 全国胸最小的省是哪个,你知道吗?| 今日最佳
  7. 使用 Arduino 和 LM35 温度传感器监测温度
  8. 【HHHOJ】NOIP模拟赛 捌 解题报告
  9. Cocos2d-x3.0游戏实例《不要救我》第十篇(结束)——使用Json配置数据类型的怪物...
  10. 谷歌强推 Rust 进驻 Linux 内核,与主要开发者签订合同!
  11. matlab高通滤波器除噪声,基于MATLAB的FIR滤波器的设计及应用(信号去噪).doc
  12. Steam游戏导入vrPlus中运行
  13. eNSP交换机配置VLAN
  14. 河南省周口市安吉软件测试培训中心第一次软件测试课程-计算机基础理论论篇
  15. 360视频:正八面体投影OHP
  16. 每个程序员必须掌握的常用英语词汇
  17. Android蓝牙开发系列文章-蓝牙设备类型知多少?
  18. nova shelve 的使用
  19. Java-PTA USB接口的定义
  20. bm17bm6bm18

热门文章

  1. C语言实现跨年烟花(烟花易冷)
  2. 福禄克寻线仪使用方法图解
  3. 河南大学校园平面图数字化
  4. “2020区块链技术应用及专业教育论坛“在苏州2.5产业园隆重举办
  5. ganymed-ssh2-远程连接验证
  6. 从知名外企到阿里巴巴,他如何3年内晋升P9?
  7. 世界摄影大赛获奖精品!令人惊叹!
  8. Python教你几行代码生成一个自己的二维码名片
  9. Matlab从三维矩阵中取出一列并且reshape
  10. 撤下杨笠:英特尔丢了市场后,再失“体面”