搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 806|回复: 12
收起左侧

编程目标:开发人员如何提高能力

[复制链接]

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
发表于 2012-7-24 17:35:49 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
本帖最后由 轻舟过 于 2012-7-24 20:10 编辑

英文原文:Programming Achievements: How to Level Up as a Developer
  一个优秀的程序员如何能练就成一个卓越的程序员?
  先等等,暂时不谈卓越,先谈谈如何成为一个优秀的程序员。
  从第一步到第N步并没有明确的路线图。事实上,第N步到底是什么还不确定。就像逻辑型思维的开发者一样,缺乏明确的目标会让从入门到精通的道路变得异常崎岖。
  过去的几年中,我花了不少时间来思索这个问题。我该如何从一名能力尚可的程序员修炼成一个真正优秀的程序员呢?
  成功是什么?
  当我对成功有清晰的目标、量化的标准的时候,我就能发挥我的最大潜力。比如,我想实现5分钟跑完一英里这个目标。好吧。这个路程很容易测量,成功的界限分明。我很容易知道跑一英里需要多久,网上也到处都是提高跑步速度的建议和训练计划。我可以选择一个计划并付诸努力,我深信我最终能够实现目标。这是一个神奇的可量化的计划,因此,每个星期我都可以检测到距离我的终极目标还有多远。
  但是如何界定你是否成为了“足够优秀的程序员”呢?一言蔽之,难以界定。这个目标从一开始就太主观,太模糊,太简单,无法量化。那么我们能找到能量化的东西吗?
  我们都有过一些提高我们技能的经验。我们可能曾经学过一门开启我们思路的新语言。我们也可能曾经有过一套完美的设计方案,但直到最终投入生产时才发现它漏洞百出,但我们因此而成长。有一些经验增长你的技能,有一些让你遇见反模式(注:反模式是指软件开发中经常被用到的但效率不高的模式。),并让你认知它们为什么是反模式。正是这些经验给你上了课,影响了你的思维模式,改变了你解决问题的方法,最终改善了你的设计。而你是否获得了某种经验,这是显而易见的。把经验当做是我们的收获或许很有趣。
  所以,虽然这需要付出时间,但我现在学会了适应成为“一个真正优秀的程序员”这一目标的不可量化性。如果一个程序员依靠经验取得了某些进展,那么我们就能有一个清晰的路线图来实现“成为真正优秀的程序员”这一终极目标。我想这个路线图应该是这样的:
  • 1. 确定哪些技能能够帮助程序员进步
  • 2. 着重积累某一个技能的经验
  • 3. 直到这个技能完全掌握(成功攻关!)
  • 4. 反复思考这个技能,直到融会贯通[A]
  • 5. 重新回到第二步,选择一项新的技能
  如何更好的开始第一步呢?下面列出了一些编程目标,我粗略的分了一下类。[B]我会在本文的结尾和你一起讨论下想法。
  编程目标
  学习不同的编程语言范例
  • 用汇编语言写一个应用
  • 用函数式语言写一个应用
  • 用面向对象语言写一个应用
  • 用基于原型的语言写一个应用
  • 用逻辑编程语言写一个应用
  • 用Actor模型写一个应用
  • 用Forth语言写一个应用[C]
  扩宽对我们开发时使用的基本组件的了解:
  • 写一个网络客户端(如HTTP, FTP客户端)
  • 写一个设备驱动程序
  • 写一个B树数据库
  • 改进一个现有的库包,来获得更好的用户体验
  • 写一个提供插件模型的应用或框架
  • 写一个测试框架
  • 写一个程序语言
  更上一层楼:不断的练习,积累
  • 完成五个code katas (Kata是来自日本武术的概念,通过不断的重复和练习来提高技艺)
  • Koan编程来学习一种你想学的语言
  • 参加编程进修课程
  • 阅读SICP,完成所有的练习
  编写程序并开源:
  • 为开源项目贡献力量
  • 让别人接受你的补丁
  • 获得一个重要的开源项目的提交权限
  • 发布一个开源项目
  • 优化一个开源项目的代码,详细记录并分享出来。
  通过教导别人来提高自己[D]
  • 做一个绘声绘色的演讲
  • 在一个本地用户组面前演讲
  • 在一个会议上演讲
  • 开设一个训练课程
  • 发布一个教程
  • 发布一个开源项目的有建设性代码审核
  • 写一本有关编程的书
  关于这些目标
  现在让我们来多说一点。注意这些目标都是可量化的。每一个都有个布尔值:你要么完成了,要么没有。例如,虽然很难界定你是否掌握了一门函数式语言,但是非常容易确定你是否用函数式语言写了一个应用。后者是可观测的,可量化的,布尔值。以上所有的目标都具有这一特性──可量化性。
  无可否认,这个可量化性并非无懈可击。就拿在一个会议上进行演讲来说,你当然可以做一个很烂的演讲,然后还可以拍拍胸脯说你实现了这个目标。不过既然你是我这篇博客的读者,我假设你想成为一个优秀的程序员,你是一个对自身要求很高的人,不会是仅仅完成了某个任务就沾沾自喜的人。
  既然我们在讨论改善,那么你对这份列表有什么改进意见呢?
  这个列表作为GitHub的有效依据,你们可以随意fork并添加更多的成绩。(确保它们是可量化的。)
  或者fork之后,你可以划分出你已经取得的成绩。你还可以为你正在努力的目标做上标记。(可以参考Justin Blake, Pierre Chapuis, Yann Esposito的分支)
  你也可以写评论,什么经验让你变得更为优秀,以及你希望下一步实现什么目标。
  注释
  [A]不得不强调下第四步。想要更出色的实现目标,你必须在你进行下一步之前停下来回想一下,问问自己到底学到了什么。花些时间写下些想法,更好的做法是,和他人分享,与其他完成同样任务的人作个对比,看看你的学习效果。
  [B]在coderwall.com这个网站,你可以更详细了解以目标为驱动的学习方法。
  [C]Forth本身就是一个语言范例。
  [D]我想起Paulo Freire 的一句名言:“传授知识本身就是在学习传授知识的艺术...”
  -------------------------------------------------------------------
  译文出处:伯乐在线- 职场博客 - 程序员
  译文链接:http://www.jobbole.com/entry.php/1420
  原文:Jason Rudolph  翻译:敏捷翻译 - 唐小娟
  如需转载,但请注明原文/译文出处、译文超链接和译者等信息,否则视为侵权,谢谢合作!

