是什么成就一个伟大的程序员?

我能坦诚地说没有哪次文本编辑器的改变使我成为了更好的程序员。 你积累的技巧、知识和经验才是方程式中最重要的部分。


按: 有很多人不关心自己天天使用的工具,这是一个阶段。有一部分人开始关注工具,但却容易忘记使用工具本来的目的。有一段时间确实迷失在各种工具之中,所以文章的开头部分让我很有感触。希望大家能够警惕类似的思维陷阱,分享此文共勉。

   我记得仿佛是昨天。那是2000年, Pargas 博士站在我们的数据结构课堂上谈论着一些 Y 数据结构的话题,同时一个 SSH 会话被投影到我们面前的墙 上。有人问了个问题,而他说了些类似于“好吧,如果你成为一个真正的计算机科学家你需要开始使用 vi 编辑器”。我想当他说这话时他在微笑,而且事后看来他 的说法完全不对,但像我当时那样年轻又易受影响,回到宿舍就立即着手训练自己如何使用 vi 。这大概持续了一阵子,但一旦我开始掌握窍门我发觉我在 vi 中工 作真的很快。

  快进6年,我被 TextMate 迷住了。我当时在做一份 Java 开发的工作,但同时在空闲时间学习 Rails 和开发  Rails 项目。当时感觉似乎我读的每篇文章和我看的每个视频都在展示如何使用 TextMate 实现文本编辑之禅。事实上当时每天使用 Eclipse 让我 充满了怒火。于是我买了台 Mac ,在打开它的十分钟内购买了 TextMate 。

  我能坦诚地说没有哪次文本编辑器的改变使我成为了更好的程序员。

  强大的工具只是不能使你变得“那么”好。你使用的工具确实重要,它们确实很棒。但老虎伍兹使用俱乐部里的垃圾装备仍然能击败我们所有人,梅西光着脚也会胜过我们,纳达尔也许能用一副60年代的经典木质球拍在网球场上击败我们全部,他也许用乒乓拍就能击败我。

  你积累的技巧、知识和经验才是方程式中最重要的部分。

   那么工具无法成就程序员,又是什么呢?我想成就一个伟大程序员的很多方面取决于你从事的工作以及和你共事的人,但我也看到了已经在软件开发领域获得大量 成功的人们身上存在的、我认为值得分享的共通品质。我不确定这些是你能够掌握的技巧还是你与生俱来的东西。但我很强烈地感觉到如果我少花时间在换文本编辑 器,多花精力在这些品质上,我会处于一个了不起的位置。

以人为本

  我认识的最好的程序员把人放在第一位。他们认识到他 们编写的软件是面向人的,即使这只是某个复杂系统的后端或是除了开发者没人会使用的协议。他们编写文档因为文档是重要的。他们帮助人们使用他们的代码。他 们愿意加班处理更复杂的问题,以给予使用他们软件的人正确的解决方案。

求知欲

  了不起的程序员对知识的饥渴令人惊讶。他们总是告诉你新的、有趣的东西。他们愿意大量阅读(无论线上线下)并且尝试事物获取经验。他们不担心尝试新的编程语言或新的平台。

技巧地问题模式匹配

  一旦你编写软件一段时间,你开始发现出现的问题非常相似于你曾经处理过的其它问题。能够识别这些问题,并转化过去的解决方案,使之有效于当前的局面是一种真正有价值的技能。能够每次改进解决方案则更好。

  注意,但这并不意味着你盲目地说因为一个过去的方案有效它就一定有效。这正是有技巧地应用问题模式匹配登场的地方。你必须能够分辨何时应当应用一个过去的方案,何时不行。

一点点疯狂

   我的兄弟在高三上过 Python 课程,当我问他是否喜欢时,他告诉我我成为程序员真是疯了,这是他做过的最无聊的事情之一。某种程度上,我认为他是对 的。大部分日子我和计算机交谈多于和人交谈。我得一行行地把人们的叽里咕噜转化为可用的软件,这个事实让我大为震惊。不是这里的每个人都爱做这种事,但我 遇到过的最好的程序员绝对热爱开发软件。

