文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

我在学校那会儿,写代码是我最喜欢的消遣,如今我为了生活而写,虽然依旧很享受,但我却发现很难有当初的那种编程之乐了。我想,“追求编码之乐”与“追求工作中某种有趣的职业发展之乐”是不同的,如果你有时间精力,比如在工作之外开发一个IOS应用,那这篇文章可能不适合你,因为你已经练成了,恭喜你!而那些像我一样,同时手上至少有三个智能手机应用需要开发,让人烦到都不想再碰的人,那么这篇文章你就看对了。

 

第 1 段(可获 1.38 积分)

步骤0:识别问题

我能在个人电脑上数出五个废弃的工程目录,这些目录却差不多已经荒废一年了。我热衷于软件开发,但为何我利用业余时间做开发时却糟透了?

我怀疑这个现象是由一条叫做“可持续的速度”法则所驱动的:我想快乐的编程,然后我创建了个项目。可项目看起来太像是在工作了,而我一周已经工作了40个小时,然后我的项目得到了我所有可用的闲暇时间,最后我发现,当项目变得无聊乏味时我不想再拿出一丁点儿时间了。

可是,我喜欢编程,我想为了快乐编程。如果我的劳动果实不再看起来像是一群由~/projects组成的乌合之众,那就会非常棒,对吧?

第 2 段(可获 1.65 积分)

没错,我误打误撞的找到了一个适合自己的方法,能发现它仅仅是因为我根本没时间花在一个可怜的曾经计划当作宠物来对待的项目上。最后,我在自由时间写程序(注:每周两小时),做这事儿时我感到非常快乐。

do it. do it. do it.

我真的不知道是什么让我这样做。

步骤1:选一个开发语言

等等,啥?颠倒了吧?难道不应该在选工具之前先选个问题么?慢着...这个主意是确保你的乐趣,行动不像你平时工作时表现的那样。我曾试着玩JavaScript,大概过了3分钟,我想,“哦,这个想法能用在我在工作中遇到的其他问题上,很优雅,我应该打开那个文件...”。不,不优雅!把你的世界分开吧!

第 3 段(可获 1.94 积分)

第二个主意是选一门你不熟悉的语言,那么你将成为一个初学者。我发现学习新语言对我的脑子尤其感到提神,让我有种写熟悉语言没有的快乐。

选择一门富有表现力的语言,这门语言支持创新、让人惊叹的交互式解释器,比如Python,、Smalltalk、 Racket或者 Haskell。我尤其喜欢后面两种,选择No Starch Press出版的一本好书会对你的学习有帮助的。

它里面的插图稀奇古怪,但至少会让你觉得你做的是件乐事。

第 4 段(可获 1.26 积分)

步骤2:设定一些目标

你的目标应该和生产力不相关,或者不要有这一次也得负责任的想法。这比你想的难做到,因为当最新的技术和实践给人以大量压力时,人类容易陷入一种“骗子综合症”的症结。唯一相关的指标是时间的开销和乐趣的多少。

我发现,当我试着学习一些我觉得可能在专业上很有用的东西时,我极少可能会沉浸并乐在其中,而我在工作中一整周都在学习有用的专业的东西。我还发现,想学一些有用东西的意图和实际是相悖的,如果我聚焦在娱乐自我,而不是做“有用”或“有生产力”的事,那么我会获益良多,第二天在解决工作难题时会有新鲜的观点。

举个例子,下面是我的目标:

  1. 写完代码后,用心感受快乐
  2. 放掉一切影响第一条发生的阻碍
  3. 每周实际执行一段时间
第 5 段(可获 2.39 积分)

步骤3:选一个项目(或习题)

我喜欢解谜,所以我目前首选的习题是Euler项目,它和编程语言是无关的。我还喜欢Kattis —— 一个编程竞赛网站,它有一个很好的用户界面以及有趣的问题(多数来自ACM竞赛),而且还支持多种编程语言。

另外,Euler项目既简洁又高深,需要大量的思考时间。我试着不去选择那些需要时间进行大量阅读和打字的项目——我已经做够了这些工作。选择“思考型问题”,我就不必盯着屏幕码代码。这很有帮助,举例来说,每当要洗盘子时,或者遛狗时,或者小孩打嗝时,这些都是编程时间!

第 6 段(可获 1.65 积分)

解谜的一个绝佳替代是制作谜题!游戏创作也是非常有趣的,通常你会找一个包含许多东西且开箱即用的开发框架,它能让你集中在创建一个世界或讲述一个故事上,或者用一个独特的方法解决问题。在Greenfoot上面生成一个本地物理引擎更是超有趣的,甚至,你知道,那上面还有专门的开发库。

You, too, can make a crappy game with a homegrown physics engine that only occasionally crashes.

你也可以用本地物理引擎来创作一个80年代的街机游戏《鸵鸟骑士》,这个蹩脚的仿制品偶尔可能会崩溃。专业支招:使用一个排除掉所有商业化想法的知识产权。

第 7 段(可获 1.34 积分)

我也要警告,不能为了一个好的商业想法而选择项目,如果它真的是一个好的商业想法,那想办法怎样把它弄成你的每日工作。如果做不到,那也许它作为商业想法还不够好。

步骤4:收获

好吧,字面上也许不太对,但是讲真——快乐的编程,如果你这样做是为了生活,你应该会欣然把它当作一个创新的出路,或者是实践新想法的途径,同时也不会对真的工作生活带来什么压力。如果你在快乐编程上已经有所成就,感到幸福快乐,请不吝留言!

第 8 段(可获 1.45 积分)

文章评论