优秀程序员无他-善假于物也

运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想。《程序员的思维修炼》一书中将程序员分为5个层级:新手,高级新手,胜任者,精通者,专家。根据作者的调查研究结果,在这5个层级中,大多数的程序员属于高级新手。而且居于这个层级的程序员从入行1、2年的到工作10来年都大有人在。

身为一个程序员,如何才能尽快的突破自身的瓶颈,得到快速的提升那?这可真不是三言两语可以说清楚。本人09年毕业投身软件行业,2012年初离开工作了三年的公司A,加入了现在的公司B。算到现在呆在B公司也即将满一年了。但是我敢说在B公司1年学到的东西,比在A公司3年加起来的总和还要多。
这么大的进步是源于我养成了较好的学习习惯,每天都保持汲取知识。这些习惯大都是同我身边的同事身上偷来的。现在,我就把这些东西分享给大家,一起共勉。

我们无需摸着石头过河,因为前人已经给我们总结了很多宝贵的经验。

  1. 请将google作为你的搜索引擎。 这点放在第一条表明了它绝对是重中之重。当你尝试使用google做一段时间的技术搜索后,你会发现百度是多么的低效和不靠谱。同样一个技术关键字,google结果的匹配程度会远高于百度。如果你说你英文能力差的话,那么请赶快补习英语。在我身边我还没发现一个很牛逼的程序员他的英文很差劲。外国人的技术文章大都很细腻,很有条理,并且注重由浅入深,覆盖面广。比如我前段时间想写一篇关于Java泛型的文章,就搜到了oracle有一篇对java 泛型的完整讲述,地址在这里。可以说看完这篇文章后,你再也不担心你会遗漏泛型中的知识点了。
  2. 学会对自己制定目标并执行。 有人说,我有目标,那就是1年精通xx语言。我说,这样的目标等于没有目标。制定目标必须要遵循SMART原则,那就是:
    • 目标必须是具体的(Specific)
    • 目标必须是可以衡量的(Measurable)
    • 目标必须是可以达到的(Attainable)
    • 目标必须和其他目标具有相关性(Relevant)
    • 目标必须具有明确的截止期限(Time-based)

    不可被验证的目标只能说是口号,而喊口号又恰恰是中国人最擅长的。要建立起可验证的目标,还需要对目标进行追踪。在对目标进行追踪验证的过程中可以使用一些工具辅助,比如我使用的就是wunderList

  3. 使用代码托管网站管理你的代码。 作为程序员,学习新东西时少不了写一些代码,demo。而后随后就丢掉。这是一种不好的习惯。你应该学会管理你的代码,让它们成为你的宝贵财富。目前有很多免费的代码托管网站,首推githubgithub是全球最大的源代码托管网站,很多著名的开源框架都将其源代码托管在上面,如Jquery,Junit,Ruby,Clojure等。在这里,你可以上传你的源代码分享给他人。也可以方便的查看他人的优秀源码。如果你愿意,也可以成为一名志愿者,一起与他人开发一个开源项目。一切只需要一个git客户端和一个github账号就可以搞定。
  4. 使用日志对知识进行总结。一个不善于总结的程序员绝不是一个优秀程序员。SMART管理中有很重要的一条,那就是目标必须是可衡量的。而我们在学习技术的过程中,除了产出的code本身,日志也是一个重要的可衡量的产出物。你可以记下所犯的错误,以避免重犯,也可以记下自己的所得,梳理思路。推荐一款日志工具evernote。它支持几乎所有的操作系统和mobile平台,并可以方便的将日志同步到云端。对于一些日志你可以再加工一下发表到博客上,接受大家的检阅,并扩大自己的影响力。另外,mind map也是不错的梳理思路、回顾总结的好方式。比如我学习了正则表达式,就画了一张mind map来记录正则表达式的全部语法,以后如有遗忘只需看一下该图表即可。
  5. 阅读成为你的日常习惯。软件工程是一种知识生产活动,前人的经验的载体就是文字。作为IT人士,知识更迭是很频繁的,不了解外面的世界很容易被遗弃。我们不仅要热爱阅读,还要读好书,读好文章。养成良好的阅读习惯是每个程序员应当具备的素质之一。这里推荐一个网站,豆瓣读书。上面有很多技术书籍的信息,书评等,可以成为你阅读的一个参考。另外,鄙人也强烈推荐了一些好书,想看的可以访问这里
  6. 熟练使用各种快捷键。对于程序员来说,提高速度就意味着了生产率。提高了生产率,你就有了更多的时间去展开新的学习。熟练使用快捷键的好处不只是节省时间,而是将你的大脑从重复机械的劳动中解放出来,能够关注到更重要的部分。大到操作系统,小到浏览器,都有自己各种各样的快捷键。尤其对于程序员天天使用的IDE来说,掌握快捷键尤其重要。从现在开始,打印一份IDE的快捷键大全放在桌面上,每天都要熟悉其中的几个,用不了一星期你就会发现你的编程效率至少会提升30%以上。别质疑,因为我就是这样做的。

不积跬步,无以至千里。要想成为优秀程序员,光有一腔热血是不够的,一定要持之以恒,坚持不懈的持续学习。以此来与大家共勉。

时间: 2024-10-28 19:19:42

优秀程序员无他-善假于物也的相关文章

优秀程序员的十个习惯

--转来和大家一起共勉 在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer).经过一段时间后,这些人也许能够成为一个 优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作.但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下 面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员. 1. 学无止境 .就算是你有了1

优秀程序员素质培养

踏入程序员这个行业,你就注定要学习一辈子,新技术层出不穷,技术体系更新快速,这是和其他行业最大的区别之一.所以,如果你想在这个行业混出点样子,那么请你随时做好学习的准备,如果你想成为优秀的程序员,那么一定要有正确的学习方式,下面推荐几条程序员的最佳学习方式,希望能帮你事半功倍. 书籍和期刊是必不可少的 无论你是新手菜鸟还是高级程序员,你都离不开书籍,当然我们要有选择的读书,尽量选择一些经典的书籍来看,如果你英文水平比较好,那么读一些老外撰写的书籍是最好不过的了.书籍能让你在繁杂的互联网上总结出一

那些优秀程序员身上的共同特质

你是否发现,在我们身边的那些优秀程序员身上总是能找到一些共同的特质,这些特质并非与生俱来,但却逐渐在他们身上留下深深的烙印,这也使得他们变得与众不同,更成为我们心目中的佼佼者. 至少深入理解一门编程语言 学习编程和学驾驶很像,你很容易就能学会驾驶,比如,经过一个月的驾校培训,你就能获得驾照,但要真正成为一名优秀的司机,却必须经过长时间的驾驶实践才行,这将帮助你在头脑中形成一套完整意识体系以应对驾驶中所遇到的不同情况.编程也是一样,当程序员们作出那些优秀的程序设计时,看似自然,但它的背后却是程序设

具备这些特性 说明你是个优秀程序员

编程是个很复杂的玩意,但是成就优秀程序员的很多因素和我们在学校中早期学到的相差无几.本文灵感来源于Robert Fulghum的<All I Really Need to Know I Learned in Kindergarten>. 1.分享 尽可能地使用开源,并且如果有能力的话也可以把自己的成果分享给大家.整个社会的智慧结晶肯定比一些大公司自管自闭门造车要好. 2.公平的心态 不要以为你的选择就是唯一能奏效的,试试其他技术.框架.方法和建议,也许其他的选择比你原先的好也未可知.要用开放的

避免成为优秀程序员

我曾经和我认为优秀的程序员一起工作,但是他们是真正优秀的程序员吗?是什么让他们如此优秀?(或者,他们只是普通的程序员?) 最近读到Mark Pearl博客里一篇名为<Programming, a Subset of Writing>的文章,其中的观点让我十分推崇,尤其是下面这段: 优秀程序员和普通程序员最大的区别在于,优秀的程序员会使用整洁.易于理解的方式进行编程,任何不必要的复杂代码均不会出现.和我工作过的那些真正优秀的程序员总是尊学这样的编程步骤:写代码.重构.进一步重构. 就像日常生活技

成为优秀程序员的十个有效方法

http://www.aliyun.com/zixun/aggregation/7026.html">优秀的程序员是在穿过一条单行道的时候还会往两边看的人. 作为一个IT行业的软件程序员,每天驱使我们日复一日的辛勤工作的,是来自我们对编程的兴趣和激情.但是要让编程变得始终有趣,我们必须学会坚持某些成为优秀程序员的基本原则. 我并不是要写出一些咒语,你照着执行就可以成为一个优秀程序员了.我的目的是想记录下我学习到的和用过的一些有用的经验,它们帮助我获得比较好的结果.对于优秀程序员是没有明确定

可以使你成为更优秀程序员的5个好习惯

我们都希望能够在我们所做的事情中得到成长,在WEB开发领域,我们花费时间最多的就是编写代码.这可能包括HTML, CSS, JavaScript, PHP, Python, ActionScript或者任何其他你构建WEB站点时选用的语言. 这篇文章中,我们将分享一些实际的步骤,使你可以扩充技能,成为一个更优秀的程序员.我们提出五个不同的生活习惯,它们可以使你在你所从事的领域变得更加优秀. 1. 一个时间段内只专注于一种类型的语言 如果你正在设计或开发网站,你将需要同时熟悉多种不同的语言.你可能

优秀程序员与普通程序员在行为上的差别

优秀程序员的行为: 拿到任务,就开始仰望星空或天花板上那盏高悬的电灯棒,状如老僧入定 忽而皱眉,忽而展颜一笑,忽而手舞足蹈,忽而在纸上指指戳戳,忽而口中念念有词,忽而长吁--感觉有点神经病啊 桌子上摆的是代码大全.设计模式.敏捷实践之类的书籍,并且没有灰尘 chrome或firefox的书签栏里分门别类,类别多于10个,8个以上是技术相关的 容不得破窗户,看见别人的烂代码就想改过来 随手就能在白板上画出软件的流程图或者时序图-- 项目做完了,别人在打游戏.看视频.忙着回复QQ.向剁手族前进,他在

优秀程序员的标准是什么

无数的人问过类似的问题,怎么样才能做一个优秀程序员?在回答这个问题之前,首先得明白什么是优秀程序员,这样才有方向和目标,可是这事情太主观,可能各人的标准千差万别,不谈那些传奇性的独自一人做出伟大事情的特例,也不谈什么上天入地,上帝大牛的诡论,以下是广泛比较认可的,在通常的项目开发中,一个优秀程序员的标准. 解决问题的能力 在项目开发中,一个程序员的能力等于其解决问题的能力.假如想有个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的规模和难度来衡量. 因为难度上不好那么简单的划分,并且在