作者 | 骆俊武

来源 | 武哥漫谈IT(ID:BestITer)

每个人都有成长的渴望,也都会遇到成长的瓶颈。

一个读者问我:如何才能训练成为一个编程高手?

先简单说下这个读者的背景:工作 3 年多,目前在大厂做后台开发,身边有不少编程高手,是他想要追赶的目标。

最近半年时间,他花了一些精力在研究源码和底层原理上,但总觉得这些知识和实际工作衔接不好,提升很慢,学习动力也越来越差,希望我能给点建议。

我和他语音聊了半个小时,讲了一些我个人以及身边同事的案例。交流下来后,双方都有所启发。所以再次整理下,分享给大家。

小编推荐一个学C语言/C++的学习裙【  712,284,705】,无论你是小白还是进阶者,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

何谓 “编程高手” ?

我觉得能分成这样 3 类:

第 1 类:天赋和成就都很高的人中龙凤,比如能一个人写出 WPS 的求伯君、一个人开发出电子邮件 Foxmail 的张小龙,对开源领域影响很大的章亦春等人。

第 2 类:有不错的口碑同时广为人知的技术大牛,他们一般在知名公司的重要岗位任职过,对技术纯真热爱,同时热衷分享,比如耗子哥、阮一峰、尤雨溪等人。

第 3 类:工作中被我们视为崇拜对象、未来有希望企及的高 P 或者架构师。

前面两类不在我的圈层射程内(除了跟耗子哥在亚马逊有过一面之缘以外),因此本文主要聊下第 3 类人。这个也是绝大部分读者最关心的、同时可以设定为超越对象的群体。

这样就有了一个新问题:既然想成为第 3 类人,那如何给第 3 类人下一个相对准确且具象的定义呢?(如果目标都是模糊的,就难言超越了)

这其实是一个很有意思的问题,每个人的答案可能都不一样,因为编程水平的高与低本身就是一个相对的概念。

我先说一下我的看法。

刚毕业那会,我眼中的编程高手是我的同事 - 超哥,他是亚马逊的架构师,团队里面技术级别最高的人(后来他做到了亚马逊中国首架的位置,现在也算圈内比较知名的大牛了)。

超哥是那种能搞定一个复杂项目(跨多个系统),从架构设计、到编码、到自动化测试、再到运维工具、甚至写文档都非常全面的人。显然是我这个刚毕业的菜鸟极其崇拜的大佬。

再后来,我工作了四五年,走向了技术管理路线,因为带团队的原因,我又多了一个新视角来审视编程厉害的人。

对比所谓的 PPT 架构师、以及讲到技术原理就满嘴跑火车而编码能力却稀松平常的人,我倾向给「编程高手」下一个更务实的定义:那就是实际工作中,能做到高效率、高质量、且稳定输出的人

看似容易,实则很难。我对这个定义的详细解读如下:

高效率:编程效率能做到团队中的 Top,对于复杂需求或者复杂问题能够快速理解,具备将复杂工作拆解成一系列简单子问题并搞定这些问题的人。他们能从实际场景出发,有造轮子的能力,也有不造轮子的觉悟。

高质量:编程质量能做到团队中的 Top,设计方案的合理性、编码的严谨性、测试方法、监控运维方案等,都能思考全面的人。

稳定输出:给高效率和高质量增加的限定。我觉得只有量变引起质变,真正形成了自己的方法论,能持续搞定一类问题,而不是单个问题的人才算是高手。

也许你会说要同时做到这 3 点太难了,但是实际工作中,一定有人能做到某个点或者某几点,那么以他们作为这一点的标杆即可。

因为所谓的「编程高手」不过是我们设定的一个目标而已,你清楚这个目标是什么就足够了,不一定非得安在同一个人身上。

如何理解 “底层知识” 的价值?

要成为一个编程高手,底层知识是必不可少的。这是一句正确的废话,就不展开解释了。

读者真正的问题在于:如何将底层知识和实际工作衔接起来,做到相辅相成?

先看一个具体的例子。对于简历中写自己做过性能优化的候选人,我面试时比较喜欢问:你是如何定位性能瓶颈并完成调优的?如果再次碰到此类问题,你的详细思路是什么?

