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

原文地址: 点击打开链接   http://huangbowen.net/blog/2013/03/24/senior-programer-good-habits/

运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想。《程序员的思维修炼》一书中将程序员分为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。而后随后就丢掉。这是一种不好的习惯。你应该学会管理你的代码,让它们成为你的宝贵财富。目前有很多免费的代码托管网站,首推github。github是全球最大的源代码托管网站,很多著名的开源框架都将其源代码托管在上面,如Jquery,Junit,Ruby,Clojure等。在这里,你可以上传你的源代码分享给他人。也可以方便的查看他人的优秀源码。如果你愿意,也可以成为一名志愿者,一起与他人开发一个开源项目。一切只需要一个git客户端和一个github账号就可以搞定。

  4. 使用日志对知识进行总结。一个不善于总结的程序员绝不是一个优秀程序员。SMART管理中有很重要的一条,那就是目标必须是可衡量的。而我们在学习技术的过程中,除了产出的code本身,日志也是一个重要的可衡量的产出物。你可以记下所犯的错误,以避免重犯,也可以记下自己的所得,梳理思路。推荐一款日志工具evernote。它支持几乎所有的操作系统和mobile平台,并可以方便的将日志同步到云端。对于一些日志你可以再加工一下发表到博客上,接受大家的检阅,并扩大自己的影响力。另外,mind map也是不错的梳理思路、回顾总结的好方式。比如我学习了正则表达式,就画了一张mind map来记录正则表达式的全部语法,以后如有遗忘只需看一下该图表即可。

  5. 阅读成为你的日常习惯。软件工程是一种知识生产活动,前人的经验的载体就是文字。作为IT人士,知识更迭是很频繁的,不了解外面的世界很容易被遗弃。我们不仅要热爱阅读,还要读好书,读好文章。养成良好的阅读习惯是每个程序员应当具备的素质之一。这里推荐一个网站,豆瓣读书。上面有很多技术书籍的信息,书评等,可以成为你阅读的一个参考。另外,鄙人也强烈推荐了一些好书,想看的可以访问这里。

  6. 熟练使用各种快捷键。对于程序员来说,提高速度就意味着了生产率。提高了生产率,你就有了更多的时间去展开新的学习。熟练使用快捷键的好处不只是节省时间,而是将你的大脑从重复机械的劳动中解放出来,能够关注到更重要的部分。大到操作系统,小到浏览器,都有自己各种各样的快捷键。尤其对于程序员天天使用的IDE来说,掌握快捷键尤其重要。从现在开始,打印一份IDE的快捷键大全放在桌面上,每天都要熟悉其中的几个,用不了一星期你就会发现你的编程效率至少会提升30%以上。别质疑,因为我就是这样做的。

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

原文地址:http://huangbowen.net/blog/2013/03/24/senior-programer-good-habits/

作者:黄博文

转载得到作者书面同意。:-)

优秀程序员无他-善假于物也--by黄博文相关推荐

  1. 优秀程序员无他,善假于物也

    运用一门程序设计语言对大多数程序员来说是小菜一碟,但是更上一层楼成为一名专家级的软件开发者,恐怕目前还是大多数人的梦想.<程序员的思维修炼>一书中将程序员分为5个层级:新手.高级新手.胜任 ...

  2. 写给程序员的秘籍:你跟优秀程序员的差距,其实就在这几个方面!

    软件蚕食一切,未来属于程序员.所以人人都想当程序员.但是并不是每个人都能当好程序员.在你做出决定前还是先看看自己能不能当好程序员吧. 要记住的是,编程不是什么精英才能干的事情. 这个行业永远都缺人.所 ...

  3. 优秀程序员的七大特征,你具备几条?

    优秀程序员的七大特征,你具备几条? 世界上的很多事情都是有规律的,就像 <高效能人士的七个习惯>,优秀的程序员也有七个主要特征.这些特征有些是先天具备的,也就是天赋,但有些是在日常的编程工 ...

  4. 糟糕程序员和优秀程序员的区别?

    软件蚕食一切,未来属于程序员.所以人人都想当程序员.但是并不是每个人都能当好程序员.在你做出决定前还是先看看自己能不能当好程序员吧. 要记住的是,编程不是什么精英才能干的事情. 这个行业永远都缺人.所 ...

  5. 优秀程序员都会关注的公众号

    程序员的价值绝对不在于技术本身,而在于做出好用且好看程序的能力. 程序员常有,优秀程序员不常有. 成为优秀的程序员是极其困难的,并且这个过程不可能一蹴而就. 你是不是也立志做一名优秀的程序员呢? 据说 ...

  6. 成为优秀程序员需要具备的15种编程技巧

    来源 | https://www.linuxmi.com/chengxuyuan-15-jiqiao.htm 编程是一个告诉计算机如何工作的术语.通过编程,我们可以轻松操作任何技术.就像所有人在特定地 ...

  7. Linux学习总结(30)——优秀程序员喜欢用Linux操作系统

    大多数人推荐Linux,基本上都会说Linux让你更高效.更优秀. 然而工具只是工具. 然而工具只是工具. 然而工具只是工具. 优秀程序员和不优秀程序员的区别首先是态度上的区别. 他们有自己的理想,思 ...

  8. 纯干货:优秀程序员和普通程序员的差距就在这7个关键点

    最近好几个读者问:如何成为牛逼的程序员?编码能力如何成长.回答完后,有些心得也给大家分享下. 其实程序员最关键的技能远不止编码能力,架构思维.底层知识的深度等等,同样很重要. 程序员这个行业,是一个区 ...

  9. 代码写的多了就能成为一名优秀程序员吗

    对于很多学习编程的新人来说,老师都会要求多练习代码,这并没有错,但是并不代表写代码越多就越优秀,而优秀的程序员都是从练习写代码中培养自己的能力.努力不一定成功,但不努力一定不会成功,所以在成为程序员的 ...

最新文章

  1. python/pandas数据分析(十五)-聚合与分组运算实例
  2. ExtJS4.1.1 设置表格背景颜色 修改文本颜色 在表格中插入图片
  3. Synchronize类锁
  4. Tcpping 替代ping测试网路延迟
  5. java发送qq邮件
  6. Android 蓝牙手柄开发
  7. DGA 域名生成算法攻防
  8. 豆瓣电影数据分析案例
  9. 大数据分析:家庭教育的10个主要问题
  10. php strpos无效,php问题:strpos功能不起作用
  11. 电阻电容电感二极管三极管在电路中的作用
  12. AlignedReID
  13. 梳理吸收率、反射率和透射率
  14. 重庆崽儿,啷个能不回重庆撒!
  15. php的declare命令如何使用?
  16. 基于支付宝微信通知的一种个人收款回调方案
  17. java实现实体关系抽取
  18. D. Martial Arts Tournament
  19. 【Linux练习生】进程间通信
  20. echarts 柱状图(1)多条柱状图完成参考标准需求

热门文章

  1. 测绘人必备的三维地图工具,功能超级实用!
  2. maven 环境变量和仓库配置
  3. mysql与oracle根据生日时间计算生日
  4. 在Android.mk文件中进行文件拷贝
  5. 对面向对象的理解(转载原因:举例简单明了)
  6. PHP socket多路复用通信demo
  7. AndroidStudio使用手机进行模拟,出现Failed to commit install session 902060429 with command cmd package install-
  8. 八大内部排序+外部排序
  9. 1-继承、模板设计模式、抽象类、final
  10. 宝塔 开启xdebug_XDebug的配置和使用