附github上的一个分支,增加了一部分成就的内容,居然有“编写一个操作系统,orz”
https://gist.github.com/1134309
Learn a variety of commonly-used programming languages:
  • Write a program in Ruby
  • Write a program in Python
  • Write a program in C
  • Write a program in C++
  • Write a program in Java
  • Write a program in Objective-C
  • Write a program in C#
  • Write a program in PHP 5
  • Write a program in Perl
  • Write a stand-alone program in Javascript
Learn a variety of not commonly-used programming languages:
  • Write a non-trivial program in Brainfuck
  • Write a program in Lua
Learn a variety of frameworks:
  • Write a web application with Rails
  • Write a web application with Django
  • Write a program with .Net
  • Write a program with OpenGL
  • Write a program with DirectX
  • Write a program with Cocoa
Learn a variety of editors/IDEs:
  • Use vim exclusively for a month
  • Use TextMate exclusively for a month
  • Use emacs exclusively for a month
  • Use netbeans exclusively for a month
  • Use Visual Studio exclusively for a month
  • Use XCode exclusively for a month
Learn a variety of programming paradigms:
  • Write a program in assembly language
  • Write an application in a functional language
  • Write an application in an object-oriented language
  • Write an application in a prototype-based language
  • Write an application in a logic programming language
  • Write an application using the Actor model
  • Write an application in Forth
  • Write an application in a concatenative language (e.g. Joy)
  • Write an application in a strict design-by-contract language (e.g. Eiffel)
