细数编程能力的四重境界

原创
开发 开发工具 新闻
从菜鸟到大牛,中间会经历无数的坎坷。有多年工作经历的程序员则想成为大师级人物,总之编程能力不是一蹴而就的,我将其分为四个阶段,看看你现在处于哪个阶段。

【51CTO经典译文】无论你是干什么的,无论你在哪个行业,都必须面对一个事实:成功的人必然走过艰辛的路,必须一步一步踏踏实实前进。对程序员而言也一样,刚接触编程的程序员非常渴望精通一门编程语言,有点编程经验的程序员想掌握架构设计,有多年工作经历的程序员则想成为大师级人物,总之编程能力不是一蹴而就的,我将其分为四个阶段,看看你现在处于哪个阶段。

51CTO向您推荐:《程序员的十个层次 你属于哪一层?

第一阶段:无意识,无能力

John是一位年轻的Web开发人员,他曾经是法律系的学生,但他认为读法律赚不了大钱,因此转移了方向,他总是能帮助好哥们修理好电脑,因此他认为干这一行应该很容易,于是他找了一个离家较近的培训班,以便有更多的时间学习电脑知识,六个月后,他声称自己是Web开发专家,他的简历列出了几乎所有编程语言,应用软件和平台。

但真正要动手写点代码时,John就只能复制粘贴了,他认为要在浏览器中弹出警告窗口只有JavaScript可以办到,PHP?小Case,他安装了WordPress,Linux?他有一张Ubuntu LiveCD,他甚至肯定地表示可以创建一个Apache Web服务器负载均衡集群,他的知识是不分边界的。

问题是John不知道他学到的东西是多么肤浅,他经常在论坛和邮件列表中滔滔不绝地发表自己的“高见”,当真正的高手试图以温和的语气指出他知识欠缺时,它便迅速以生硬的语气回击,固步自封的John最终一事无成。

[[17163]]

因此John还属于既无能力,又无良好意识的那一类人,属于尚未入门的那种。

第二阶段:有意识,无能力

Mark是一位数学教师,他在一所大学教书,他希望获得更多的课程资料,因此他决定创建一个在线平台分享课程资料。

Mark首先想到应该做一些研究,获得一些有用的信息,于是他开始阅读维基百科,经过漫长的阅读后,他发现他的问题其实早已有人提出了开源的解决方案。

Mark开始为这个项目忙碌,他从网站上找到文档和教程开始阅读,自认为有些基础后,他下载并安装了程序,当他看到数据库连接错误时,他所有的兴奋劲一下全部消失了,在经过多次尝试后,问题仍然没有得到解决,Mark并没有生气,他有自知之明,这不是他的专业领域。

他前往邮件列表用他知道的知识准确地描述了他遇到的问题,他警告那些不知道在做什么的人,最好是多阅读一些文档,或其他人分享的技巧,不要盲目做事。

因此Mark属于有意识,但无能力的那一类人。

第三阶段:有意识,有能力

两年前Adrian第一次拿起讲解HTML的书,他梦想成为一名不折不扣的Web开发人员,Adrian每天都在想如何提高自己的技能,几个月前,他在一家网站找到了一份兼职工作,虽然工资很低,所做的事情也很基础,但他充满了激情。

他始终相信一句话:最好的学习方法就是坚持,尝试,失败,然后再尝试。他总是研究如何把工作做好,把任务完成得更漂亮,他深知只有自己努力才能写出更安全的代码,因此他会一遍又一遍地复查代码,不厌其烦地修复每一个细小的BUG。

有一天,他为自己的一个私人项目写了30-40行代码,过了几天,当他看到自己所写的代码后不禁感到有点失望,这时他突然发现其实还有更好的写法,Adrian一时糊涂了,为什么自己就不能一次性写出更好的代码呢?在经过一翻思考后,他决定全部重写一遍,绝不做复制粘贴的操作。

Adrian的做法值得借鉴,他正在朝优秀的专业人士进化,他没有给自己加冕任何头衔,他知道还需要等待。

因此Adrian属于有意识,也有一定能力的那类人,已经达到第三阶段的境界。

第四阶段:无意识,有能力

这是编程大师追求的终极境界,就好像武林高手随手捡起一片树叶也能当飞镖杀人一样,这不仅是知识日积月累的结果,也是个人多年历练和琢磨的结果,达到这种境界的程序员已经不是靠思考的方法来解决问题了,而是“闻”,或者说“靠感觉”,他们往往具有攻克复杂问题的超人能力,简单的问题基本上都遇到过无数次,难的问题看一下也就能感觉到几种可行的解决方法。

编写优化的,可维护的和安全的代码对他们来说已成为习惯,设计模式都已被他们用烂,用什么语言和开发工具都可以,你说了算。

结束语

我想当你知道这四个阶段后,一定会有点羞愧,不要害怕,正如我开篇时就说过,大师(或高手)不是一日练就的,先达到有意识,有能力的阶段,坚持下去,你自然就会达到无意识,有能力的境界。

值得一提的是,还有一些学者提出了第五阶段,即要有能力将自己掌握的知识和技巧教授或传输给其他人,就好像武侠小说中一代大师在Over时要将自己的功力强制输送给一个有潜力的后生一样,必须要具有准确的眼光,找到那个有潜力的人。

原文标题:The four stages of programming competence

编辑推荐】 

  1. 程序员,你适合做一个项目经理吗?
  2. 程序员的十大技术烦恼
  3. 深入剖析Flex程序员的四重境界
  4. PHP程序员如何突破成长瓶颈
  5. 是什么成就了一名“高级”程序员?

 

责任编辑:彭凡 来源: 51CTO
相关推荐

2017-11-06 10:15:36

机器学习框架Tensorflow

2010-08-03 13:47:26

Flex程序员

2012-09-11 09:55:26

编程HTML5编程能力

2010-08-02 11:04:25

Flex程序员

2016-11-10 12:49:00

2013-12-18 13:26:24

多核编程

2014-06-17 09:24:24

2017-08-29 12:57:33

信息化项目IT

2010-04-19 16:44:51

Unix操作系统

2012-09-13 09:47:01

程序员

2012-04-12 21:40:48

2012-05-18 14:50:28

惠普工作站

2017-08-25 09:50:42

数据库MySQL内核优化

2020-12-30 17:20:00

华为应用市场

2018-11-12 12:50:30

C语言编程汇编

2010-08-11 13:56:03

Flex程序员

2019-03-17 22:53:43

工业互联网信息化数字化

2011-06-01 10:09:49

Ubuntu

2017-04-12 13:12:42

teradata大数据数据
点赞
收藏

51CTO技术栈公众号