编程成就:开发人员如何升级

标签: 编程 开发 升级 | 发表时间:2011-11-08 20:05 | 作者:(author unknown) Yi
出处:http://news.cnblogs.com/

  原文链接:http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer/

  一个优秀开发者如何才能变得伟大?

  还是先不想如何变得伟大:一个不错的开发者如何变成一个优秀的开发者?

  从第一步到第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


  本文链接:http://news.cnblogs.com/n/120936/

  相关新闻:
  · 什么时候学习编程都不晚(2011-10-18)
  · 消灭程序员需要百年吗?(2011-10-21)
  · 程序员用什么语言:技术为王还是产品为王(2011-11-07)
  · 怎样花两年时间去面试一个人(2011-11-08)
  · 编程:休息片刻的好处(2011-11-07)

相关 [编程 开发 升级] 推荐:

编程成就:开发人员如何升级

- Yi - 博客园新闻频道
  原文链接:http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer/.   一个优秀开发者如何才能变得伟大.   还是先不想如何变得伟大:一个不错的开发者如何变成一个优秀的开发者.

提高iOS开发效率的方法和工具(升级篇)

- - IT江湖
这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象.

面向GPT-4编程的时代来了:Github Copilot大升级,首次集成聊天功能

- - 机器之心
从今天开始,面向 GPT-4 编程. 面向 GPT-4 编程,程序员们终于等到了这一天. 作为 Copilot 代码补全工具的升级,GitHub 刚刚宣布了 Copilot X 计划,正式接入 GPT-4,并放出了一系列全新功能. Copilot X 搭建了一种以代码为中心的聊天模式. 升级后的 Copilot 在整个开发生命周期中均可应用,而不仅仅是代码补全.

七大无需编程的DIY移动开发工具

- - IT经理网
现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入. 此外,DIY工具的出现,也帮助广大不具备专业知识和技术的“移动开发粉”创建自己的应用提供了条件. 本文从DIY开发工具说起,为广大企业和个人介绍了7款无需学习任何编程语言,只需运用工具中所提供的各种丰富的功能模块,便可在几分钟内完成创建和发布移动应用的DIY开发工具.

结对编程 VS 代码审查:对比开发者文化

- - ITeye资讯频道
从上一份工作到现在的这份工作,我从结对编程的开发文化过渡到同行代码审查,这个转变过程是一个非常有趣的经历. 我认为我要记录下些我所注意到的变化. 你可以找到很多标题是/(结对编程|代码审查)的(利|弊)/这种样式的文章,这些文章的作者都可以给出一套清晰且有说服力执行方案. 我认为只要权衡它们的利弊,这两种方案都是非常有效率的.

软件编程精髓:开发者需知的十项真理 二

- - 水煮沉浮
一位经理人曾告诉我有关他的秘密,他总是面带微笑并告知他的团队,他很热爱他们所作的事情即便是有危险的,在他走出门的那一刻,他会说“哦,还有一件事”. 那个弧线球部分覆盖了该项目,并要求大家重新设计应用程序. 意思说作为一名管理者首先你得肯定团队的工作能力. 项目范围的扩张程度直接体现了这个项目结构的最终成果.

软件编程精髓:开发者需知的十项真理 一

- - 水煮沉浮
【IT168 评论】编程是一种有益的体验方式,当遇到挑战时,我们会不断寻求新的解决方法. 也许你会认为将毅力、直觉、适宜的工具三个组合在一起即可编写出优雅、完美的代码. 然而,随之而来的拙劣的部署或另一种功能需求亦或者是沉重的依赖关系会产生不良的迭代更新,等等这些突发状况会摧毁了你最初的梦想. 我们希望每次的努力付出能够有着深远的影响,希望我们的应用程序所依赖的服务器如同磐石一样,然而编程的获取方式却是残酷的.

每位开发人员都应铭记的10句编程谚语

- - CSDN博客移动开发推荐文章
所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情. 也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己. 别紧张,这也许只是一场消防演习. 代码设计是否糟糕,从某些地方就可以看出来. 程序员们通常称它们作代码异味(Code Smell),但是就我个人认为“代码警报”这个名字更为合适一些,因为它有更高的紧迫感的含义.

我不升级

- Joro - 不许联想
昨天准备上QQ收文件,发现这样提示,我知道这个提示意味着什么,我犹豫了一下,最后选择不升级. 这意味着我不能再使用这个软件了. 最近腾讯和360之间充满龌龊和恶心的争斗,让我觉得越来越无聊了. 实际上,双方这样敢大打出手,都认为自己可以挟持用户,以达到自己的利益. 我估计双方都会在占有用户硬盘空间而没完没了地升级,相互给对方下绊,那用户的系统安全谁来保障呢.

不会编程也能做应用:移动应用开发工具和平台精选

- UnderSn0w - 互联网的那点事
移动互联网时代,也可以说成是应用程序时代. 以iOS和Android为代表的主流移动平台上有着近百万的各种应用,在使用这些新奇有趣的应用的同时,是否有过自己DIY一款移动应用的想法. 不会技术不要紧,不懂编程没关系,小编今天为大家带来的是一些能帮助你简单快捷地创建移动应用的工具和平台,其中大多数门槛极低,可谓老少咸宜.