【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

如何成为优秀的程序员?

  • 2020-02-03
  • 本文字数:2309 字

    阅读完需:约 8 分钟

如何成为优秀的程序员?

今天关注了一个很有意思的问题“中国目前最优秀的程序员有哪些?”。和小时候有人问“你的理想是什么?”,你说想当科学家一样,作为程序员的理想就是成为最优秀的程序员。当然这个问题更加宽泛,生活中有很多事情不是自己想做就能够做到的。你不再是一个单独个体,往小里说,需要养家糊口,往大里说,每个人都生活在时代的洪流中。


有时候回顾过去,我往往会产生一些不切实际的想法。可能会觉得没有生活在马拉多纳的时代,一睹球王的风采;还有可能觉得没生活在冷战时期,人类登月成功;也没有看到第一台电脑问世。但仔细想想,有的时候反而庆幸,我们生活的时代,没有战乱,也没有饥荒,这已经非常幸运了。人类茹毛饮血,之前几千年的物质十分匮乏,每隔一段时间就会为了生存而发动战争。目前已经很少有人因为饥饿而身亡,也很少有人因为战争而送命了。细细数来也见证了不少历史,没有马拉多纳,但是梅西已经拿了 6 个金球奖了;没有见证登月,但是有幸看到 spacex 火箭回收;没有见过第一台电脑问世,但是经历了第一台智能机问世。如果我从未来回忆过去,可能也会羡慕过去能够见证如此多的东西。


再回到之前的问题,如何在有限的范围内朝着优秀的程序员这个方向努力呢


我们可以大致将这些顶尖的程序员分为 3 类:


第一类 ACM 类。这类程序员最重要的就是基础好,算法等基础知识比较扎实,这是很多程序员欠缺的,并且需要一定的刻意练习。为什么这么说呢?由于程序员大部分时候使用的都是库函数,不用自己造轮子,所以大部分人对算法的实现了解的没那么清楚。再加上 python 的流行,对 c++了解的程序员也越来越稀少,也就是说理解计算机底层的程序员越来越少了。在基础不扎实的情况下,遇到简单的问题可以解决,遇到稍微复杂一点的问题就会花费很长的时间,并且效率低下。这方面我很欠缺,虽然学的多,但是理解的少,并且不成系统,都是零敲碎打的学一下,基本功不是很扎实。有 ACM 经验的程序员,一是逻辑思维比较强,二是实现代码的基础比较好。


第二类开源社区类。这类程序员一般都是各大公司的核心开发成员,也酷爱写代码,真正做到了兴趣和工作相结合。作为开源社区的维护者和贡献者,这类程序员都比较专注,也乐于实现自己的想法,并且一直在某一领域深根细作,长期坚持输出。开源精神代表了兴趣,贡献和专注。


第三类博客类。这类程序员是真正的骇客,从来都是空杯心态,能够长期坚持学习,并且有自己的思考、理解和感悟。输出的想法和知识都比较接地气,是书本中学不来的。这类程序员真正的影响了一大批程序员,因为目前的工作中的很多问题都是 google 搜索来解决的。乔布斯说求知若渴,对知识和思想的渴望可以超越一切,言传身教也不过如此了。


根据上述的总结,那么我们应该如何提高呢?


  1. 持续的练习。基础的提升是最难的,俗话说台上一分钟,台下十年功,基础的提高是需要日积月累的。有的时候为了应付考试和面试,突击式的学习算法和数据结构,结果很容易忘记。有的时候往往觉得自己理解了对应的算法,结果过一段时间又忘记了。针对这种情况我也没太多好方法,也是突击学一阵,然后就聚焦于工作中具体的问题和业务了,很少能够沉下心来持续的学习算法、数据结构和设计模式等。再加上这部分知识的作用很难有立竿见影的效果,往往花费大量的时间和精力,有的时候还用不上,短期内很难收到回报,所以经常会有挫败感。


但学习基础知识的好处是能够锻炼人的思维,因为很多方法都是相通的,解决的问题多了,思维能力也上来了。无论是看开源代码,还是看专业书籍,都可以归结为提高基础的能力,这一部分需要持续的练习,才能收获,可以类比为练内功。


  1. 足够的专注。对所做的事情充满热爱,能够找到自己的方向,并且能够一直坚持在某一个方向持续的努力,这其实需要自己考虑清楚自己要什么,并且愿意长期坚持,这个领域可能是比较热门的,也有可能也没那么热门,就比如计算器一类的项目,或者一些基础的库函数,哪怕只有少量的人关注,也可以把它实现的很优美。

  2. 求知若渴。能够坚持持之以恒的学习,学习能力包括 2 方面,一方面是学习知识,另一方面是提炼并且输出知识,这 2 方面都做好了才叫学习。有的时候听课,发现有些人理解的很好,公式证明过程也回答的很好,但是真正做题的时候却不是很好。也就是说理解之后,还需要对知识分类形成知识体系,思考并且输出知识,这样才叫学习能力。这也是非常推荐的“费曼学习法”。

  3. 善于思考。我们遇到问题,往往就是直接去解决,而有些人会对问题做分类,把问题归为哪一类,然后针对这一类问题去找对应的方法解决。遇到问题能把问题抽象,类比到相同领域的问题,针对这类问题,业界可能有很经典的解法了,只要按照对应的方法就可以解决问题。思考还包括提问题,通过提问题来理解,为什么要这么设计,以及这么设计的原因,从而从根本上理解原理。

  4. 乐于分享。自己学习很简单,能够长期的输出知识却很难,看一本英文书很简单,但是翻译它却很难,能够把自己的想法知识贡献出来,让更多的人学习和讨论,分享知识的同时,自己也收获了很多知识。


