程序员最重要的能力是什么?

简介: 不同阶段的不同需求

不管是什么行业,无论是工作还是学习,我们经常会思考一个问题:对于目前的职业来说,最重要的能力是什么?


今天我们邀请了 4 名淘系技术的工程师,给大家分享一些他们认为最重要的能力,希望能够为你提供一份参考。


01 - 淘系技术部 - 繁易


对写代码始终充满兴趣,这是我一切的源动力。


过往 - 从 HR 专业学生到程序员繁易


我是一名半路出家的程序员。高中读的文科,大学选的人力资源管理专业,生活如果按部就班的下去,这个世界或许会多一位叫繁易的 HR 或者猎头,波澜不惊。


引导我走上程序员之路的故事也很简单,2014 年刚入学,大一课程少,期末时便在网络上自学起了 C 语言,当时没有电脑就在手机上的 C 语言软件敲着简单的 if/else,就这样我入坑了。


往后的半年中,编程的学习也并没有像想象中的那样顺利。学习进度停滞不前。我还清楚的记得当时的自己:“会用20门语言输出Hello World!”,“别人一周就能上手的 BootStrap 我学了四个月” 等诸如此类的事情。


虽然整个过程中极其令人丧气,但我始终知道,我对写代码这件事情是抱有极大的兴趣的。在当时同龄的同学已经纷纷在准备考证、找实习之类的事情,而我依旧乐此不疲。


我想,如果不是因为真的有兴趣,我大概会放弃编程,选择做一些“更适合”自己的工作


成长 - 从“年轻工程师”到阿里前端技术专家


在学写代码半年后,偶然的一个契机,我找到了愿意带我写代码的同学,并磕磕绊绊的完成了第一次 Ajax 操作。那之后的我仿佛开窍了一般,编程世界的大门,终于向我敞开,任我探索和遨游。


直到有一天,我遇到了瓶颈。2016 年的前端,技术日新月异,当时的我颇有一些手足无措,总觉得时间不够用。于是在参加当年的 JSConf 时,遇见了当时前端圈的名人贺师俊(Hax),于是便壮着胆上去交流了一番。


对话的内容我只记得个大概,在交流结束时我向贺老致谢,他回复我说:“学东西不要有那么强的功利心,而且对于我来说,能帮你们这些年轻的工程师就非常好了。”


在那时候我发现,对编程的兴趣已经托着我从学生过渡到大家眼里“年轻的工程师”了,我想我会继续带着兴趣走下去,尽全力去 Coding 就行


时间一晃眼已经过去了 5 年,当年的学生,也从“年轻的工程师”蜕变成了阿里的前端技术专家,身份在变、环境在变、技术在变,只有对代码的兴趣没有改变


开源 - 从 Node.js 使用者到 Node.js Collaborator


由兴趣驱动的源动力,往往是纯粹且不掺杂利益的,而在软件世界中,兴趣驱动与开源精神是高度契合的

在 2020 年冬季到来的时候,我遇到了新的瓶颈,想学习更多 Node.js 的知识却不知从何下手。


这一次我的选择是参与 Node.js 开源社区的协作。我开始阅读 Node.js 的源码,解决 Github 上的 Issue 等。在事后提名 Node.js Core Collaborator 时,我统计了一下,两个月的时间内我一共提出了 50+ 的 Pull Request。


现在回头来看,这些与实际工作“无关的兴趣”,最终支撑着我走的更远,现在的我在 Node.js 架构团队,全职负责着 Node.js 的工作,个人的眼界也开拓了许多。


总结 - 兴趣与代码


在别人眼里,我是枯坐一整天的“怪人”,在我的脑海中,我是“键新世界(阿里 2018 年校招 Slogan)”的程序员。


因为是兴趣,所以获得成长时会快乐,而停滞不前时也不会焦虑与抱怨。对代码的兴趣支撑我走到了现在,我想后面也会是一样。


