- 浏览: 198302 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
Kesin97:
不错 很有用。选择性锁也不太影响性能。
sqlserver的updlock锁 (转) -
fox-idea:
学习
用PC作数据库服务器的容灾问题 -
xwei78:
话说这个下载地址不太好找啊,我去oracle网站转了好一会才找 ...
oracle10g官方客户端配置
一个优秀开发者如何才能变得伟大?
还是先不想如何变得伟大:一个不错的开发者如何变成一个优秀的开发者?
从第一步到第N步并没有确定的路径,哎呀,甚至不知道第N步是什么. 能逻辑思考的都明白,缺乏一个确定的路线意味着,想从新手到大师,将会是一个艰辛的旅程。在过去几年间,我还是花了相当一些时间,反复思考这一个难题。接下来是什么?我该如何做才能从一个优秀的开发者成为一个相当优秀的开发者?
成功到底是什么样子的?
当我有一个清晰的目标以及一个可以衡量的成功标准的时候,我做的最好。比如,我想5分钟跑一英里,这很好衡量,而且成功是明确定义了的。我知道现在我一英里我可以跑多快,而且网上到处都是如何跑快的建议和训练项目。我可以选择一种训练项目,努力训练,我非常自信最后能够达到我所期待的目标。而且这个非常容易被衡量,每一周我都可以知道我距离自己的终极目标还有多少.
但是,你如何去衡量自己是否达到了一个“相当优秀的开发者”这样一个级别呢?简单得讲,你不能够。这个目标,如上所述,非常的主观,非常的宽泛,简直是无法衡量的。所以,我们该如何定义一个可以衡量的东西?
和想5分钟跑一英里差不多,我们可以从对比现在作为程序员的自己和所期望能成为的程序员来入手。五分钟一英里的赛跑者有而十分钟一英里的赛跑者缺乏的经历是什么?让大师级程序员获益而新手程序员缺乏的经历是什么?这里关键的是经历。
我们都曾有过某种特定的经历提升了我们作为程序员的技能。我们曾学习过一种新的语言,而让我们有一种新的思维方式。或者,我们都曾精雕细琢过完美的设计,只是为了观察其在苛刻的现实环境下暴露出的缺陷. 我们因此变成更好的程序员。所以,有些经历给了你新的技术。而有些则是不同的模式,并且能够让你理解为什么会这样。正是这些经历在教你,影响你的思维过程,,影响你解决问题的方法,改进你的设计。方便的是,你是否有过某种特定的经历是很容易被衡量的。(如果把这些经历想成是成就就很有意思啦。)
虽然花了些时间,但是我已经对我那不可衡量悬而未绝的目标,达到“相当优秀的开发者”的级别,感到不烦恼了。如果一个开发者能够以他的经历来区分,也许我们已经有了一个明确定义的路径朝向“相当优秀的开发者”这么一个大方向了。我揣测这么一条路径,应该是这样子的:
1、标志着从一个普通人成长成程序员的经历
2、选择某种经历去追求
3、追去的经历完成了。(成就解锁了!)
4、经历的反思,深入的思考。[A]
5、返回第2步,这次是选择一个新的经历。
如何以一种更好方式开始第一步,而不是众包给各位。这里我给出了一部分编程的成就,松散的分了组。[B]我会在文末为你提供多种方式,让你来创造你自己的想法。
成就
学习多种编程范式:
用汇编语言写一个程序
用函数式编程语言写一个应用
用面向对象语言写一个应用
用基于原型的语言写一个应用
用逻辑编程语言写一个应用
用Actor模型写一个应用
用Forth语言写一个应用[C]
体验不同平台上编程的来龙去脉:
写过一个普通的Web应用
写过一个普通的桌面应用
写过一个普通的手机应用
写过一个普通的嵌入式应用
写过一个实时系统
增强你对开发人员所常用的模块的理解:
写过一个网络客户端(HTTP, FTP等)
写过一个设备驱动
写过一个B-tree数据库
包装现有的一个库,以提供更好(更愉快)的用户体验
编写一个应用程序或框架,提供插件模型
写过测试框架
写过编程语言
让自己知道koans, katas, 以及岁月的智慧:
完成过五个code katas
对你想学习的一个语言,完成programming koans
参加一次 coderetreat
阅读 SICP并完成所有练习
开源编程:
为一个开源项目共享代码
补丁被接受
在一个重要的开源项目中得到提交权限
发布一个开源项目
对一个开源项目实施Refactotum
通过教授别人来学习[D]:
发表一次启迪性的讲话
在一个本地用户组中演讲
在一个会议中演讲
教授一次培训课程
发布一个教程
发布一个开源项目的constructive code review
写一本编程的书
关于成就
现在,让我们来继续探讨一会儿。注意每一个成就都是可以衡量的。每一个都是一个布尔值:你完成或者没有完成。例如,很难衡量你是否学过一个函数式编程语言,但是却可以轻易的知道你是否用函数式编程语言写过一个程序。后者是客观察、可测量、布尔的。这种可衡量性意图适用所有这些成就。
需要承认的是,这种可衡量性并不完美。比如在一个会议演讲这个成就:你完全可以做到一般称职的时候就说你赢得了这份成就。但是如果你正在读这篇文字,我假设你是想要变得卓越。你知道只是为了把一项从清单中划掉而号称做到是非常逊的。
既然我们谈到了改进
既然我们谈到了改进,你会如何改进这个清单呢?
这个清单现在在github上作为一个gist,你可以任意的fork它然后添加更多的成就(确保你加的成就是可以衡量的)。或者fork它然后标记那些你已经征服了的成就。你还可以标记你正在做的一项,(例如,你可以去看看这些forks :Justin Blake,Pierre Chapuis, Yann Esposito. )
或者发表评论:什么经历将你塑造成一个更好的开发者?以及你会接下来去解锁哪一个成就?
注释
[A] 我无法充分的强调第4步。为了获得几乎每个成就,你应该停顿和反思这些经历,然后再移动到下一个。反思。问问自己,你学到什么,花些时间来写下这些想法。更好的是,与别人分享,并且对比其他人也已经获得这一成就的人,看看你的学习收获的如何。
[B] 可以去 coderwall.com看看基于成就的模型这些方面的,很有意思。.
[C] Forth基本上是自己的范式
[D] 突然想到了这句: “寓学于教” — Paulo Freire
发表评论
-
karaf 文档
2011-10-14 16:42 0f -
有限状态机
2011-05-20 22:56 0状态机?以前听说过,忘了是老师说的,还是老大说得了。当时的认识 ... -
电子商务后台管理系统
2011-04-07 14:31 1659订单管理: - 多渠道订 ... -
面试题
2011-03-27 17:07 2568java面试题 笔试题大全 http://www.51job ... -
静态路由添加
2011-02-11 14:06 8671.windows下添加静态路由 route add 1 ... -
电脑的一些常识
2010-12-06 15:07 631PAE:物理地址扩展 解决32位电脑受限于4G内存 ... -
音频知识
2010-12-06 14:37 1310电脑存储音频:即把模 ... -
excel sumif 用法
2010-12-05 10:11 839sumif(参数1,参数2,参数3) 参数1:源表的主 ... -
同步时间
2010-11-07 10:42 725在Linux上使用ntpdate -q NTP服务器IP地址。 ... -
raid恢复
2010-10-05 10:20 669两块硬盘做的RAID0。现在更换了一块主板,现在的RAI ... -
ecshop去版权禁止提交信息到官网完全版
2010-07-11 09:45 47711、去掉Powered by ECShop 修改文件:inc ... -
游戏外挂(转)
2010-02-16 15:32 848我主要对外挂的技术进行分析,至于游戏里面的内部结构每个都不一 ... -
选购UPS
2010-01-12 16:54 706选购 UPS,首先值得考虑 ... -
windows2003 4G内存
2009-11-17 16:12 1338在 Windows Server 2003 中,当服务器使用热 ... -
学习一种新编程语言要做的几个练习
2009-06-23 15:15 896今天看到一篇文章--学习一种新编程语言要做的15个练习,感觉不 ... -
开机响声 转
2009-06-25 09:03 643不同的报警声代表不同的含义: 1短:系统正常启动。恭喜,你的机 ... -
一些dos命令
2009-06-28 15:07 813attrib指令的格式和常用参数为 ATTRIB ... -
删除NT服务
2009-06-30 10:14 641在注册表删除法: regedit打开注册表,打开 ... -
用“分区魔术师”重新分区来屏蔽硬盘坏道 转
2009-07-02 11:25 3217其实就是通过对硬盘重新分区,隐藏有物理坏道的硬盘空间,对其实行 ... -
卡巴斯基6.0自动断开连接需要重启的原因(转)
2006-12-06 21:48 654很多使用卡巴斯基6.0都会遇到这种情况:卡巴斯基总是 ...
相关推荐
vue开发者工具最新版,vue-devtools6.1.4 使用方法: 打开chorme浏览器的设置,选择扩展程序,把下载好的.crx 文件拖进去即可。...这个是vue开发者工具的最新版本,亲测能用! 欢迎大家下载使用!
网络上没有一篇文章是如此详细描述了安装MAC虚拟机到Delphi XE进行IOS开发的 MAC虚拟机安装 ----> MAC系统升级 ---->VMWare Tools安装 ---->获取证书 ---->加载开发者设备 ---->下载安装XCode ---->Delphi XE...
开发者最佳实践日-Spark-Ecosystem
2019华为云鲲鹏开发者大赛决赛冠军---电饭煲火锅战队.zip
2019阿里云峰会上海-开发者大会 - 产品和开发 - Jason FA2.pdf
2003-10-29 致Borland C++开发者社群的公开信 -- JP LeBlanc
VUE开发者工具vue-devtools-4.1.4_0。
开发者助手电脑版v1.0-20191121.exe
2020-2021中国开发者调查报告,CSDN官方调研报告
藏经阁-阿里开发者手册-单元测试专题-115
oracle数据库开发者指引(database-development-guide.pdf)
开发者关心的MySQL新特性-吴炳锡-final
开发者关心的MySQL新特性-吴炳锡-final.pptx
带你实现开发者头条APP(四)---首页优化(加入design包) 博客地址:http://blog.csdn.net/lowprofile_coding/article/details/51236496
ATEC蚂蚁开发者大赛-风险大脑-支付风险识别算法源码+项目说明.zipATEC蚂蚁开发者大赛-风险大脑-支付风险识别算法源码+项目说明.zipATEC蚂蚁开发者大赛-风险大脑-支付风险识别算法源码+项目说明.zipATEC蚂蚁开发者...
带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 博客地址:http://blog.csdn.net/lowprofile_coding/article/details/51321896
Intel 开发者手册 《翻译附录A-C》
一个为所有开发者提供的成长之路指南,旨在为菜鸟和老鸟提供一条充满乐趣和挑战的发展路径。这个项目将帮助你轻松了解各种技能树和技术路线,使你的职业之旅不再迷茫。无论你是新手还是经验丰富的开发者,这个开源...