最近在stackexchange网站上看到了一个非常好的问答,有人问:你做过的最有效的提高你的编程水平的一件事情是什么?
回首作为一个程序员这些年来的生活和职业道路,我使用了很多种不同的方法来提高我的编程技能 —— 阅读代码,编写程序,阅读书籍,听讲座,看视频,等等。
我的问题是:你做过的最有效的提高你的编程水平的一件事情是什么?对于那些想提高水平的程序员,你的建议是什么?
我希望你们提供的答案是各种各样的,并且不是那种“放之四海而皆准”的答案 —— 我希望得到适用于不同人的不同的答案。
有很多人给出了自己的答案,在这里,我将其中最受认可的前三种答案选出来翻译给大家。
最受欢迎的回答:学无止境
没有特别的先后次序…
和比自己更聪明的人一起工作
永远乐意听取他人的意见,不管对方是低级水平,一般水平,资深,还是大师。职称头衔并不代表一切。
学习其它的框架/语言,学习它们是的工作原理和思想,拿它们跟你已知的技术做比较。
学习各种设计模式,最佳实践理论,然后用它们检查自己先前的知识,在需要的时候使用这些模式。
结对编程
反对Joel说的一切。
第二受欢迎的回答:成为多面手
争取成为一个‘多面手万事通’
在我职业生涯的早期,我在一种数据库和编程语言上是个专家。不幸的是,这种数据库在“数据库战争”中落败了,我才发现我的职业道路…很窄。在此之后,我下定决心以后决不能把自己封在一个小空间里。我开始学习所有手头上能接触到的东西:Windows,Unix,C,C++,Java,C#,Perl,Python,Access,SQL Server,Oracle,Informix,MySQL,等等。不管什么样的新的,不常见的工具或技术,我都成为“大拿” —— “去问克雷格(作者自己),他要是不会,他会去学会的。”结果,我做了各种各样的项目,从为环境监测做嵌入式系统,到为导弹防御做命令和控制系统。
我在各种的公司里唯一遇到的问题是:它们坚持要把我固定在一个专门的研究方向内,而我的专门研究是要成为一个多面手。[编辑: 也叫做学识渊博的人或多才多艺的人或多领域专家。]
有些事情需要留意 … 高科技界里知识的半衰期是多少?根据摩尔定律(Moore’s law):18-24月内,半数你学到的知识都会过时。错误的遵循这种规律的专家会轻易的在这种技术发展的压力崩溃;一个多面手要做的事就是不断的丰富自己的技能,并从应用这些技能的经历中吸取教训。
第三受欢迎的回答:不要跟臭棋篓子下棋
我一直认为自己在不错的程序员中也算是个“灌篮高手”。直到有个家伙——我们叫他艾伦——被招进团队。艾伦很显然在很多方面都比我优秀。也比我年轻。他让我认识到,在过去的这些年里,我没有多少长进。我是一个特定技术方向的程序员,而且是水平一般。
这惊醒我应该自觉的不断提高自己的水平,特别是我写的代码的水平。
艾伦引导我学会了很多东西。他告诉我,大部分我写的代码在今后的数年里都将一直维护和进行扩展,写代码时要将这点铭记在心。我应该为我的代码写自动测试程序。艾伦说代码的开发一定不能停止在第一版上,应该不断的重构,提炼,让它达到完美。我发现,我对这些语言和工具的使用都还有还很大的改进空间。
从艾伦那我学到的最重要的一件事情是:永远不要停止学习。
数年后,艾伦离开了公司。我的心里突然感觉空荡荡的。这些年与他为伴让我在技能上提升到了一个全新的水平,我知道现在我比团队里的其他人优秀很多。他们仍然写着糟糕的代码,犯着以前犯过的错误。我努力教育他们,但他们对此不感兴趣。事实上,他们讨厌有人这样傲慢自大的指出他们犯的错误。
于是,几个月后,我也离开这这个公司。我去了一个很小的公司,在一个很出色的团队里工作。那里每个人都渴望学习更多知识,我喜欢这样的。
我很幸运能遇到艾伦。没有他,我也许现在仍然待在那家死气沉沉的公司和那帮食古不化的家伙在一起,哪都去不了,想的全是自己的私利。
原文地址是
这里
分享到:
相关推荐
Java趣味编程100例是一份专为编程爱好者和初学者设计的学习资源,它通过一系列有趣、富有挑战性的实例,帮助学习者深入理解和掌握Java编程语言。这些源文件旨在激发学习者的兴趣,使他们在实践中不断提高编程技能。...
首先,手册中提到的G代码(G-code)是数控机床中最常用的编程语言之一,用于控制机床的运动和操作。例如: - G00表示快速定位,用于迅速将刀具移动到指定位置,而无需进行切削。 - G01是直线插值,命令机床以预设的...
总之,《Java网络编程第三版》是一本全面介绍Java网络编程的书籍,无论你是初学者还是有经验的开发者,都能从中获取宝贵的知识和实践经验。通过深入学习这本书,你将能够熟练地利用Java进行网络应用的开发,构建高效...
在iOS开发中,网络编程是不可或缺的一部分,而Socket编程则是实现网络通信的基础。Socket是一种低级别的、原始的网络通信机制,允许应用程序通过网络发送和接收数据。本示例"iOS网络编程SocketDemo"旨在帮助开发者...
AS/400系统是IBM推出的一种企业级服务器平台,主要应用于商业应用系统,而RPG(Report Program Generator)编程语言则是AS/400系统中的核心编程工具之一。RPG,起初是为了处理数据报告而设计,随着时间的发展,它...
Python编程是一种广泛应用于数据分析、网页开发、人工智能等领域的高级编程语言。它的语法简洁明了,易于学习,使得“从入门到实践”的过程相对平滑。本资料包是针对Python编程的初学者设计的,旨在帮助你快速掌握这...
Python是一种广泛应用于科学计算、数据分析、人工智能以及web开发等领域的高级编程语言,因其简洁明了的语法特性,常被称为“胶水语言”,能够轻松地连接各种组件。"Python趣味编程100例(99个)"这个资源显然是为了...
《三菱Q系列编程手册》是全面了解和掌握三菱PLC编程技术的重要参考资料,尤其对于使用中文界面的工程师来说,这是一份极其宝贵的指南。手册详细介绍了三菱Q系列PLC的结构、功能、编程语言以及应用实例,旨在帮助读者...
CUDA C 编程指南是程润伟教授的著作,它主要针对的是想要深入理解并掌握CUDA C编程技术的读者。CUDA(Compute Unified Device Architecture)是由NVIDIA推出的一种并行计算平台和编程模型,用于利用图形处理器(GPU...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在标题“Socket编程”中,我们聚焦的是服务器端的Server Socket和客户端的Client Socket。Socket是网络编程的一个抽象接口,它允许两个运行...
西门子S5 PLC编程软件是一款历史悠久且在特定领域仍具有广泛应用的工控软件。西门子S5可编程控制器(PLC)是工业自动化早期的代表性产品,它为自动化控制提供了灵活、可靠的解决方案,尤其是在20世纪80年代至90年代...
在IT行业中,中控系统(Central Control System)是用于集中管理多媒体设备、环境控制和音频视频...无论你是初入行业的新人,还是寻求提升的专业人士,这些资源都能提供宝贵的学习材料,助你在中控编程领域更上一层楼。
总的来说,松江3208联动编程软件是火灾自动报警系统中不可或缺的一部分,它使得系统的配置和管理更加便捷,提高了整体的安全性和效率。通过熟练掌握这款软件,用户可以更好地保障建筑内的消防安全。
1. **梯形图编程**:梯形图是PLC编程中最常见的一种图形化编程语言,模拟了继电器控制系统的逻辑结构,易于理解和实现。在三菱FX2N编程软件中,用户可以利用丰富的指令库,构建出复杂的控制逻辑,实现对PLC的输入/...
作为Microsoft Office套件的一部分,Visual Basic(VB)是一种强大的编程语言,尤其适用于开发桌面应用程序和Windows环境下的软件。这本书的核心目标是帮助读者提升在VB中的专业技能,以实现更高效、更复杂的程序...
《64位 微处理器系统编程和应用编程》 周明德编著 完整清晰版 1 针对当前应用最广泛的两种64位处理器--Intel和AMD的四核处理器作为基础进行介绍分析,反映了当代微处理器的最新发展。 2 把Intel和AMD两种处理器综合...
本资源"OPENCL编程指南_SRC"包含的是《OpenCL编程指南》一书中的源代码,旨在帮助读者深入理解OpenCL编程,并通过实际操作来提升技能。 书中的源代码是学习OpenCL的关键,它们涵盖了各种OpenCL的基础概念和技术,...