这就是我眼中程序员最重要的能力与我的经历。


02 - 淘系技术部 - 宝澜


在我的角度看,不同阶段不同场景都会产生问题,他们分别对应不同的能力,需要分析问题根本原因并通过不同手段解决,更考验人的综合能力。


作为程序员,你认为最重要的能力是什么?


新手刚入门时,需要掌握写代码的能力,熟悉工作后,我们不能仅仅满足于是代码的搬运工,还需要具有深入分析问题和精准解决问题的能力。这个能力不是纵向某一个领域,更类似于思考问题的方式。


在项目合作、业务沟通、个人成长、人际交往、绩效考核各类场景,我们都会遇到一个共有的名词”问题“,由于“问题”产生的背景、原因和影响都不同,如何分析问题个根本原因并通过各种手段去解决它,非常考验我们个人的综合素养和能力。


为什么你会认为这个能力是最重要的?


掌握了这份能力,(你就是勇敢牛牛,不怕困难!)即使以后不是程序员,对我们其他的职业发展方向也会有很多帮助。


你通过什么事情认识到这点?


总结工作中的规律并将这类经验抽象化。


生活中的任何事物都有其生命周期,无论是食物、工作还是代码,都存在开始,发展,结束的过程。


而影响我们发展的周期和发展趋势中,最重要的影响因素就是“问题”,我们能否发现阻碍我们发展的“问题”,寻找产生的原因并修复它,决定了我们这个函数是正趋势还是负趋势。


你现在是否拥有这样的能力?如果没有,你是怎么学习调整的?


现在我个人还不完全具备这种能力,因为这个能力它是伴随着我们对“未知”的深入了解才逐渐增强的。
当我们在一个工作中遇到了困难,没办法突破时,其实往往是因为我们对它的不了解或者是我们对未知事物的恐惧,能我们为了发现这个“问题”寻找解决这个问题的“方法”时,就需要不断学习学习学习,俗话说“知己知彼百战百胜”,了解对手,才有机会战胜对手,才能找到对手的“痛点”和“软肋”,而学习的过程,就是我们寻找问题产生原因的过程,找到"软肋",就是我们找到解决方法的过程。

一般我会通过这样一个流程去提升:


分析


  1. 认清问题:先好好审题再答卷,不要停留在“表面”


解决


  1. 寻找已有方案:先看别人怎么解决,如果没有,寻找问题之间的共性并关联起来,产出自己的解决方案;
  2. 拆解问题:大矛盾自己一个人解决不了,就将其拆解,分清主次,或者寻找能帮助解决问题的人;
  3. 平时多积累经验,学习别人的思维方式;




简历投递渠道


阿里拍卖,万亿市场,创新赛道!


拍卖技术部-技术质量团队 期待你的加入。


联系邮箱:sanxiao@taobao.com


03 - 淘系技术部 - 柳千


于我而言,最重要的能力是「好奇心」,或者换个词叫「求知欲」、也可以叫「探索精神」。


保持好奇心


我是一个充满好奇心的人,我喜欢问为什么?在我五年多的职业生涯中,有接近 2/3 时间在做 Cloud IDE 相关的工作,可以说正是好奇心驱使我做了这么多年,以至于有段时间完全忘记了自己本职是一名「前端工程师」。记得那个著名的前端面试题吗?—— 从输入 URL 到页面展示到底发生了什么?我想知道从按下「.」符号到 IDE 弹出提示框之间到底发生了什么? 为什么 VS Code 相比同类技术栈的产品这么快?Refactor 是如何实现的?当你尝试自己去解答某个问题时,一定是将这个问题拆解为很多个小问题,一步一步深入下去,最后再找到答案。重复这个过程很多次会不断的锻炼你的思维模式,也一定会学习到优秀的架构设计、更好的源码阅读与调试技巧、性能优化技巧等等...软件行业每一个看起来很小的点,深入下去都包含着非常复杂的背景和设计。可能有人会问为什么我一个「前端工程师」要了解这些东西,前端不是应该只关心切图画网页吗?还是那句老话,我先是一个工程师,然后才是前端工程师。


