Tuesday, March 27, 2007

设计你的学习

在软件开发中,最基础的两个活动是
1、交流,2、学习
作为一个软件开发者,我们一直在学习,所学习的不仅仅是新的技术,还包括问题的领域,用户和客户的种种“怪癖”,甚至是不断进化的系统的特性。需要我们学习的有很多,它们的来源不尽相同。然而即便是我们职业中如此重要的方面,我们仍然倾向于完全忽略它们,即便是那些我们需要学习的传统的东西,比如说新技术,我们也倾向于偶尔地学学,最后一秒钟学,有时候甚至是以后再学。锻炼你的大脑,take learning into your own hands。这么做将我们的技术和职业受益匪浅。

不管我们是开发者、测试者还是经理,为了最终的成功,我们需要在自身的学习中提升自己并充当一个更积极的角色。

当需要学习的时候,不同技术水平的人们有不同的需求。初学者需要明确的、无背景的规则、全面而不含糊的参考。更有经验的实践者不能通过规则学习,他们必须在更大的环境中在更全局的视野下学习。

另外,人们有不同的学习风格,一些人倾向于阅读,另一些人喜欢听讲座,另一些人则通过不断的实验和把玩学习。首先,在我们开始学习之前,还有一点小事情要做,那就是确定你要学什么。

创建一个计划

为了特意地专注于你自己的学习,请开始扪心自问以下三个有益无害的问题:

1、你需要学什么?
2、你怎么去学它?
3、你怎么才能知道你已经完成学习了?

让我们走近每一个问题:

你需要学什么?

这个问题往往比它第一次出现的时候显得更难回答,如果你处在这样一个项目组,正在往另一种语言和环境迁移,那么回答很显然。但很多时候,你真正需要学习的东西并不那么明显。

什么是未完成的,什么是不完全的?你真正应当知道的是什么?
在你当前的项目中,在你整个职业生涯中,你的知识结构缺少什么?除了那些显而易见的,比如技术、方法,想想那些并不明显的东西,比如在高负载的情况下,系统需要的特性是什么。列一个清单,抓起一张纸或直接用键盘列一个清单,赶紧。

如何去学?

好了,现在我们有一个清单,对于每一个已经鉴定过的项,你都需要解决如何去学的问题。除非你是个完全的初学者或者你选择的都是新的项,否则的话,对于大多项,你多多少少能有一些经验。取决于你在每一项所拥有经验的多少,你应当以不同的方法着手这些项。

一种尺度解决不了所有的问题。如果你是一个新手,你需要从一个基本的、基于准则的、类似烹饪书风格的指导开始。这类书很可能贯穿不同的技术,帮助你从初学者的角度概况全貌。

而当你有更多的经验后,你需要寻找一些在更大背景下的概述性介绍,比如你精通多门编程语言,一个简单的语法和关键词特性的浏览也许对你来说会很有用。

怎么样才能学得最好?如果通过阅读学习,那么买一些书,如果你需要听讲或参加一些课程,在网上寻找合适的会议、研讨班。总之一点,珍惜任何学习机会。

你怎么知道你已经完成了?

最后,你通过什么方法知道你已经完成了?从实效的角度考虑,当我们完成后,我们需要一些反馈来知晓,在这样的情形下,设立一个简单的学习什么的目标并不够。比如,与说你想学习Ruby不如设立一个具体的目标,用Ruby完成一个基于网络的应用来管理你的个人行动列表。给自己一条时间轴,比如,第一天写一个“hello world”,第一周完成一个带测试用例的程序,在第一个月的月底完成大型的网络应用。

在完成一个里程碑之后,你需要重新评估,并以相同的方法学习你所需要学习的其他东西。学习是一个没有终点的活动,当然,你永远不能说你已经完成了。但如果你能设立一些具体的、可以实现的里程碑,然后实现它们,你将在下一步的行动中占据有力位置,并一直持续下去。

如果用心的学、留心的学,而不是偶尔的学、突击的学,你会学到很多。这样,你的技术和职业之路将越走越宽。

——翻译自Pragmatic Programmer的《Designing Learning

Sunday, March 18, 2007

你自己的需求是什么?

更新:官方中文翻译

“为你自己创建应用!”

一个创建应用的好方法是从解决你自己的问题开始。你将成为目标受众,你会知道什么是重要的而什么又不是。而这些对你开始朝发布一个突破性产品的进发有莫大的帮助。

这里最关键的是要明白你不是独自一个人,如果你正面临这样的问题,那么很有可能成千上万人正和你在同一条船上。而这就是你的市场,是不是很容易?

已经有的应用很有可能要么没有解决我们的需要,要么堆砌了很多我们所不需要的功能,你意识到有更好的解决方案;甚至,相应的应用还没有出现,你意识到这是一块空白。而这些都意味着你的机会来了。

当你努力解决你自己的问题的时候,你创建你自己为之激情澎湃的工具。而激情是最关键的,激情意味着你肯定会真正的使用它在乎它,这也是让其他人从你的应用中感受到激情的最好方法。

——翻译自37singals的《Getting Real
类似的哲学:eat one's own dog food

Saturday, March 17, 2007

关于创新的思考

创新的类型:
  • 商业模式创新
  • 技术创新
  • 产品创新
  • 服务创新
  • 营销创新
  • 组织创新
  • 过程创新
  • 产业链创新
  • 设计创新
  • ……

创新=创意+实现

如何管理创新?
创意的过程是非线性的,但大致可以分为以下几个部分:
  • 产生创意
  • 评估创意
  • 改进、完善、细化、确认创意(加减乘除)
  • 开发、实现创意
  • 应用、验证创意
  • ……

why? goal
what? idea
how? roadmap
who? team
evaluate? milestone

创新失败的原因:
  • 糟糕的目标
  • 糟糕的路线
  • 糟糕的团队
  • ……

推荐阅读:wikipedia的描述:Innovation