很显然,这是一个系统性的工程问题,能同时对技术深度和宽度进行考察。

不仅仅是应用层的代码,还包括所使用的框架、中间件、虚拟机、网络甚至操作系统等等。有性能指标等基础性的知识,有监控和压测工具的运用,还有成体系的排查思路和优化方法等等。

如果是编程低手,他们的答案通常有这几类:

性能指标都不清楚,遇到问题也不知道该用什么工具,这一类人应用层都不达标。初步定位到一个疑似瓶颈点后,就着手优化,最终解决的只是一个浅层次的性能瓶颈问题,根本原因并未触达到。能定位到根本原因,但是对于解决方案的合理性缺少深入思考,不追求极致,最终只是用了曲线的方案再次隐藏了性能问题。

通过这个例子,我其实想说明两点:

不具备底层知识,你的视野根本就触达不到底层的东西,思维以及能力永远只能停留在应用层面,能解决的问题有限。读源码、学习各种原理,所有这些都只是学习和巩固知识的过程,真正体现编程水平的是实际解决问题的能力,因此如何将知识变成有效的经验?这个才是关键,做不到要么是实践不够,要么是压根没研究明白。

然后,我们再回到问题身上:究竟如何才能做到底层知识和实际工作的衔接呢?如果衔接不好,那问题出在哪个环节?

大家可以先思考下:过往工作中那些对你编程能力帮助很大的经历,你认为你能获得提升最关键的因素是什么?是底层知识的储备吗?

细想一下一定不是,而是发现问题的能力。(注意:我说的是最关键的因素,并不是否认底层知识的储备不重要)

大家可以去观察一个工作中很常见的现象:同一个问题你能看到哪一层?而编程高手又能看到哪一层?谁能更快地贴近问题的本质?谁又能衍生出一系列的问题?这其实就是「发现问题」的能力体现。

只有当你意识到它是一个值得深挖的问题时,才会有一层一层的思考,一层一层的分析。

那应该如何提高这方面的能力呢?其实就是思考力的提升过程,除了观察和刻意练习,我想不出更好的建议。多看高手是怎么做的?遇到问题时自己多问几个为什么?多反思自己的思路是否正确?日积月累水平自然会提高。

当你具备了发现问题的能力,就相当于给知识和经验之间架起了一座桥梁,真正做到相辅相成以及互相驱动。

成为 “编程高手” 的几点建议

编程作为一门实践性的学科,多动手解决问题是最基本的要求了,解决问题越多、越难,能力提升越快。

而在这个过程中,如果有知识输入(底层知识的储备),还有思考的加成(发现问题的能力),编程水平的提升会更加迅速。

我带过的团队里面,还有一类人总说自己技术进步很慢,工作没有挑战。但是当团队遇到一个技术难题时,他根本没有意愿去做深入了解,嘴上说热爱技术、渴望成长,但是却看不到行动,这种人是永远成为不了编程高手的。

真正的热爱来源于行动上的投入,不是找借口,不是追求舒服,这是很重要的一个区别。

编程高手是如何练成的?这样看来,它其实是一个体力、脑力、心力的修仙之路。

C语言是每个想要学习编程的小伙伴首要学习的语言~

如果你也想要学习编程,接受全面系统的指导。这里有一个学习基地推荐给你。【点我直接进入群聊】

