程序员如何在30岁后越老越吃香?
程序员是一门靠手艺吃饭的工作,最根本的就是技术能力。从初级到高级,从高级到资深,从资深到架构,就像爬楼一样,站的越高需要看到的视野越开阔。30岁前程序员靠体力,30岁后需要靠脑力,需要靠技术视野打开更广阔的职业生涯。程序员们很苦恼,技术层出不穷让人应接不暇,需要不停学习新的技术避免被淘汰,但是仅仅靠学习新技术就好了吗?所谓的技术视野到底是什么,又如何去提升呢?
1 驱动力
首先需要明白做一件事情一定需要一定的驱动力,那么对于提升技术视野的驱动力在哪呢?
兴趣
兴趣爱好是最好的老师,所以兴趣是第一驱动力。如果你对一门技术充满好奇心,你一定想尽办法弄清楚它的原理,并且迫不及待的进行实践。
谷歌有一个20%的计划,规定员工可以拿出20%的时间从事自己兴趣爱好的事情。于是从中诞生了Gmail, Google Glass等创新性的产品。这些产品的诞生第一原动力就是兴趣爱好!
态度与使命
兴趣不等于工作,日常工作往往枯燥乏味让人提不起劲,这时候靠什么支撑,可以多想想自己的态度和使命。每一件事情做完后可以反思,是否用了100%的能力,不要留有遗憾。做事也需要有使命感,比如阿里的"让天下没有难做的生意"、腾讯的"科技向善"、美团的"Eat better, live better",每一家伟大公司都有一个伟大使命,让你的日常工作和公司使命关联起来,瞬间是不是觉得自己在从事一项拯救地球的事业。
机遇和危机
吴军在<浪潮之巅>一书中描述了科技行业在过去几十年的巨大变化,基本上每隔十年都会迎来一次科技浪潮,90年代是PC时代产生了微软,00年代是互联网时代产生了谷歌、百度,10年代是移动互联网时代产生了Facebook、微信,下一个十年就在眼前,没有人可以知道未来十年的技术方向是什么,也许是人工智能? 是AR,VR? 是脑机联通?
对于程序员而言,技术的浪潮迫使大家要不断学习,如果不能成为时代的弄潮儿就会被后浪拍在沙滩上。举个前端技术的例子,最开始是HTML+CSS++JS三件套,后面JQuery解决浏览器兼容问题,然后出现MVVM框架Backbone,再到目前三大框架React、Vue、Angular,同时还有NodeJS可以让前端从事部分后端工作,跨平台从hybrid到RN到Flutter,平台从PC Web到移动端,再到小程序再到PC桌面端。可以看到短短10年内前端技术就发生了翻天覆地的变化,如果你不能紧跟技术的变化,那么很快就会被淘汰。
2 方法 - 个人篇
求知欲
这个和兴趣驱动力是一样的,要提升技术视野就需要自己永远保持对新事物的好奇心,要对新技术保持敏感度,如果听到不了解的事情要有兴趣弄明白,兴趣永远是最好的考试。
保持和外界交流的渠道,例如参加公司行业的会议、培训,广泛的阅读,多多跟踪领域内有名的行业专家的博客,关注行业著名的技术会议,例如Qcon、GMTC、Archsummit,也可以了解大厂的开发者会议例如WWDC、Google IO、Facebook F8等等,这些会议资料都是对外免费开放的。
避免舍近求远
大家往往会追求高大上的酷炫技术,但很多时候都是浅尝辄止了解不深入。其实很多开拓技术视野的机会就在身边,例如我们都会用的git代码仓库,里面涉及的Graph的存储、index技术、文件系统等等。我们可以多多观察日常接触的技术,挖掘其中的实现原理,往往可以开拓你的视野。
参与开源社区也是提升技术视野的一个好办法,可以从日常经常使用的框架入手,通过提issue或者PR参与进去,加入前期的讨论一定会有帮助。
追求极致
对于技术需要精益求精,遇到问题不要简单满足于通过Google 或者 Stack Overflow找到解决方案,而要弄明白具体原因。往往日常工作中琐碎的问题中潜藏着不少可以挖掘的技术点,遇到问题不逃避,问题背后可能是你巨大的盲区,解决这个问题,将意味者你掌握一个新的领域。
经常重构系统,每次重构都是渐进式的,每次重构都要追求比以前更好,在重构中能够采用新的技术、新的架构,从而扩充自己的知识体系。
加深对技术的理解
每一个技术都是为了解决某些问题而产生的,对于每项技术都应该了解其背景,了解其试图解决的问题域和了解技术如何解决这些问题。例如在多平台跨端这个问题上面,RN的出现就解决了原来Hybrid方式依赖浏览器渲染慢、不够流畅的问题,于是通过Virtual Dom渲染原生组件提升了渲染效率和用户体验。Flutter在此基础上更进一步,直接基于自身跨平台的渲染引擎来绘制UI,解决了RN在多平台体验不一致的问题。
在调研学习一项技术的时候,可以代入思考,技术提升之关键点先思考,后对比,然后反思,很多时候思路比实现更重要。
触类旁通
任何新技术不是空中楼阁,要了解技术血缘关系和演进的历史,由点到面形成知识图谱。很多时候技术也是跨学科,例如神经网络算法和生物学其实是很有渊源的,目前大热的神经网络系统最初的设计灵感就是来自人类大脑神经元的连接方式。
3 方法 - 团队篇
一个好的团队氛围可以让提升技术视野变得事半功倍,需要打造学习型团队
• 鼓励团队成员了解和学习前沿技术,并乐于分享
• 鼓励同学不放弃,遇到问题不是简单绕过,而且需要努力弄明白深层次原因
• 学习与实践结合,将新的技术应用于项目中
• 团队的成长就是你的成长
4 有用的资源
Github: 码农交友平台,提升视野、交友学习不二之选
国内知名的会议:
- QCon全球软件开发大会:https://qcon.infoq.cn/2019/beijing/
- GMTC全球大前端技术会议:https://gmtc.infoq.cn/2019/beijing/
- ArchSummit:https://archsummit.infoq.cn/2019/shenzhen/
国外知名开发者大会
- 苹果开发者大会:https://developer.apple.com/wwdc19/
- Google IO谷歌开发者大会:https://events.google.com/io/
- F8 Facebook开发者大会:https://www.f8.com/
国内外知名公司博客
- 阿里:阿里中间团队、阿里云系统博客、饿了么前端
- 腾讯:腾讯alloy team、腾讯CDC
- 头条:头条技术博客
- 百度:百度用户体验中心、百度EFE技术体系
- 美团:美团点评技术博客
- 携程:公众号 携程技术中心
- 360:奇舞团前端团队
- Google:Google blog
- Facebook:Facebook开发者博客
- Amazon:亚马逊开发博客
- 微软:微软VisualStudio博客
有兴趣同学可以关注微信公众号奶爸码农,不定期分享投资理财、IT相关内容: