你是否有时候会觉得自己的技术水平停滞不前,想突破但又找不到门路?最近在stackexchange上看到了一个非常好的问答。有人问:你做过的最有效的提高你的编程水平的一件事情是什么?

回首作为一个程序员这些年来的生活和职业道路,我使用了很多种不同的方法来提高我的编程技能 —— 阅读代码,编写程序,阅读书籍,听讲座,看视频,等等。

我的问题是:你做过的最有效的提高你的编程水平的一件事情是什么?对于那些想提高水平的程序员,你的建议又是什么?

我希望你们提供的答案是各种各样的,并且不是那种“放之四海而皆准”的答案 —— 我希望得到适用于不同人的不同的答案。

  有很多人给出了自己的答案,这里挑选其中三种答案。

  回答一:学无止境
没有特别的先后次序…

和比自己更聪明的人一起工作
永远乐意听取他人的意见,不管对方是低级水平,一般水平,资深,还是大师。职称头衔并不代表一切。
学习其它的框架/语言,学习它们是的工作原理和思想,拿它们跟你已知的技术做比较。
学习各种设计模式,最佳实践理论,然后用它们检查自己先前的知识,在需要的时候使用这些模式。
结对编程
反对Joel说的一切。

  回答二:成为多面手
争取成为一个‘多面手万事通’。

在我职业生涯的早期,我在一种数据库和编程语言上是个专家。不幸的是,这种数据库在“数据库战争”中落败了,我才发现我的职业道路…很窄。在此之后,我下定决心以后决不能把自己封在一个小空间里。我开始学习所有手头上能接触到的东西:Windows,Unix,C,C++,Java,C#,Perl,Python,Access,SQL Server,Oracle,Informix,MySQL,等等。不管什么样的新的,不常见的工具或技术,我都成为“大拿” —— “去问克雷格(作者自己),他要是不会,他会去学会的。”结果,我做了各种各样的项目,从为环境监测做嵌入式系统,到为导弹防御做命令和控制系统。

我在各种的公司里唯一遇到的问题是:它们坚持要把我固定在一个专门的研究方向内,而我的专门研究是要成为一个多面手。(也叫做学识渊博的人或多才多艺的人或多领域专家。)

有些事情需要留意 … 高科技界里知识的半衰期是多少?根据摩尔定律(Moore’s law):18-24月内,半数你学到的知识都会过时。错误的遵循这种规律的专家会轻易的在这种技术发展的压力崩溃;一个多面手要做的事就是不断的丰富自己的技能,并从应用这些技能的经历中吸取教训。

  回答三:不要跟臭棋篓子下棋
我一直认为自己在不错的程序员中也算是个“灌篮高手”。直到有个家伙——我们叫他艾伦——被招进团队。艾伦很显然在很多方面都比我优秀。也比我年轻。他让我认识到,在过去的这些年里,我没有多少长进。我是一个特定技术方向的程序员,而且是水平一般。

这惊醒我应该自觉的不断提高自己的水平,特别是我写的代码的水平。

艾伦引导我学会了很多东西。他告诉我,大部分我写的代码在今后的数年里都将一直维护和进行扩展,写代码时要将这点铭记在心。我应该为我的代码写自动测试程序。艾伦说代码的开发一定不能停止在第一版上,应该不断的重构,提炼,让它达到完美。我发现,我对这些语言和工具的使用都还有还很大的改进空间。

从艾伦那我学到的最重要的一件事情是:永远不要停止学习。

数年后,艾伦离开了公司。我的心里突然感觉空荡荡的。这些年与他为伴让我在技能上提升到了一个全新的水平,我知道现在我比团队里的其他人优秀很多。他们仍然写着糟糕的代码,犯着以前犯过的错误。我努力教育他们,但他们对此不感兴趣。事实上,他们讨厌有人这样傲慢自大的指出他们犯的错误。

于是,几个月后,我也离开这这个公司。我去了一个很小的公司,在一个很出色的团队里工作。那里每个人都渴望学习更多知识,我喜欢这样的。

我很幸运能遇到艾伦。没有他,我也许现在仍然待在那家死气沉沉的公司和那帮食古不化的家伙在一起,哪都去不了,想的全是自己的私利。

  这个讨论在stackexchange网站上的地址是这里。

  我觉得上面的回答都让我有所收获,很多时候我们需要一种觉悟,才能做得更好。希望上面的回答也能让你有所觉悟,在以后的工作中做得更好。