前亚马逊工程师、现大厂技术总监与你分享:编程高手是如何炼成的!相关推荐

  1. 八成互联网电视系统非法采集用户数据;前亚马逊工程师被定罪;雅虎将在香港测试元宇宙技术 | 每日大事件...

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 01.中国信通院:八成互联网电视系统存在非法采集共享用户数据问题 近日,中国信通院联合电信终端产业协会发布了 < OTT 终端数据安全和个人 ...

  2. 前亚马逊工程师:广告系统架构解密

    一.无处不在的广告 广告的形式分为线上和线下模式. 线上广告以互联网的高速发展作为媒介,在 pc 端和移动端有着多种多样的发展模式: 线下广告以传统方式,以公交站牌.门头.交通等媒介的发展模式. 在当 ...

  3. 前亚马逊产品经理:TikTok的真正优势,并不是算法

    作者 | Eugene Wei 译者 | 小大非 策划 | 蔡芳芳 在前段时间的风波中,TikTok 的推荐算法一度成为大家争相讨论的话题中心.但在前亚马逊产品经理(同时也是亚马逊战略规划部第一位分析 ...

  4. 亚马逊工程师论各种编程语言的优缺点

    亚马逊工程师论各种编程语言的优缺点 "我本来为亚马逊开发者杂志本月的期刊写的,但是发现我写的东西没法见人. 所以我就把它塞到我的博客里了,我的博客反正没人看的.除了你以外. 圣经记载:在远古 ...

  5. 以太坊拜占庭硬分叉成功!前亚马逊首席科学家加盟京东金融;俄罗斯将发法定数字货币...

    今天,Fintech行业又有哪些不可错过的大事发生?雷锋网AI金融评论栏目"Fintech"晚报将为你搜罗业界最新资讯! 以太坊拜占庭硬分叉成功! 雷锋网10月16日报道,今日以太 ...

  6. 移远通信推出超小尺寸5G模组;前亚马逊高管加入瑞典SAAS企业咨委会;阳狮集团推出阳狮营销咨询业务板块 | 全球TMT...

    新品 移远通信推出基于展锐唐古拉5G基带芯片平台V510的超小尺寸5G模组RG200U,相比传统LGA 封装5G模组尺寸减小约三分之一.RG200U尺寸为30.0mm x 41.1mm x 2.85m ...

  7. 前亚马逊中国总裁王汉华出任好耶CEO

    11月19日消息,腾讯科技今日获悉,好耶集团已任命前亚马逊中国总裁王汉华博士为好耶集团首席执行官,全面负责好耶的战略和执行.该任命将于2012年12月1日正式生效.原好耶集团董事长兼临时CEO陈恂博士 ...

  8. 亚马逊自养号测评技术能全自动下单吗?

    亚马逊自养号测评技术能全自动下单吗? 很多小伙伴会过来咨询说,亚马逊测评听说能全自动的下单了?这种听说听听就好,某宝十几年了,有全自动的吗?更何况是大公司亚马逊? 目前市场上有一种AI智能养号,什么是 ...

  9. 亚马逊云科技数字化技术撬动千亿市场,民航客机改装是好生意

    很多人对庞大的民航客机的印象还停留在其天文数字般的价格,随着运营时间的推移,将客机转货机的航空维修产业应时而生.民航业客机改货机的市场不断增长,面对飞机客改货过程中的海量图纸与复杂工艺流程,汉端科技在 ...

最新文章

  1. STM32时钟源时钟系统配置
  2. Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)
  3. 图解Oracle用户管理
  4. foreach迭代ArrayList时,真的不能删除元素吗?
  5. 魏代汉,晋代魏,背后是士族与寒族的博弈,也是士族门阀的形成时期
  6. docker配置 nacos_Nacos - 阿里开源配置中心
  7. java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...
  8. tomcat原理详解和请求过程(涉及网卡、套接字等)
  9. Vue开发工具dev-tools的安装与使用
  10. Steam Deck 游戏掌机可运行 Windows
  11. 二维码制作生成器有哪些?分享几个二维码制作生成器
  12. Modelsim仿真实验
  13. Python包镜像网站
  14. 5月6日LCAC第十三次会议重要信息摘取
  15. 地形系统shader学习
  16. java ssm羽毛球馆管理和交流平台系统
  17. shell变量的定义
  18. 2020教师节送老师什么礼物好呢?
  19. Windows CE操作系统的触摸屏驱动程序模型
  20. 江民杀毒 90天试用序列号申请

热门文章

  1. memoQ助力西门子全球员工宅家翻译
  2. ZBrush 2018软件安装激活教程一点通
  3. Rythm.js 使用教程详解
  4. 扫描枪在Android 系统上面扫描的时候缺少一位,已解决百度输入法的问题
  5. FFmpeg函数记录2
  6. iOS 保存图片(视频)到相册
  7. 数字信号处理器DM6467T
  8. 内网穿透工具nps使用教程 - 来自内部交流群
  9. C++实现的基于NSM的简易数据库
  10. 自然语言处理(NLP)之求近义词和类比词<MXNet中GloVe和FastText的模型使用>