不设限


前端只是软件开发领域中很小的一部分,如果我只是习惯性的将自己的思维限制在「前端」这个领域,那么很难获得真正的成长。保持对其他领域的好奇心与求知欲,不要给自己太多诸如「xxx 工程师不需要知道这些」的限制。前端程序员可以了解游戏领域的知识吗?后端程序员可以了解音视频处理吗?客户端程序员需要了解高并发、容器化吗?如果你只需要一技傍身来解决生存问题,那基本是不需要的。但我还是建议对自己感兴趣的事物保持好奇心,勇于探索各种不了解的领域,在这个过程中不断吸收新的知识、技能,也许收获会比单纯得到一个问题的答案更多。

放大到程序员这个职业也是一样,不要将自己陷入程序员的思维定式中,觉得「程序员应该xxx,不应该xxxx」。我认识的许多优秀的工程师涉猎非常广泛,摄影、健身、游戏、B 站 Up 主、视觉设计。我也认识几个优秀的设计师能写一手代码、画 PRD。虽说隔行如隔山,但我相信程序员的学习能力都不会太差,适当的接触其他领域给自己带来的是全方位的成长。


04 - 淘系技术部 - 福豆


信息技术行业的发展日新月异,每天都会出现新内容,一直保持学习的状态非常重要。


保有好奇心的重要性


信息技术区别于传统行业,发展很快,新技术日新月异,昨天是传统的统计学习,今天就是深度学习,明天可能就是量子计算。


在这个“长江后浪推前浪”的大潮中,保持对新事物的好奇心和探索就显得尤为重要。


好奇心可以让我们主动接触新技术,而不是被迫的后知后觉,可以让我们的日常工作变为自身的兴趣,而不会觉得工作是个负担,只为了完成绩效,同样好奇心也可以让我们的工作做的更加出色,不仅仅满足于完成和结束。


在我长期学习和工作中,逐渐感觉一直保持对新事物的兴趣可以让我忘掉加班加点的疲劳,觉得一天的思考让自己在项目或者业务上迈出了一小步,会觉得比较有成就感,在一步步推动一件事情发展。


比如以前完成第一个研究课题,又或者刚开始工作时接触第一个比较有挑战性的项目时,可以直接参考的解决方案都屈指可数,要把一个方案落地或者完善成论文都不是一蹴而就的。在这个过程中,我遇到过许多想放弃的时刻,明明有更稳健、风险更小的任务,为什么我要偏偏走上这条路,也成了每天反问自己的问题。幸运的是,我仍然保持着本科学生时代对知识的好奇,想想自己在这个探索的过程中还可以满足自己的兴趣,能够提升自己解决问题的能力,并不是仅仅为了完成任务,从而让自己在困难的时候坚持了下去,也在项目的后期更加专注解决问题本身带来的喜悦感和成就感,而不是关注功利性的东西,进而最后让自己满意的看到努力的结果。


保持好奇心可以使工作和生活处于一个良性循环的过程,将自己的工作转变为探索未知的兴趣,融入自己的生活一部分,也同时让好好工作真正为生活服务。


此外,基于好奇心促成项目的成功,让我对于未来的业务或者项目更加有自信,对后面的新事情更加有激情,不疲倦。


每天不忘学习新技术,一点一点积累,也不会被落伍,让大脑时刻进步,掌握学习学习的方法而不仅是完成一项任务。


结语


如上,没有永恒最重要的能力,只有对于不同阶段来说相对更重要的能力。保持好奇心,保持学习的状态,去面对不同阶段的不同挑战吧。


