三十五年经验分享:程序员进阶八法

这八法十分可靠,可提高你写代码的技能,你可要收藏好了。时间到了,提高你的编程技能,认真+严肃,走起!如果你的目标仅仅是提高自己,那么很容易实现,但是如果你的目标是成为一个伟大的程序员,那么这就不简单了。很多人都愿意说,我想变得更好,但是更好是什么却很模糊,而且人们也不知道该怎么样去做。我在这里分享八法来帮助你顺利提高你的编程技能。这些小智慧来自三十年深耕该领域,许多都令你再熟悉不过了,你可能早就认知了它们。
  1.要记得,你并非无所不知    在你前进的路上,有一只巨大的拦路虎,它的名字叫做“我无所不知”。那些计算机学科毕业的大学生们以及有经验的程序员都好犯这样的毛病。实际上,这是一个陷阱,掉进去就很难爬上来。但是,你仍然要克服它。只有才愿意认为自己无所不知,但是人类的特点是,能够认识到自己的不足,然后去学习新知。所以,你要明白,想要成为一个更好的程序员,第一步就是意识到自己总有新物要学,保持谦逊的态度,这才是学习的一贯正途。
  2.停止去证明你有多正确吧    从经验中学习会令你伟大,而不仅仅是还凑合。但是要注意了,经验也会使我们不断重复错误的行为导致养成不好的习惯。如果你是有8年经验的程序员,你也有可能连着8年都在重复同样的错误。克服这一谬感的方法就是,时刻检视自己,并不断地发问:在这一点上,我是否还能做得更好一些。举个有趣儿的例子,一个经验丰富的软件开发者,他写出了令自己也艳羡不已的代码,于是他觉得这个代码简直太完美了,他不断写文章去证明自己有多么的正确,代码功能多么优秀。氮素呢?人们从来没有见到他去找一切办法来佐证自己的代码是错误的。其实呀,真正优秀的程序员,他们都喜欢去证反,就是去证明自己有多么的错误,因为他们知道,长久来看,用户一定会发现软件的问题和失误,而他们希望自己首先发现这些问题,而不是等待别人去发现。呐,你看到优秀和平庸之间的差距了吗?
  3.代码没有死亡,它始终活着    没错,你第一步总是要写出高质量的代码来满足用户的特殊需求,但是优秀和平庸的区别体现在哪里?如果你只是匆匆忙忙地进入下一个任务中,那么你不可避免地成为了穷忙族。一段代码写出来以后,它并没有死亡,它始终活着。这说明什么?你写出代码并不意味着你的工作结束了,相反,一切都才刚刚开始,你不需要火急火燎地赶往下一个站点。停止,仅仅意味着阶段性的展示和赏析,但是伟大的程序员对一件事情心知肚明,那就是万事都可以更好,产品运行了,这很棒,但是你的工作没有结束,要依靠迭代让产品变得好上加好。 如何让产品变得更好?我们依据不同的应用,会提出不同的问题,比如,更快是不是对产品价值的增值?更容易记录是不是呢?更容易重复使用呢?更可靠呢?这些问题虽然不同,但是程序猿对产品不懈追求的动机是一致的。你懂了吗?你不断思考如何让产品变得更好,这一点是不变的,但是你的方法是提出一些与众不同的、内容不一的问题。
  4.写三次吧    好的程序员认为写出的软件能运行就好了,伟大的程序员认为软件要运行得极其完美。但这很少在第一次就成功,最好的软件通常要写三次。首先,你写软件是为了向自己或者用户证明问题是可以解决的。其他人或许意识不到这是一个概念生成的时期,但是你自己很清楚。然后,你让软件生效。最后,你让它正确地运行。在那些最好的开发者身上,你并不会明显地看到这种级别的工作流程,他们做的一切都看起来聪明极了,但是在他们背后,即使是明星开发者,他们多少次将第一版和第二版扔进垃圾桶,你是不得而知的。你想做到更好,你就要将摒弃代码与重新开始这条给力的方法融进你自己的工作流程之中。如果没有什么特殊情况,“写三次”可以教你认识到:解决一个问题有很多种方法,它使你避免在一棵树上吊死。
  5.尽可能地去读代码,越多越好    我在这里不能给出更多的建议了,我只能告诉你要提高编程技能,你就要去读别人的代码。这一点太重要了。你读别人的代码就能发现他们是怎样解决一个编程问题的。但是不要仅仅把它们当作参考文献,你要把它们当作一门课或者挑战,去学到技能,让自己的编码能力得到提高。你可以这样问自己:噢,看看我写的这堆代码,你的和我的有什么不同呢?你找到另一种解决方法了吗?我能学到什么呢?我怎么用到自己的代码中去呢?我以前可从来没想到还可以这样做呢!我能做什么来提高我的代码的质量呢?    既然这些资源都开放给你,你就可以有信心找到更好的解决办法,去做吧!用当作家的心态去写代码吧。这种练习会帮助你接触到最优秀的头脑,这样就会与他们产生共鸣。不要把过程想象得太松散。无论你是习惯于私人杂志、博客、代码审核程序,还是习惯于拥有众多开发者的社区平台,你都要分享出你思考的结果。比如向朋友去解释一个问题,这能帮助你理清思路,再比如你分享出你的分析,这能帮助你去搞明白你为什么会以固化的思路去反馈别人的代码。这就是我在前面所提到的自我反省中的全部。反省会帮助你平心静气地判断你自己的优势和劣势。    注意:阅读大量的代码并不能使你变成伟大的程序员,就好比一些想要超越伟大的文学家的人阅读了大量的优秀文学作品结果却并不一定提高自己的写作能力一样。大量的开发者只是为了简单地解决问题而去阅读,他们急于找到一个答案,所以大部分时候,他们只是复制和粘贴了别人的代码。你这样做的话,就会变成一个特别糟糕的程序员,因为你对他人的智慧视而不见。另外,如果你只是抄袭而不去花时间理解的话,你吃的就只是bug而不是夏日午餐。这样,你其实就成为了一个bug生产厂。
  6.不要只为工作而写代码    接一个私人的编程项目有许多的好处。比如,你不仅有机会获得在目前的工作中很难学习到的工具和技术,而且还能够使你更具有市场眼光。无论你是否为开源项目做奉献,或者承担本地社区组织的一个无偿的项目,你都将获得技术能力和自信。另外,你的私人项目也向你潜在的雇主证明了你是一个不会停止主动学习的人。因为热爱而写代码的另一个好处就是你很容易依靠自己去解决许多问题。你不能把困难抛给别人,你会停止一遇到问题就立即向别人寻求帮助。提示:不要只选择你有把握的私人项目,你需要一些无把握的尝试。但是你的确可能在面临最终期限到来的时候不想失败。
  7.尽可能与其他开发者亲密地合作    倾听他人是合作的基本原则。无论你是组队编程还是参加黑客马拉松,或者就是参加一个编程人联合会,比如Vermont编程人联合会。当你为一个开源项目无私贡献的时候,你要注意来自用户和其他开发者的反馈意见。你在这些评论中看到那些共性了吗?其实你这是很幸运地遇到了可以信任的私人顾问,他们能在你需要的代码技术和职业选择的一系列问题上给你指导。不要浪费这些机会。
  8.你学的是技术,而不是工具    编程语言、工具和方法论千帆过境,数不胜数。这就是为什么你在语言、框架上的经验要尽可能地多。你必须集中精力在编程的基础上,因为基础基本不变;你还要把注意力放在构建而不是编写上。任何时候,你坚信只有一条正确的道路通向真理,那么你就该自我反省一下了。教条会阻碍你学习新的知识,使你变得不爱改变。道理怎么讲都讲不完,但是自我提升的核心要点就是你知道在哪里止步。