心态和想法,是提高编程水平的关键相关推荐

  1. 提高编程水平的一段必经之路,研读官方文档

    刚才看了 论坛里 jinxfei 的十年总结(14):从CS转向BS, 说实话,大部分内容我没有太仔细的看,不过如下的一段引起了我的注意: 真正让我心里有底的,还是在看了官方文档之后:http://s ...

  2. 简单的一道 SQL 题,谈如何提高编程水平

    点击蓝色"有关SQL"关注我哟 加个"星标",天天与12238人一起快乐成长 前两天发了一篇<SQL的3列4种对比方法>,近500 阅读.一个月没更 ...

  3. 单片机常用的编程语言有哪些?怎样能快速提高编程水平?

    在我们上学的时候,很多专业都有开设C语言这门课程,但是汇编语言我是没见过有这门课.C语言和汇编语言都可以作为单片机的编程语言,那么它们具体有什么不同呢? 汇编语言的主要优势是程序可以优化,程序由我们编 ...

  4. 如何提高团队编程水平

    如何提高团队编程水平 发布时间:2012-01-31 17:53     来源:伯乐在线     分类: 程序员 都等你发言 :) 分享到: 过去一年半里,我在为Mendicant大学(Ruby开发者 ...

  5. 程序员如何提高自己的编程水平?

    编程水平的概念有点大,我们这里约定编程水平是指代码正确性,代码的逻辑性以及代码可读性三个方面.根据多年的编程经验,总结一下提高编程水平的几个建议,偏颇之处,还请高手们评论中指正,下面和小编一起来看看吧 ...

  6. 提升编程水平的靠谱方法

    杰洛德·桑托 (Jerod Santo) 写于 2016年12月19日 编者按:我原先曾在2010年5月,为"编程加油站"网( Fuel Your Coding )写过这个话题.很 ...

  7. 提高C#编程水平的50个要诀[转载]

    一篇旧时的文章,看后觉得还可以,特别贴出来. 提高C#编程水平的50个要点: 1.总是用属性 (Property) 来代替可访问的数据成员 2.在  readonly 和 const 之间,优先使用 ...

  8. 从一个实例看编程水平的步步提高

    很久很久前就想写这个话题的文章了,但是,总是找不到合适的例子.例子简单不足于说明问题,例子复杂可读性就会降低,就会达不到文章的目的.两难总让人激发解决问题的斗志,于是乎自己试着写写这个例子吧.这个例子 ...

  9. 怎么提高python编程水平_编程新手如何提高编程能力?

    有些朋友给我留言说,兴致满满的开始自学编程,但是拿到一堆书,却不知道从哪开始,最后的结果就像下面这个图: 下面结合我之前的学习经历,如何从零基础慢慢提高. 1.首先,给你的学习编程一个重要的意义 做任 ...

最新文章

  1. 3.QT事件处理,消息过滤器
  2. java 链表反转_剑指BAT:如何最优雅着反转单链表?
  3. LeetCode 100.相同的树(C++)
  4. docker保存对容器的修改
  5. Intellij Java注释模板
  6. PTA17、求指定层的元素个数 (10 分)
  7. DPDK ring库:环形缓冲区的解剖
  8. Ranorex中Global变量的使用
  9. python 金融应用(一)期权定价公式的计算
  10. java标书_java软件项目投标技术标书【精选】.doc
  11. 计算机组装与维护毕业论文范文,计算机应用毕业论文 计算机组装与维护
  12. 响应式Web设计:HTML5和CSS3实战 读书笔记
  13. 数据中心架构,如何节省运营成本,机房冷却方面减少压力?
  14. 螺栓扭矩查找表excel下载
  15. 正则表达式 re.compile() 相关
  16. 解决Linux下PermissionDenied问题(给文件授权)
  17. 简谈python正则表达式
  18. MySQL多表查询之纵向合并
  19. 【优化求解】基于自适应模拟退火粒子群优化算法求解单目标优化问题matlab代码
  20. [AWT] FlowLayout

热门文章

  1. 搜狗搜索引擎+浏览器,双轮驱动读图时代
  2. Macbook环境配置之个人配置
  3. vlan续解之--三层交换机
  4. 【哈佛学习力6:学习生活化】
  5. ipvs命令~创建VS/NAT模式集群
  6. Pandas分组统计函数:groupby、pivot_table及crosstab
  7. 七大原则+23种设计模式
  8. [RCTF2019]printer详解(python脚本、USB协议精解、TSLP2文档阅读)
  9. python怎么编辑程序_少儿编程:Python系列24——字符串的替换和检索
  10. vue实现数据无缝循环滚动