相关文章
|
设计模式 供应链
阿里高级技术专家方法论:如何写复杂业务代码?
面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。
19439 2
|
微服务 测试技术 Java
阿里技术专家详解 DDD 系列- Domain Primitive
关于DDD的一系列文章,希望能继续在总结前人的基础上发扬光大DDD的思想,但是通过一套我认为合理的代码结构、框架和约束,来降低DDD的实践门槛,提升代码质量、可测试性、安全性、健壮性。
62369 17
阿里技术专家详解 DDD 系列- Domain Primitive
|
Java Docker 容器
Docker 安装 JDK
一、查看 JDK 版本 访问 JDK 镜像库地址:https://hub.docker.com/_/openjdk/tags。 可以通过 Tags 查看其他版本的 JDK,默认是最新版本 open:idk ,你也可以在下拉列表中找到其他你想要的版本。 二、拉取 JDK 镜像 拉取 jdk8 的镜像: docker pull openjdk:8 这将从Docker Hub上拉取名为"openjdk"的官方仓库中的JDK 8镜像。一旦拉取完成,您就可以在容器中使用JDK 8了。 三、查看已下载的镜像 使用docker images命令可以列出所有本地已下载的Docker镜像: docker ima
4961 1
|
SQL 缓存 Java
殷浩详解DDD系列 第三讲 - Repository模式
# 第三讲 - Repository模式 **写在前面** 这篇文章和上一篇隔了比较久,一方面是工作比较忙,另一方面是在讲Repository之前其实应该先讲Entity(实体)、Aggregate Root(聚合根)、Bounded Context(限界上下文)等概念。但在实际写的过程中,发现单纯讲Entity相关的东西会比较抽象,很难落地。所以本文被推倒重来,从Repository
38169 8
|
1月前
|
人工智能 Cloud Native 数据可视化
PyCharm 2025.1 完整教程:下载安装 + 中文设置 + 激活,一步到位,附安装包
PyCharm 2025.1 发布,重磅升级AI代码补全、类型推断与ruff集成,提升开发效率。支持渐进式补全、智能提交信息生成、冲突可视化解决,优化启动速度与内存占用,全面增强云原生及现代Python开发体验。
588 5
|
设计模式 弹性计算 人工智能
阿里技术专家详解DDD系列 第四讲 - 领域层设计规范
在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层、基础设施层的设计。但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Entity、ValueObject 还是 DomainService是值得用心思考的,既要避免未来的扩展性差,又要确保不会过度设计导致复杂性。
|
新零售 人工智能 Cloud Native
【年度重磅】阿里淘系全年技术总结黑皮书,1500页免费下载!
淘系技术将2020一整年的精华内容梳理合并,重磅推出【淘系技术2020技术年货】。在这本书中,你将看到:各技术栈下时新前沿的技术讲解与方法技巧、淘系技术大牛的职场成长经验&学习问答实录、年度精选技术人员必读书单、淘系经典开源项目介绍、2020淘系顶会 paper 全文。
47521 0
【年度重磅】阿里淘系全年技术总结黑皮书,1500页免费下载!
|
机器学习/深度学习 算法 前端开发
公开下载 |《2022技术人的百宝黑皮书》来了!
大淘宝技术2022一整年干货合集,你今年错过的知识和分享,还来得及补救。
1464 0
公开下载 |《2022技术人的百宝黑皮书》来了!
|
消息中间件 测试技术 领域建模
DDD - 一文读懂DDD领域驱动设计
DDD - 一文读懂DDD领域驱动设计
45601 6
|
设计模式 消息中间件 缓存
DDD系列第五讲:聊聊如何避免写流水账代码
在过去一年里我们团队做了大量的老系统重构和迁移,其中有大量的代码属于流水账代码,通常能看到是开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用性比较差。所以这讲主要想系统性的解释一下如何通过DDD的重构,将原有的流水账代码改造为逻辑清晰、职责分明的模块。
11421 3
DDD系列第五讲:聊聊如何避免写流水账代码