`
liufei.fir
  • 浏览: 686252 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

细数编程能力的四重境界

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

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

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

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

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

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

菜鸟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

结束语

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

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

看完了这些明白自己已经处在第三阶段(有意识,有能力)了。
分享到:
评论
1 楼 shilei0619 2010-12-03  
90%以上的人在第三个阶段,另外三个阶段比例总共不到10%

相关推荐

    数控模拟编程软件

    非常实用的编程软件,3d的页面和真实数控非常接近 按键也仿照了各大数控的样式 。。。

    JAVA算法编程题目及答案.doc

    该题目旨在考察学习者对水仙花数的理解和编程能力。 程序 4:将一个正整数分解质因数 第四道题目是关于将一个正整数分解质因数的。该题目要求学习者编写一个JAVA程序来将一个正整数分解质因数,例如输入90,打印出...

    C++编程练习题大全(带答案)

    通过这些练习题,读者可以提高自己的编程能力和解决问题的思路。 1. factorial_sum 本题目要求计算1!+2!+3!+…+20!的值,并将结果输出。该题目考察了循环语句和 factorial 计算的实现。通过使用长整型变量和 for ...

    第十届蓝桥杯大赛青少年创意编程Scratch组国赛编程题.zip

    Scratch是麻省理工学院(MIT)媒体实验室“终身幼儿园团队”开发的一款面向儿童的图形化编程工具,它通过拖拽积木式的编程语块,让编程变得简单而有趣,旨在培养孩子们的逻辑思维能力和创新能力。 蓝桥杯大赛是中国...

    大龙老师新版scratch3.0编程全套素材

    Scratch 3.0是麻省理工学院(MIT)媒体...总的来说,"大龙老师新版scratch3.0编程全套素材"是一个全面的教育资源,旨在帮助孩子通过实践学习编程,培养他们的创造力、逻辑思维和问题解决能力,为未来数字化世界做好准备。

    ST语言规则编程手册全面讲解ST语言

    ST语言以其丰富的表达能力和接近高级编程语言的语法特性,深受工程师们的青睐。本手册全面讲解了ST语言的基本原理、规则以及使用实例,旨在帮助读者在对编程不熟悉的情况下,也能快速理解和掌握ST语言。 1. **ST...

    python趣味编程100例(99个)

    Python是一种广泛应用于科学计算、数据分析、人工智能以及web开发等领域的高级编程语言,因其简洁明了的语法特性,常被称为“胶水语言”,能够轻松...这个资源将提供一个很好的平台,让你在实践中提升Python编程能力。

    《java 并发编程实战高清PDF版》

    总之,《Java并发编程实战》是一本全面介绍Java并发编程的书籍,适合有一定Java基础并希望提升并发编程能力的开发者阅读。通过学习,你可以掌握解决并发问题的策略和技巧,编写出更加健壮和高效的多线程应用。

    Cuda C 编程指南(程润伟)

    CUDA(Compute Unified Device Architecture)是由NVIDIA推出的一种并行计算平台和编程模型,用于利用图形处理器(GPU)的强大计算能力进行高性能计算。这本书详细介绍了如何利用CUDA C来编写高效、并行的程序,以下...

    浅谈西门子 PLC 的“SCL 语言”编程

    结构化文本编程具有较高的灵活性和强大的计算能力,能够帮助工程师编写更为复杂和高效的控制程序。与传统的梯形图相比,它在处理算法和数据处理方面更为强大,尤其适合那些需要较多算术运算和算法实现的控制场景。...

    java网络编程第四版pdf

    它不仅涵盖了网络编程的基础知识,也深入到高级特性和实践技巧,对于想要提升网络编程能力的Java程序员来说,是一本不可多得的参考书。通过阅读和实践书中的例子,读者不仅可以掌握理论知识,还能积累实际开发经验,...

    python编程(从入门到实践).zip

    你还可以跟随书中的指导,逐步修改和扩展这些代码,以增强你的编程能力。 此外,书中的项目部分将带你进行实战演练,可能包括创建简单的命令行程序、构建Web应用,或者进行数据分析任务。这样的实践项目能够让你在...

    C++编程实例100篇

    同时,不断练习编写自己的程序,解决实际问题,是提高编程能力的有效途径。通过《C++编程实例100篇》,读者不仅可以学习到C++的基础知识,还能逐步掌握高级特性和最佳实践,为成为熟练的C++程序员打下坚实基础。

    Java网络编程第三版.pdf

    7. **网络编程实战**:通过实际案例,如聊天程序、文件传输等,帮助读者巩固理论知识,提升实践能力。 8. **高级主题**:包括高级网络编程技术,如网络负载均衡、分布式系统、网络性能优化等。 9. **错误处理与...

    深入DOS编程_求伯君

    《深入DOS编程》是著名程序员求伯君的著作,这本书深入浅出地讲解了DOS操作系统的原理和编程技术,对于理解计算机底层工作机制以及提升编程能力具有极高的价值。DOS,全称为Disk Operating System,即磁盘操作系统,...

    64位 微处理器系统编程和应用编程.part1 周明德编著 完整清晰版

    《64位 微处理器系统编程和应用编程》 周明德编著 完整清晰版 1 针对当前应用最广泛的两种64位处理器--Intel和AMD的四核处理器作为基础进行介绍分析,反映了当代微处理器的最新发展。 2 把Intel和AMD两种处理器综合...

    (完整版)ST语言编程手册.pdf

    ST语言,也称为结构化文本(ST),是一种高级编程语言,它基于文本,用于工业自动化和控制系统的编程。根据IEC61131-3标准,ST语言被广泛应用于可编程逻辑控制器(PLC)和其他工业设备中。PLCopen是一个全球性的行业协会...

    python并行编程 中文版

    本章将介绍一些并行编程的架构和编程模型。对于初次接触并行编程技术的程序员来说,这些都是非常有 用的概念;对于经验丰富的程序员来说,本章可以作为基础参考。 本章中讲述了并行编程的两种解释,第 一种解释是...

    Python编程入门 第3版.pdf

    由于提供的文件信息中并没有包含实际的文档内容,而是仅提供了一些外部链接和版权声明的描述,这使得无法直接生成具体的Python编程知识点。但根据文件信息中的标题《Python编程入门 第3版.pdf》,我们可以推断这本书...

Global site tag (gtag.js) - Google Analytics