这八法十分可靠,可提高你写代码的技能,你可要收藏好了。时间到了,提高你的编程技能,认真+严肃,走起!如果你的目标仅仅是提高自己,那么很容易实现,但是如果你的目标是成为一个伟大的程序员,那么这就不简单了。很多人都愿意说,我想变得更好,但是更好是什么却很模糊,而且人们也不知道该怎么样去做。我在这里分享八法来帮助你顺利提高你的编程技能。这些小智慧来自三十年深耕该领域,许多都令你再熟悉不过了,你可能早就认知了它们。
1.要记得,你并非无所不知
在你前进的路上,有一只巨大的拦路虎,它的名字叫做“我无所不知”。那些计算机学科毕业的大学生们以及有经验的程序员都好犯这样的毛病。实际上,这是一个陷阱,掉进去就很难爬上来。但是,你仍然要克服它。只有才愿意认为自己无所不知,但是人类的特点是,能够认识到自己的不足,然后去学习新知。所以,你要明白,想要成为一个更好的程序员,第一步就是意识到自己总有新物要学,保持谦逊的态度,这才是学习的一贯正途。
2.停止去证明你有多正确吧
从经验中学习会令你伟大,而不仅仅是还凑合。但是要注意了,经验也会使我们不断重复错误的行为导致养成不好的习惯。如果你是有8年经验的程序员,你也有可能连着8年都在重复同样的错误。克服这一谬感的方法就是,时刻检视自己,并不断地发问:在这一点上,我是否还能做得更好一些。举个有趣儿的例子,一个经验丰富的软件开发者,他写出了令自己也艳羡不已的代码,于是他觉得这个代码简直太完美了,他不断写文章去证明自己有多么的正确,代码功能多么优秀。氮素呢?人们从来没有见到他去找一切办法来佐证自己的代码是错误的。其实呀,真正优秀的程序员,他们都喜欢去证反,就是去证明自己有多么的错误,因为他们知道,长久来看,用户一定会发现软件的问题和失误,而他们希望自己首先发现这些问题,而不是等待别人去发现。呐,你看到优秀和平庸之间的差距了吗?
3.代码没有死亡,它始终活着
没错,你第一步总是要写出高质量的代码来满足用户的特殊需求,但是优秀和平庸的区别体现在哪里?如果你只是匆匆忙忙地进入下一个任务中,那么你不可避免地成为了穷忙族。一段代码写出来以后,它并没有死亡,它始终活着。这说明什么?你写出代码并不意味着你的工作结束了,相反,一切都才刚刚开始,你不需要火急火燎地赶往下一个站点。停止,仅仅意味着阶段性的展示和赏析,但是伟大的程序员对一件事情心知肚明,那就是万事都可以更好,产品运行了,这很棒,但是你的工作没有结束,要依靠迭代让产品变得好上加好。
如何让产品变得更好?我们依据不同的应用,会提出不同的问题,比如,更快是不是对产品价值的增值?更容易记录是不是呢?更容易重复使用呢?更可靠呢?这些问题虽然不同,但是程序猿对产品不懈追求的动机是一致的。你懂了吗?你不断思考如何让产品变得更好,这一点是不变的,但是你的方法是提出一些与众不同的、内容不一的问题。
4.写三次吧
好的程序员认为写出的软件能运行就好了,伟大的程序员认为软件要运行得极其完美。但这很少在第一次就成功,最好的软件通常要写三次。首先,你写软件是为了向自己或者用户证明问题是可以解决的。其他人或许意识不到这是一个概念生成的时期,但是你自己很清楚。然后,你让软件生效。最后,你让它正确地运行。在那些最好的开发者身上,你并不会明显地看到这种级别的工作流程,他们做的一切都看起来聪明极了,但是在他们背后,即使是明星开发者,他们多少次将第一版和第二版扔进垃圾桶,你是不得而知的。你想做到更好,你就要将摒弃代码与重新开始这条给力的方法融进你自己的工作流程之中。如果没有什么特殊情况,“写三次”可以教你认识到:解决一个问题有很多种方法,它使你避免在一棵树上吊死。
5.尽可能地去读代码,越多越好
我在这里不能给出更多的建议了,我只能告诉你要提高编程技能,你就要去读别人的代码。这一点太重要了。你读别人的代码就能发现他们是怎样解决一个编程问题的。但是不要仅仅把它们当作参考文献,你要把它们当作一门课或者挑战,去学到技能,让自己的编码能力得到提高。你可以这样问自己:噢,看看我写的这堆代码,你的和我的有什么不同呢?你找到另一种解决方法了吗?我能学到什么呢?我怎么用到自己的代码中去呢?我以前可从来没想到还可以这样做呢!我能做什么来提高我的代码的质量呢?
既然这些资源都开放给你,你就可以有信心找到更好的解决办法,去做吧!用当作家的心态去写代码吧。这种练习会帮助你接触到最优秀的头脑,这样就会与他们产生共鸣。不要把过程想象得太松散。无论你是习惯于私人杂志、博客、代码审核程序,还是习惯于拥有众多开发者的社区平台,你都要分享出你思考的结果。比如向朋友去解释一个问题,这能帮助你理清思路,再比如你分享出你的分析,这能帮助你去搞明白你为什么会以固化的思路去反馈别人的代码。这就是我在前面所提到的自我反省中的全部。反省会帮助你平心静气地判断你自己的优势和劣势。
注意:阅读大量的代码并不能使你变成伟大的程序员,就好比一些想要超越伟大的文学家的人阅读了大量的优秀文学作品结果却并不一定提高自己的写作能力一样。大量的开发者只是为了简单地解决问题而去阅读,他们急于找到一个答案,所以大部分时候,他们只是复制和粘贴了别人的代码。你这样做的话,就会变成一个特别糟糕的程序员,因为你对他人的智慧视而不见。另外,如果你只是抄袭而不去花时间理解的话,你吃的就只是bug而不是夏日午餐。这样,你其实就成为了一个bug生产厂。
6.不要只为工作而写代码
接一个私人的编程项目有许多的好处。比如,你不仅有机会获得在目前的工作中很难学习到的工具和技术,而且还能够使你更具有市场眼光。无论你是否为开源项目做奉献,或者承担本地社区组织的一个无偿的项目,你都将获得技术能力和自信。另外,你的私人项目也向你潜在的雇主证明了你是一个不会停止主动学习的人。因为热爱而写代码的另一个好处就是你很容易依靠自己去解决许多问题。你不能把困难抛给别人,你会停止一遇到问题就立即向别人寻求帮助。提示:不要只选择你有把握的私人项目,你需要一些无把握的尝试。但是你的确可能在面临最终期限到来的时候不想失败。
7.尽可能与其他开发者亲密地合作
倾听他人是合作的基本原则。无论你是组队编程还是参加黑客马拉松,或者就是参加一个编程人联合会,比如Vermont编程人联合会。当你为一个开源项目无私贡献的时候,你要注意来自用户和其他开发者的反馈意见。你在这些评论中看到那些共性了吗?其实你这是很幸运地遇到了可以信任的私人顾问,他们能在你需要的代码技术和职业选择的一系列问题上给你指导。不要浪费这些机会。
8.你学的是技术,而不是工具
编程语言、工具和方法论千帆过境,数不胜数。这就是为什么你在语言、框架上的经验要尽可能地多。你必须集中精力在编程的基础上,因为基础基本不变;你还要把注意力放在构建而不是编写上。任何时候,你坚信只有一条正确的道路通向真理,那么你就该自我反省一下了。教条会阻碍你学习新的知识,使你变得不爱改变。道理怎么讲都讲不完,但是自我提升的核心要点就是你知道在哪里止步。
分享到:
相关推荐
硅谷程序员进阶之路,囊括程序员面试内容,包括操作系统、计算机网络、组成原理以及算法。
【游戏程序员进阶之路:优秀书籍文档推荐】 游戏程序员的成长是一个不断学习和实践的过程,而优秀的书籍和文档无疑是提升技能的重要资源。以下是一些针对游戏程序员的精选书籍,涵盖了算法、数据结构、汇编语言、C/...
【Java程序员进阶之路(暗黑版)1】是一篇专为Java爱好者设计的进阶教程,旨在通过详细且通俗易懂的方式,帮助读者提升Java技能。本专栏内容涵盖Java基础、集合框架、IO、并发编程、虚拟机、企业级开发等多个核心...
java进阶,包含 常用设计模式、线程和并发、spring核心代码、mybatis核心代码、springboot2.0、springcloud 、docker的使用、各类面试题。
### 程序员进阶修炼说明:35岁前要培养的66种明智思维 #### 第一部分:剑走成功偏锋——另类思维与反弹琵琶 在这个快速变化的时代,要想在IT行业中脱颖而出,单凭传统的思维方式往往难以达到预期的效果。因此,**...
程序员进阶攻略
根据提供的文件内容,这份文档是一份关于Java程序员校招面试的指南,名为“【电子版*面试必读】Java程序员进阶知识点-java篇.pdf”,它主要分为学习说明和面试技巧两部分,接下来将对这两部分进行详细的知识点解析。...
我编程,我快乐:程序员职业规划之道.pdf 我编程,我快乐:程序员职业规划之道.pdf
本书通过深入浅出的方式,系统地介绍了软件架构设计的核心理念和实践方法,是程序员进阶为架构师的宝贵参考资料。 首先,书中涵盖了软件架构的基础概念,解释了架构设计的重要性。架构是软件系统的骨架,它决定了...
"软件工程——程序员进阶"这个主题涵盖了从设计思想到架构设计的广泛知识,旨在帮助程序员提升技能,成为一名更专业的软件开发者。这里,我们将深入探讨其中的核心知识点。 首先,提及的是弗雷德里克·布鲁克斯...
介绍 DSP C2000 的开发方法,适合DSP 程序员 高手进阶
程序员的英语进阶指南
敏捷开发的原则,程序员进阶的必备书籍。想要写出漂亮的代码,需要不断地吸取经验。
DSP C2000程序员高手进阶,对初入门想提高的同学是个不错的东西
关注成长:程序员头皮卷 pdf 关注成长:程序员头皮卷 pdf
本文将深入探讨“程序员高手进阶经验”,旨在帮助那些希望通过学习和掌握C语言来提升自身技能的开发者。 C语言是系统级编程的首选语言,它简洁、高效,能够直接操作硬件资源,这使得C语言在操作系统、嵌入式系统...
### 三、进阶知识点 #### 3.1 高级统计模型 - **贝叶斯统计**:一种基于贝叶斯定理的概率推理方法,在不确定性推理领域有广泛应用。 - **生存分析**:研究事件发生时间的统计方法,常用于医疗健康领域的风险评估。 ...