初级程序员如何蜕变成首席架构师?高薪是你的目的学习是你的途径
我今天演讲的主题是个人成长与选择。
在我讲我个人成长经历前,我先推荐一本书「联盟」,LinkedIn 领英创始人里德•霍夫曼的作品。在「联盟」中,提供了一种使雇主与员工之间从商业交易转变为互惠关系的框架,创建了一种鼓励公司和个人相互投资的工作模式。它提出打造任期制,将非终身雇用的员工变为公司的长期人脉,并吸收员工的高效人脉情报。
只有雇主与雇员结为强大的联盟,共同拥有持续的创新与丰富的智慧宝库,员工、团队、企业,乃至整个经济才能繁荣发展。
每个人对于价值观有不同的理解,我个人对于人生幸福理解很简单:年轻时有人生阅历丰富的人(下面我姑且称之为长者)指导,跟随有理想的长者去学习及改变世界;到自己成为长者时,也同样能将相同的价值观及做事方法影响一批人,聚拢一批有志青年来一起做有意义的事情。我说的长者不是指年龄,还是指在人生阅历及行业领域有深入见解的人。在这个时代,单枪匹马很难成功,我更看重团体的力量及跟优秀的人一起做事情。
长者能通过集市模式聚到一批与同样兴趣与尿点的人,这些人每天共同生活做事:吃饭、做事;吃饭、讨论;吃饭、学习打豆豆、睡觉, 找谁是豆豆。这个尿点这重要,有同样尿点也意味着有更多一起接触的机会。有些码农喜欢白天写代码,有些码农喜欢晚上写代码,这个尿点不一致,可能就少了很多交流的机会。一起生活只是一个比喻,重点是通过长者大家一起找到共同做事的节奏。Linux 操作系统就是在长者号召的背景下,产生于这种貌似混乱、无序的集市模式。
我的观察国内缺少这种长者,大部分团队都以商业为重。在国外,硅谷科技在几十年前通过创新走在世界前列,很大程度依赖这种土壤;几百年前,欧洲的文艺复兴也依附于这份土壤。有机会我要去佛罗伦萨圣母百花大教堂与硅谷湾区看看,去感受那些当时能影响一个时代的人物。
价值观就到这, 下面简单说下个人成长的经历。
刚毕业时,放弃了父母在家乡的安排及强烈反对来到了北京,以码农的身份及 3,000 元月薪加入到某公司的企业方案部门做 ERP,盈科是一家香港电信公司,可以理解成香港的中国移动。第二份工作是在神州泰岳做信息安全方面开发,在神州泰岳的经历如果说收获较多的,可能是信息安全的项目对代码质量要求严格,自己打好了较好的编程习惯与基础。
转眼就毕业三年过去,到了 2010 年时候开始有些郁郁寡欢,觉得自己往上进一步成长非常慢,也看不到未来的出路,感觉企业信息安全领域开发不是我长期想要的技术生活。但在另外一方面,我也观察到国内的互联网行业及技术都发展非常蓬勃,觉得它应该是技术人员未来的方向。因此也憧憬着去尝试海量用户规模互联网平台的技术挑战,希望能做一些更大的、能影响整个互联网用户的事情。
在迷茫的路口,我开始关注互联网技术,也阅读了很多互联网技术大牛的技术书籍及文章,包括有幸全盘拜读 Tim 的博客。一次偶然的机会,花了 100 元(谁说技术人员一毛不拔)报名了 CSDN TUP 技术沙龙,并聆听了 Tim 当时在会议上的演讲。会议结束后我在电梯口联系 Tim 表达了求职意向,Tim 当时给了一份考试题让我回去试试。
跟很多做毕业后一直从事企业开发的同行一样,当打算转入互联网行业时候,普遍碰到经验不足及资历不够的问题。我幸好有之前几年打好的扎实编程基础,因此提交的考题代码还不错,获得了微博面试的机会。在自己资历还比较普通的情况下,果断对自己身价清仓出血甩卖,也同样出于对团队的向往,面试时说只要能加入给多少钱都行(但码农通常也都很现实,面试完回家后就对自己提出的工资后悔了)。就在这不计较个人工资多少的情况下(也是个人为数不多的一次跳槽不大幅度涨薪),果断加入了刚处在风口不久的微博技术团队。总的来说,这次转换于我个人这是一次全新的开始,我可以开始做自己喜欢且擅长的事:网络服务器与高并发系统。
加入微博平台团队后,开始适应互联网团队在我看来全新的开发模式。一上岗发现已俨然进入摆好台的手术室,Tim 是教授院长,提出了技术前进的整体方向。田大师就是专家主刀医生,主控一个大的模块的架构设计,剩下就等着我这个护士递手术刀(写代码)。一开始我参与了 firehose-stream 项目的开发,这是一个管理微博所有内部数据的实时数据流服务,每秒实时推送数万条数据,包括微博、评论、私信等消息及事件。当时也是紧张而又刺激,在业务飞速发展及访问量剧增的背景下解决了上线后很多问题。
经过这个项目适应后,我开始接触千万级用户访问的平台,如每秒几万、甚至十万以上的全站提醒、通知、导航、邀请等系统。每个系统除了自己摸索,以及工作有田大师指教外,团队也提供了非常好的交流氛围。每周都有固定的时间,大家在一起讨论及交流技术。Tim 也每周拿出一些在架构领域有代表性的场景跟团队小伙伴一起探讨解决方案。除了平台有这么大的数据规模及用户访问量的环境给大家历练之外,我觉得平台的技术学习氛围这也是我当时成长较快的原因。
在微博期间做了很多项目,包括也有幸参与到核心 feed 系统的开发。几年的历练下来。慢慢从一个积极能动性型码农,成长为在高性能高并发领域略有心得的技术专家。
快乐时光总是过得快,转眼到微博又快 3 年。有一天突然发现自己又出现了原先郁郁寡欢的心慌,隐约感觉自己是希望下一步有机会再次做一些不同的事情。事后回想也许是自己在一定程度想从跟随者到召集者角色的转变。在微博平台的团队中,跑在前面的都是从技术到思想都非常优秀的人,在短时间内我不太可能有机会超越这些前辈转变到召集者的角色。
当时的心慌也可以用一句古话来描述,人无远虑必有近忧,这是不是说明我还是远虑者(现场鼓掌)。考虑到自己未来期望的转变,决定离开微博去创业,去主导及影响一个小范围领域的事情。走的时候心情也非常纠结,当时国内有氛围且有挑战,能收容有技术情节码农的技术团队不多,有些东西一旦失去可能再也回不去了。
不舍不只是微博平台本身,更多是有幸结识了一帮趣味相投资深码农,离开以后很难再有这么一个团队来成长了。包括有钢琴艺术气息的田大师、有时间洗千亿级数据(小编注:由于架构升级进行的迁移数据)而没时间洗澡的小军、算法、棋艺、运动与于一身的小麦、长胡子艺术家气息的老王、帅气的一乐、少年班福林、低调的朱总、呵护多年新同学成长的校长、国际范 James Wei、德州赌神刀刀、托马斯海涛、兵乓球及架构高手姚老板、烤鸭老板方圆等,这些好朋友今天大多数也来到了现场。包括还在微博战斗以及散落在各大互联网公司担任要职的好朋友,我就不一一点名了。想想都是幸运,成天跟一群这么优秀的人在一起,想变差都不容易。
但自己也需要跳出这个舒适区,走的时候回望奋斗过三年的理想国际大厦时,决定自己将来也要打造出一支有技术范与战斗力,同时能服务于社会并带来商业价值的工程团队,同时实现财务自由。
但创业的现实很骨感。创业失败看来是必然,里面有些隐私的因素就不在这里细说。创业公司虽然失败,但这过程中我经历了角色转换拐点,由成熟大公司的技术专家变为创业小公司的产品技术负责人,不再只执着技术细节点,同时还需要更多关注技术带来的商业价值。在创业阶段也经历了快速搭建一个技术团队并最后散伙的心情。
创业失败后,如果继续回到技术专家的岗位,我可以很快找到新的工作。但我内心仍然希望继续担当技术组织者的角色,这时候可能选择大平台里面成长快的业务、以及对技术带头人有强烈需求的团队更为合适,这也许意味自己需要更长的时间去寻找及物色。
2013 年,我加入奇虎 360 PC 网游团队,负责技术架构工作,由一个更专注基础技术架构专家逐渐接触更多商业化项目,更多思考技术的商业价值。也逐渐在引进技术人才与管理技术资源方面变得娴熟。
到 2015 年,外界的条件对我感触很大,“大众创业,万众创新”,O2O 与共享经济等方向带来的互联网创业热潮,瞬间感觉技术人员的春天来了,鸭子也可卖上好价钱。由于很多团队都出现“只差一个技术负责人”的场面,开始发现自己经常能跟这个行业里面大佬对上话,里面不乏有一堆跑车的上市公司 VP,或一出生坐拥数亿资产的创业新秀。当时想如果跟这些大佬们接触,即使暂时不愿加入,也可以帮他们出谋划策或物色技术高手,至少可以在一定层面发挥价值。
这是个最坏的时代, 也是个最好时代。最坏时代是到了 2015 下半年,转眼资本寒冬已来到,很多在创业的小伙伴感受到阵阵凉意。最好的时代是说互联网依旧是国内经济发展巨大的引擎,互联网的发展离不开技术,因此技术人有比过去多得多的机会。尤其是那些有实力与口碑的技术人,通常会被各路行业大佬直接抢夺。
为了让职业生涯更好,除了技术硬实力外,还需要有高度的软实力。俗话说两手抓两手都要硬。 提升自身价值与商业价值的匹配度,让自己做得事情满足老板同时贴切商业价值,也就是这个时代技术人员的风口,这是我对当前这个互联网时代技术人成长的思考。
这也是为什么我在 2015 年中选择加入了熊猫 TV,并承担了公司最重要的基础架构的职责。
回到这次新年聚会及架构开源研讨会,开源是让很多资源 free 的一个手段,但这个 free 不单指免费,更多是指提供廉价、自由、方便、开放、平等的资源, 可以供平民来使用,这些资源不再那么昂贵,尤其技术资源。让屌丝创业公司,也能够站在相同的起跑线与巨头比武。技术基础建设者七牛云、青云等是我敬佩的公司,我所在的公司也大量使用了这些业界提供的基础服务。
感谢这个时代通过技术人的努力,让我们闻到 free 的味道,并让其开始生根发芽,好戏开始了,让我们见证万物复苏的开端,由技术驱动互联网创新的大戏才刚开始。
接下来我总结一下我认为一名架构师应该掌握的专业知识点:
高性能及分布式架构
(跟上技术节奏,扩宽技术视野,程序员要往上提升,要有自己的技术工具箱和技术认知。)
迎接高并发大数据的挑战,从深度到广度完善知识体系,成为下一个互联网高薪人才。
理论结合实战,透彻理解分布式架构及其解决方案。
面向人群
1、工作1-5年需要突破瓶颈;
2、传统行业转型进入互联网行业的人群
分布式架构原理
1、分布式架构演进过程
2、如何把应用从单机扩展到分布式
3、CDN加速静态文件访问
4、系统监控、容灾、存储动态扩容
5、架构设计及业务驱动划分
6、CAP、Base理论以及其应用
分布式架构策略
1、分布式架构网络通信原理剖析
2、通信协议中的序列化和反序列化
3、基于框架的RPC技术Webservice/RMI/Hessian
4、深入分析Zookeeper在disconf配置中心的应用
5、基于Zookeeper实现分布式服务器动态上下线感知
6、深入分析Zookeeper Zab协议及选举机制源码解读
7、Dubbo管理中心及监控平台安装部署
8、基于Dubbo的分布式系统架构实战
9、Dubbo容错机制及高扩展性分析
分布式架构中间件
1、分布式消息通信ActiveMQ/Kafka/RabbitMQ
2、Redis主从复制原理及无磁盘复制分析
3、图解Redis中AOF和RDB持久化策略的原理
4、MongoDB企业级集群解决方案
5、MongoDB数据分片、转存及恢复策略
6、基于OpenResty部署应用层Nginx以及Nginx+lua实践
7、Nginx反向代理服务器及负载均衡服务配置实战
8、基于Netty实现高性能IM聊天
9、基于Netty实现Dubbo多协议通信支持
10、Netty无锁化串行设计及高并发处理机制
分布式架构实战
1、分布式全局ID生成方案
2、Session跨域共享及企业级单点登录解决方案实战
3、分布式事务解决方案实战
4、高并发下的服务降级、限流实战
5、基于分布式架构下分布式锁的解决方案实战
6、分布式架构下实现分布式定时调度
微服务架构
围绕微服务的通用模式,讲解Spring Cloud的常见用法及原理。让微服务的开发更加方便、快捷,让微服务应用更加稳定、可用。
理论结合实战,透彻理解分布式架构及其解决方案。
面向人群
1、工作1-5年需要突破瓶颈
2、传统行业转型进入互联网行业的人群
在技术深度和技术广度上得到飞跃的提升。成为互联网行业所需要的IT型人才
微框架
1、与微服务之间的关系
2、 热部署实战
3、核心组件Starter、Actuator、AutoConfiguration、Cli
4、集成Mybatis实现多数据源路由实战
5、集成Dubbo 实战
6、集成Redis缓存实战
7、集成Swagger2构建API管理及测试体系
8、实现多环境配置动态解析
Spring Cloud
1、Eureka注册中心
2、Ribbon集成REST实现负载均衡
3、Fegion声明式服务调用
4、Hystrix服务熔断降级方式
5、Zuul实现微服务网关
6、Config分布式统一配置中心
7、Sleuth调用链路跟踪
8、BUS消息总线
9、基于Hystrix实现接口降级实战
10、集成Spring Cloud实现统一整合方案
Docker虚拟化
1、Docker的镜像、仓库、容器
2、Docker File构建LNMP环境部署个人博客Wordpress
3、Docker Compose构建LNMP环境部署个人博客Wordpress
4、Docker网络组成、路由互联、Openvswitch
5、基于Swarn构建Docker集群实战
6、Kubernetes 简介
漫谈微服务架构
1、SOA架构和微服务架构之间的区别和联系
2、如何设计微服务及其设计原则
3、解惑Spring Boot流行因素及能够解决什么问题
4、什么是Spring Cloud,为何要选择Spring Cloud
5、基于全局分析Spring Cloud各个组件所解决的问题
源码分析
(好的程序员,一行代码一个设计就能看出来,源码分析带你品味代码,感受架构)
详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。
1-10年工作经验的人群
帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其所以然。把知识变成自己的
常用设计模式
1、Proxy 代理模式
2、Factory 工厂模式
3、Singleton 单例模式
4、Delegate 委派模式
5、Strategy 策略模式
6、Prototype 原型模式
7、Template 模板模式
Spring5
1、IOC容器设计原理及高级特性
2、AOP设计原理
3、FactoryBean与BeanFactory
4、Spring事务处理机制
5、基于SpringJDBC手写ORM框架
6、SpringMVC九大组件
7、手写实现SpringMVC框架
8、SpringMVC与Struts2对比分析
9、Spring5新特性
MyBatis
1、代码自动生成器
2、MyBatis关联查询、嵌套查询
3、缓存使用场景及选择策略
4、Spring集成下的SqlSession与Mapper
5、MyBatis的事务
6、分析MyBatis的动态代理的真正实现
7、手写实现Mini版的MyBatis
团队协作
(团队大于3个人之后,你需要去考虑团队合作,科学管理)
工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。提升开发效率和团队协作效率,让自己有更多时间来思考
面向人群:具有1-5年工作经验的人群
Maven
生成可执行jar、理解Scope生成最精确的jar
类冲突、包依赖 NoClassDefFoundError问题定位及解决
架构师必备之Maven生成Archetype
Maven流行插件实战、手写自己的插件
Nexus使用、上传、配置
对比Gradle
Jenkins
搭建Jenkins自动部署环境
Jenkins集成maven、git实现自动部署
testpreproduction 多环境发布
Jenkins多环境配置、权限管理及插件使用
Sonar
使用Sonar进行代码质量管理
关于代码检查工具FindBugs/PMD的运用
SonarQube代码质量管理平台安装及使用
使用Jenkins与Sonar集成对代码进行持续检测
Idea与Sonar集合的使用
Git
什么是Git以及Git的工作原理
Git常用命令Best practise(避坑教学)
Git冲突怎么引起的,如何解决
架构师职责:Git flow规范团队git使用规程
团队案例分享(买不到才是最贵的)
性能优化
(追求高效、科学调优,不靠碰运气)
理解性能优化
性能基准
性能优化到底是什么
衡量维度
JVM调优
知其然,知其所以然
详解什么是JVM运行时数据区
详解什么是JVM内存模型JMM
详解GC可达
详解各垃圾回收器使用场景
实战MAT分析dump文件
Tomcat调优
How if works探查Tomcat的运行机制及框架
分析Tomcat线程模型
Tomcat系统参数认识及调优
基准测试
MySQL调优
理解MySPL底层B+Tree机制
SQL执行计划详解
索引优化详解
SQL语句优化
成功的人不是天降恩赐,机会都是留给有准备的人,作为一名程序员需要不断学习,让自己拥有足够强大的能力才能去想高薪。让你做个什么事情你都做不了,还看不到你好好学习,如果你是老板,你愿意将高薪给这样一个可有可无的人么?他凭什么给你高薪,你有什么能力让人给你高薪?
电商项目实战
大型电商分布式系统应用实践,利用云服务器搭建真实的开发和部署环境,千人在线参与开发。
由浅入深的,带你从零到项目发布上线与运维,让你体验真实的企业级项目开发过程,掌握大牛的编码思维、经验与技巧。
1、具有1-5年工作经验的人群。
2、具备独立开发和搭建分布架构系统的能力。
3、学习完后相当于具备2年以上互联网开发经验。
用户认证
用户注册
SSO单点登录
第三方登录
UI页面拦截
业务拦截
店铺、商品
聚合检索
动静分离
店铺管理
商品管理
订单、支付
订单号统一生成规则
下单流程管理
库存管理
购物车
优惠券支付
积分支付
第三方支付
数据统计分析
用户行为分析
行业分析
区域分析
通知推送
融云推送
消息中间件
用户群聊
点对点聊天
文件断点续传
想要学习以上课程加Q2094504877咨询
java架构\多线程\高性能群:371077031
网友评论