坚持

  软件开发总是比人们预期得更慢,这很花时间。有时你不得不足够耐心才能 鼓捣出你需要写的代码。有时作为开发者我们能写出非常有意思的代码,但有时我们得写很多以前差不多已经写过一百遍代码的代码,得到的只有不爽。我认为最好 的开发者能继续前进,因为他们能看到他们正在从事的事物的大局,而且他们热爱一点一点完成最终结果的过程。

  还有一些我认为能够成就一个真正的好程序员的品质,但这不是一个一网打尽的列表,我希望听到你的选择。你认为是什么成就一个伟大的程序员?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 全栈程序员的成长历程通常包括以下几个步骤: 1. 基础知识学习:包括计算机基础知识、编程语言基础知识、数据结构和算法等。 2. 实践经验积累:通过完成一些小项目或参与开源项目,积累实际开发经验,提升编程能力。 3. 选择一个关注领域:全栈程序员是指能够涉及前端、后端、数据库、运维等多个领域的程序员,因此可以选择一个感兴趣的领域进行深入学习。 4. 加强软件工程和系统设计能力:包括代码规范、版本控制、测试、自动化部署、性能优化等方面的知识和技能。 5. 不断学习和提升:全栈程序员的技术领域非常广泛,因此要不断学习新技术和理解新范式,提升自己的综合能力。 ### 回答2: 一个全栈程序员的成长历程可以分为以下几个阶段。 首先是入门阶段,全栈程序员首先需要学习计算机基础知识,如操作系统、数据结构与算法等。然后学习编程语言,如Python、Java、JavaScript等。掌握基本的编程技能后,可以开始学习前后端开发的基础知识,如HTML、CSS、数据库等。 接下来是深入学习阶段,全栈程序员需要进一步熟悉前后端技术。在前端方面,学习JavaScript框架如Angular、React等,掌握前端开发工具如Webpack、Gulp等。在后端方面,学习服务器端框架如Node.js、Ruby on Rails等,熟悉API设计和数据库管理。此外,全栈程序员还应该学习版本控制工具如Git,以及测试和调试技术。 在实践中不断提升是全栈程序员成长的关键阶段。可以参与开源项目、编写个人项目,提升自己的实战经验。通过解决实际问题,全栈程序员可以加深对各种技术的理解和应用能力。此外,参与技术交流和分享也是很重要的,可以加入技术社区、参加技术会议等,与其他开发者交流和学习。 最后是专业领域的拓展与深化。全栈程序员可以在前端或后端领域进行深耕,成为该领域的专家。同时,学习新的技术和潮流,如大数据、云计算、人工智能等,不断追求技术的创新和发展。 总之,一个全栈程序员的成长历程需要从入门到精通的过程。通过不断学习、实践和交流,全栈程序员可以不断提升自己的技术能力,成为能够独立完成整个项目开发的优秀工程师。 ### 回答3: 一个全栈程序员的成长历程是一个不断学习和提升的过程。刚开始接触编程时,我选择了一门编程语言作为入门,通常是HTML、CSS和JavaScript。通过学习这些基础知识,我能够开发简单的网页,并了解网页的基本结构以及交互效果的实现。 在掌握了基础知识后,我开始学习后端开发。我选择了一门服务器端语言,比如Java、Python或Ruby,并学会了使用数据库与服务器进行交互。通过这些知识,我可以开发复杂的网站和应用程序,并与数据库进行数据交互。 接下来,我开始学习前端开发的更高级技术。我学习了一些流行的前端框架和工具,比如React和Angular,以提升用户界面的交互性和响应性。同时,我也学习了一些前端设计的基本原则和技巧,以提高网站的用户体验。 在成为一个全面的程序员的过程中,我也逐渐了解到软件工程的重要性。我学会了使用版本控制工具(如Git)来协作开发,使用测试工具来确保我的代码质量,并遵循良好的编程实践和设计模式,以使我的代码更易于理解、维护和扩展。 此外,我也发现不断学习和自我提升是成为一个优秀的全栈程序员的关键。随着技术的迅速发展和变化,我需要不断学习新的编程语言、框架和工具,以跟上行业的最新趋势和需求。同时,我也会参与一些技术社区,与其他程序员交流和分享经验。 总结起来,一个全栈程序员的成长历程是一个不断学习、不断提升技能和应用的过程。从基础知识到高级技术,再到软件工程和持续学习,这个过程充满了挑战,但也带来了无限的成就感和职业发展的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值