想要成为真正优秀的程序员是不是真的很难?

简介:

很多人认为要想成为一名优秀的程序员,那就需要一天24小时每天不断地编程——睁开眼睛要编程,闭上眼睛睡觉的时候还要梦到编程——我认为这是一种矫枉过正的方法。沿着这条路走,只会让你精疲力尽,犹如夸父逐日一般,死在半道上。

我觉得问题的关键是要想明白你为什么要编程。坦率地说,我编程是因为我喜欢别人用我的程序,这也是我之所以在读书的时候成绩不怎么优秀的原因(我并 不热衷于参加编程竞赛以及类似事情)。因此,我也不喜欢参与纯研究的项目——只在论文上讨论各种点子,而不付诸于行动不去写代码(除非恰巧碰到的是研究项 目和开源项目)。

我在编程上并不是一个唯美主义者。我的观点是能工作、有用的代码就可以被定义为优雅,即使它看上去是一团乱糟糟的GOTO语句。

我认为的“优秀的程序员”应该是这样的:

  • 偷懒战略。优秀的程序员更倾向于灵活工作而非死工作,所以如果你想要将编程当作长期的职业规划,那么学习重用代码和自动化繁琐的任务是至关重要的。

  • 在职业生涯早期,有机会就多多了解从需求分析到最终发布整个的软件流程,这样你才能学习从终端到终端的设计——还可以激发你的信心。

  • 生活中除了编程以外,应该还要有某项能让你经常外出活动的业余爱好。这样才能改善你消耗在键盘上的健康。

  • 如果你想要在编程这一行待个三五十年,那么最好学点拿手绝活,让别人在某个领域不敢小觑于你,密切关注这方面的技术进步,保持同步。

  • 多了解几门编程语言——特别掌握你准备精通的编程语言。并且最好能从不同的编程范式(程序,设置,功能等)来了解语言。

  • 相关的:不必过于担心你不知道的新的Zwizzle-Wiz算法。如果不需要实施细节的话,了解一些相关领域重点算法以及比较重要的通用算法(如 排序和搜索)的特点和功能就可以了。没有必要囫囵吞枣、傻不拉几的试图想要记忆100种算法的实现(我看到有人曾经这么做过),你的小脑袋会爆掉的。

  • 了解如何面试程序员。英雄总是惺惺相惜,作为一名优秀的程序员,建设优良的团队,也是你的部分责任。

  • 了解公司业务的相关内容,以及你的代码需要如何与之匹配,这有助于你正确地作出相关的决策,避免走一些弯路。

  • 问问相关人员的想法,看看他们对你的代码的评价,包括产品经理、QA、现场支持人员、专业的服务工程师和实际使用的客户等。

  • 相关的:不要错过任何一个和客户交流的机会。但是一定要注意自己的行为举止:耐心聆听,哪怕客户的想法听上去非常可笑,这主要是因为他们不是程序员的缘故。但是,如果你能借此机会好好思考关于如何使用代码以及使用过程中的日常挑战,那么将有助于你提高你的产品。

  • 对于我,我是Unix哲学——一系列通用设计原则的铁杆粉丝。虽然这些原则并不总是有效,但它是指点我如何连接优良代码—系统—设计的指南针。

所以,对于“想要成为一名真正优秀的程序员是不是真的非常难?”这一问题的答案,可能的确是非常艰难非常辛苦的,特别是要想成长为一名优秀的程序员是需要一段很长的时间。但是只要你愿意好好学习代码的系统知识和机制,那么我相信你一定可以长风破浪会有时,直挂云帆济沧海。


作者:王国峰

来源:51CTO

相关文章
|
8月前
|
设计模式 算法 程序员
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
作为开发者,我们在日常开发过程中,往往会遇到反复修改bug的情况,而且不能一次性把代码写的完美无瑕,其实开发项目是一项复杂而富有挑战性的任务,即使经验丰富的程序员也难以在一次性编写完美无瑕地完成代码,我个人觉得一次性写好代码是不可能完成的事情。虽然在设计之初已经尽力思考全面,并在实际操作中力求精确,但程序员仍然需要花费大量时间和精力来调试和修复Bug。那么本文就来分享程序员需要反复修改Bug的原因,以及在开发中所面临的复杂性与挑战。
195 1
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
|
敏捷开发 前端开发 开发者
想要成为软件开发中的王者,需要明白的 21 条准则
想要成为软件开发中的王者,需要明白的 21 条准则
|
测试技术
解决Bug应有的心态和解决方法的一些思路、方法和心得
永远要相信程序是不会骗你的,是自己在处理理逻辑中出问题,而在特定的环境中才会出现或者是自己压根就想不到情况下出现。 前几天在处理一个接口任务时,在测试环境跑是一点都没有,但在正式环境却没有将数据拉下来。没有报任何错误,一度怀疑、抱怨! 还好最后找到问题解决了!
97 0
|
7月前
|
运维 程序员
程序员在企业中是如何做需求的
需求从哪里来,到哪里去
42 0
程序员在企业中是如何做需求的
|
8月前
|
算法 程序员
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
81 7
|
Java C语言
看似无害的代码如何搞垮系统
编程就像魔法。最近遇到一个诡异的问题:添加一段看似无害的简单代码后,系统原有功能不可用了。 ## 复现演示 jdk 8 可使用如下演示代码复现这个问题。 `TaskCenter` 是一个任务框架,可添加多个任务,随后框架将执行这些任务。 `First` 任务是新增代码,看起来简单无害,且看不出对原有任务 `Count` 有何影响,但添加 `First` 任务后,其自身执行正常,原本正常的 `C
135 0
|
存储 程序员 C++
如果当初学习编程时能有人给我这些忠告该多好
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。
231 0
|
算法 安全 程序员
良好的程序员与优秀的程序员究竟有何差异?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 如果写代码是一门科学,那么所有开发人员的表现几乎没有区别。 但事实并非如此。 如同一门艺术,在朝着同一结果努力时,两个开发人员不会有同样的思维或认知。
良好的程序员与优秀的程序员究竟有何差异?
|
设计模式 缓存 JavaScript
90%的人会遇到性能问题,如何用1行代码快速定位?
今天,齐光将会基于之前列举的众多指标,给出一些常见的调优分析思路,即:如何在众多异常性能指标中,找出最核心的那一个,进而定位性能瓶颈点,最后进行性能调优。整篇文章会按照代码、CPU、内存、网络、磁盘等方向进行组织,针对对某一各优化点,会有系统的「套路」总结,便于思路的迁移实践。
2331 0