如果能够长期坚持以上一点或者几点,我相信你一定会成为一名优秀的程序员,至少比以前优秀。


今天的分享就到这里,欢迎小伙伴在留言区留言,谈谈你的感想~~


原文链接:https://zhuanlan.zhihu.com/p/103485647


作者介绍


王方浩,前蚂蚁金服高级软件工程师。一直从事软件相关工作,是操作系统、大数据、自动驾驶相关技术的爱好者。


本文来自 DataFunTalk


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497017&idx=1&sn=488522cd89ca0a68bf4e55cdfe513d36&chksm=fbd74755cca0ce43879c6131556725b4c3fc06d4ed0232db0bc0465ae5a596b0d6e75dadcb1c&scene=27#wechat_redirect


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-02-03 10:001899

评论

发布
暂无评论
发现更多内容

全球云计算市场持续发力,但云身份管理能力认可度不足3成

行云管家

云计算 云服务 企业上云 混合云 多云

全国超10亿用户!AntDB数据库的电信核心交易替换之路

亚信AntDB数据库

数据库 通信 电信 运营商 数据库应用开发

想发自己的NFT,你要先搞清楚这6个问题

华为云开发者联盟

区块链 数据资产 NFT

从无到有,政务系统的全面可观测模板

博睿数据

智能运维 博睿数据 政务系统 全面检测

问题来了:4GB物理内存的机器上申请8G内存能成功吗?

Java全栈架构师

Java Linux 程序员 面试 程序人生

本周三晚19:00Hello HarmonyOS应用篇第7课—分布式应用开发

HarmonyOS开发者

HarmonyOS

【网络安全】VPN是什么?VPN与堡垒机有啥区别?

行云管家

网络安全 堡垒机 vpn

本周二晚19:00战码先锋第5期直播丨深入理解OpenHarmony系统启动,轻松踏上设备软件开发之旅

OpenHarmony开发者

OpenHarmony

腾讯云小微技术登顶权威榜单XTREME基准,跨语言技术迁移开发助力企业出海

科技热闻

国际权威报告:SaaS+AI大势所趋,腾讯云领跑国内科技公司

科技热闻

想要了解数字机器人如何赋能政企领域,一定不要错过这个论坛

王吉伟频道

RPA 机器人流程自动化 机器人开发 华为开发者大会2022 华为WeAutomate

应用实践 | Apache Doris 在网易互娱的应用实践

SelectDB

MySQL 数据库 最佳实践 apache doris 数据优化

国家先进计算产业创新(宜昌)中心正式落地 由中科曙光、升哲科技联合运营

SENSORO

人工智能 物联网 新基建 智慧城市

游泳馆应用软件开发:在线一站式服务,优化用户整体体验

开源直播系统源码

软件开发 APP开发 直播系统

面试时必问的五大问题

伤心的辣条

Python 软件测试 自动化测试 测试开发 软件测试面试

如何实现十亿级离线 CSV 导入 Nebula Graph

NebulaGraph

知识图谱 数据导入 Nebula Graph CSV 文件导入

Python小白何时能做自动化

伤心的辣条

Python 软件测试 自动化测试 接口测试 测试开发

数据关联最佳实践

观测云

可观测性 可观测

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南【附网盘资源】

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

melody SGS旋律麦克风链游开发模式分析

开发微hkkf5566

Mybatis省略@Param注解原理

mybatis 6月月更 @Param注解

CloudTTY:下一代云原生开源 Cloud Shell

Daocloud 道客

Kubernetes 云原生 开源项目 网页命令行

改变世界的开发者丨黑客松冠军,为听障儿童推开一扇“有声的窗”

华为云开发者联盟

云计算 华为云 GaussDB 听觉 听障儿童

ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

SphereEx

Java php MySQL 数据库 ​Apache ShardingSphere

新一代政务云的“前移”与“致远”

浪潮云

云计算

在线帮助中心对企业的作用及解决方案

小炮

LeaRun.Java表单快速开发工具

力软低代码开发平台

蓝凌叮当刘向华:如何用一款SaaS俘获年轻人的心?

ToB行业头条

2022中国信通院安全运营发展论坛成功召开

中国IDC圈

安全

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令

CRMEB

本地开发测试,局域网中使用IP地址访问项目网站

迷彩

网站架构 学习记录 网站开发 6月月更

如何成为优秀的程序员?_开源_DataFunTalk_InfoQ精选文章