Get comfortable in multiple operating systems:
  • Use OSX exclusively for development for a month
  • Use Linux exclusively for development for a month
  • Use Windows exclusively for development for a month
Experience the ins and outs of programming in multiple fields:
  • Write a nontrivial web app
  • Write a nontrivial desktop app
  • Write a nontrivial mobile app
  • Write a nontrivial game
  • Write an embedded app
  • Write a realtime system
Enhance my understanding of the building blocks that we use as developers:
  • Write a networking client (e.g., HTTP, FTP)
  • Write a device driver
  • Write a B-tree database
  • Wrap an existing library to provide a better (more pleasant) user experience
  • Write an application or framework that provides a plugin model
  • Write a testing framework
  • Write a programming language
  • Write an operating system
Enlighten myself with koans, katas, and the wisdom of ages:Program in the open:
  • Contribute to an open source project
  • Have a patch accepted
  • Earn commit rights on a significant open source project
  • Publish an open source project
  • Perform a Refactotum of on open source project
Learn by teaching others:
  • Present a lightning talk
  • Present at a local user group
  • Present at a conference
  • Deliver a training course
  • Publish a tutorial
  • Publish a constructive code review of an open source project
  • Write a programming book






博客什么的求人气 http://bimania.org
回复

使用道具 举报

该用户从未签到

44

主题

57

好友

1万

积分

第一章

积分
12824
发表于 2012-7-24 19:58:27 | 显示全部楼层
[img]file:///C:/Users/Aaron/AppData/Local/Temp/Wiz/7eed9c0c-1fc9-4e80-a9be-d297ca68736d_1_files/2011091414171310[1].png[/img]

这个东西是什么…………
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-7-24 20:09:31 | 显示全部楼层
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-7-25 16:10:21 | 显示全部楼层
WZ
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

18

主题

44

好友

1万

积分

第一章

积分
11039
发表于 2012-7-25 19:24:52 | 显示全部楼层
嗯~,一步步的努力!
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-7-25 19:40:40 | 显示全部楼层
暮零天晨 发表于 2012-7-25 19:24
嗯~,一步步的努力!

加油
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

158

主题

79

好友

2万

积分

第一章

积分
22632
发表于 2012-10-13 09:32:46 | 显示全部楼层
。。一步一步来吧,虽然目测我只是出于兴趣。。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

17

好友

9660

积分

序章

积分
9660
发表于 2012-10-16 22:24:51 | 显示全部楼层
计科院的来顶
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

17

好友

4404

积分

懒人

积分
4404
发表于 2012-10-18 11:44:07 | 显示全部楼层
提高能力还是找个公司工作快。真的。其他时候都很稀松。不过时间长了还要换更厉害的公司。老一个呆着也不行。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-10-18 12:10:24 | 显示全部楼层
huyongzs 发表于 2012-10-18 11:44
提高能力还是找个公司工作快。真的。其他时候都很稀松。不过时间长了还要换更厉害的公司。老一个呆着也不行 ...

不过公司是要用到的技术才会去学,相对不自由一些
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

17

好友

4404

积分

懒人

积分
4404
发表于 2012-10-18 12:24:03 | 显示全部楼层
轻舟过 发表于 2012-10-18 12:10
不过公司是要用到的技术才会去学,相对不自由一些

你说的是这样,而且在公司时间长了就不爱自学了。有时间也想歇着。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-10-18 12:27:31 | 显示全部楼层
huyongzs 发表于 2012-10-18 12:24
你说的是这样,而且在公司时间长了就不爱自学了。有时间也想歇着。

嗯,平时太忙了,有休息的时间就好好休息了,不怎么会去看书什么的
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

17

好友

4404

积分

懒人

积分
4404
发表于 2012-10-18 12:29:39 | 显示全部楼层
轻舟过 发表于 2012-10-18 12:27
嗯,平时太忙了,有休息的时间就好好休息了,不怎么会去看书什么的

事实就是不累的时候也想玩。和宅的时候是不一样的。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-7-7 22:05 , Processed in 0.094403 second(s), 24 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表