时间: 2024-10-13 10:59:11

三十五年经验分享:程序员进阶八法的相关文章

雷观(十五):提高生产力和程序员价值的2种方法

Web项目,尤其是Web管理系统,被很多程序员认为没有技术含量.这种项目,主要功能就是增删改查,尤其是查询方面,更是多种多样. 因为这种项目本身的业务就是简单的CRUD,没有太多复杂的业务逻辑.然而,CRUD这种功能却又是最基本的功能,如果只是复制粘贴修改,程序员和建筑民工没啥区别了. 建筑民工本身就是体力+简单的智力,高级的建筑工人会有自己的一套建筑方法,做起事来高屋建瓴,井井有条. 低级程序员-码农也是体力+简单的智力,高级程序员除了知识比较广比较深外,更主要的他们能够避免重复的劳动,提高生

(面试感悟)一名3年工作经验的程序员应该具备的技能

前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做java开发的,因此有一部分内容也是专门面向咱们java程序员的. 简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的有4家,另外两家失败的原因在于: 1.阿里巴巴B2B事业部的面试,两轮技术面试都过了,最后一轮

NeHe OpenGL教程 第三十五课:播放AVI

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错.你可以试试. 首先我得说我非常喜欢这一章节.Jonat

IT行业:听说编程编到三十五岁就没人要了一定要转行找出路

我听说编程编到三十五岁就没人要了一定要转行找出路是吗? 这个观点虽然很流行,但根本不值一驳.现在三十五岁转行的那些人,都具有前面所说的那些特征,对学习新技术不感兴趣,对探索计算机的本质不感兴趣,得过且过,下了班就是打游戏.看电视,总之就是懒.如果是开出租.摆摊,勤快人懒人都有饭吃,而IT这一行对懒人是非常无情的,懒人就不该入IT这一行,不从自身找原因,却到处散布这种言论,怪社会不好,打击新人的信心,着实可恨. 另外一种情况,编程编到三十五岁,进入公司的管理层,或者自己创业,这都是很勤快的人,如果

转发---十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 本文为转发,源地址:http://linux.cn/article-3613-1.html 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and co

十大编程算法助程序员走上大神路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "

Python进阶(三十五)-Fiddler命令行和HTTP断点调试

Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 ??上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session).界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便

Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

QT开发(三十五)——QT进程间通信

QT开发(三十五)--QT进程间通信 Qt 是一个跨平台的应用框架,其进程间通信机制当然可以使用所在平台的进程间通信机制,如在Windows平台上的Message机制.共享内存.文件映射.管道.Socket等.其中,Qt对一些许多平台共有的IPC机制进行了封装. 一.TCP/IP 其实就是通过网络模块实现的IPC.不过Qt对其进行了封装,并提供了两个层次的API,包括应用程序级的QNetworkAccessManager, QFtp等和底层的QTcpSocket, QTcpServer, QSs