禅道程序员的10条原则--转载--为了不忘

简介: 禅道程序员的10条原则 作者: Christian  来源: 伯乐在线  发布时间: 2012-04-23 22:52  阅读: 2802 次  原文链接   全屏阅读  [收藏]     英文原文:The 10 rules of a Zen programmer   在一个阴雨的早上,我坐在桌子旁,开始想如何才能高效的工作。

禅道程序员的10条原则

作者: Christian  来源: 伯乐在线  发布时间: 2012-04-23 22:52  阅读: 2802 次   原文链接    全屏阅读   [收藏]  

  英文原文:The 10 rules of a Zen programmer

  在一个阴雨的早上,我坐在桌子旁,开始想如何才能高效的工作。在我成为一个自由职业者之前,我有很长一段时间都很努力工作,但收效甚微。

  我在 2006 开始接触禅学。我马上意识到:古代的禅宗大师们几百年前早就已经知道现今的程序员应该如何工作。虽然我很讨厌“如何成为一个更好的程序员”之类的文章,但我仍旧想分享一些我的想法。它对我来说起到个提醒的作用,如果你有什么想法,也请留言。

  0. 专注 Focus

  如果你决定开始工作,请尽力的做好它。不要同一时间做几件事情。一次只做一件事情。如果你多线程工作的话,你不一定会更快。多线程会让你精疲力尽,出错,转换任务时消耗更多的时间。这不是仅限于编程,这是个普遍的法则。

  Kodo Sawaki 说过:如果你需要睡觉,去睡吧。当你试图睡觉的时候,不要想着程序,单纯的睡觉。如果你在编程,就专注编程吧,不要做白日梦。如果你很累的话,不能再编程的时候,就睡觉吧。就算是著名的多线程超人 Stephan Uhrenbacher 也决定以后单线程工作。我也有与 Stephan 类似的经历,最后我写了 Time & Bill,一个追踪时间的工具。目的是想只需要点一个键,就能追踪我的时间。结果很糟糕:我经常在一个任务只专注了几分钟就转移到另外一个任务去了。现在我好多了。类似于 Pomodoro technique,我计划了一些工作时段,专注于它们。不聊天,不睡觉,不查看 Appstore 里的新游戏。

  1. 保持清醒 Keep your mind clean

  在编程时,你需要清除你的内存。抛开你脑袋中的其他东西。如果你被其他事情所烦恼,不要让它们影响你。大部分情况下麻烦会自动消失。但如果有很大麻烦的话,你不能遗忘它们,就不要工作。试着清除杂念。当你开始工作的时候,让外部的世界远离你。

  邮件列表中有很激动人心的事情吗?不要管它。你之后还有机会看到这则激动人心的事情的。立即关掉能填满你脑袋的应用吧:关掉 Twitter,Facebook,E-mails。你应该将手机静音,放在口袋里。你也许会说这同第一条,专注,很接近,但还有一条,吃饭的时候或者开始工作之前不要使用那些工具。它们会将你与外部世界联系起来,分散你的注意力。

  想想:大部分时间当你起床的时候你的脑袋是清醒,毫无杂念的。如果不是这样,做些运动也许有帮助(我会长跑)。如果你感到毫无杂念时,去工作吧,你能表现得很好。等你不再工作的时候,这时候你可以让你的脑袋充满杂念了。你将会看到一整天辛勤的工作已经被你抛在脑后了,这是多么棒的体验。Twitter 和 Co 会消耗你大部分的能量。你也许会想:就是一分钟的事情。你错了,其实不止。

  你其实已经意识到了吧。

road wallpaper

  2. 保持初学者的思维 Beginner’s  Mind

  还记得你作为一个新兵时候的日子吧。如果你仍旧还是个新人,就记住这个时候吧。你时刻渴望新知。每天都想象自己是一个新人。试着以一个新人的角度来看那些技术。这样你能更好的接受指正,或者不按常规出牌,开陈出新。也可以从一些新人身上学到许多好的想法。

  3. 抛开自负 No ego

  一些程序员有个大问题:太自我。但我们没有时间来发展自我,我们没有时间成为一个摇滚明星。

  是谁决定要做一个程序员的?你吗?不是,那是其他人?可能吧。你能比较到底是苹果好还是香蕉好么?不能。你是个个体。你也不能将你的方方面面和其他个体作比较。你只能作片面的比较。

  你有某一点很厉害,你也不能骄傲自满。你 Java 很厉害?很酷。另一个人 Java 的确不如你厉害,但他保龄球比你厉害。Java 比打保龄球更重要么?视情况而定。可能你可以依赖 Java 赚更多钱,但那个人也许因为有一些保龄球球友而享受了许多乐趣。

  你可以因为你是个 geek 就沾沾自喜么?太自我的程序员不会虚心向他人学习

  Kodo Sawaki 曾经说过:你没有那么重要。

  想想这句话吧。

  4. 不要想着职业目标 There is no career goal

  如果你想得到什么事物,并且不关心你现在的生活,那么你已经输掉了这个游戏。不要想象你之后将会达到什么职业目标。

  工作 20 年,成为一个股东合作人?为什么不为了兴趣而努力工作呢?努力工作可以非常有趣。禅说,一日不作,一日不食

  我们不需要等到 20 年后才开心。你可以现在就开心,就算你还不是一个股东合作人,你也没有开保时捷。事情会很快就转变的。你会生病,你也可能被炒,你可能自我耗尽(如果你遵循所有的这些规律,我想可能性很低)。

  在所有的这些事情发生以前,尽情的努力工作吧,快乐的工作。不要仅仅盯着学校里的成就,不要想着你没有得到的一个职位。

  毕竟你终究会达到某个位置。你会有一些珍贵的记忆,也许还会有一个不错的职位,业绩辉煌的 20 年。每一天都是很棒的一天。

  如果你觉得在你现在的公司工作不开心,立即离开吧。不要呆在一个剥夺你快乐的公司工作。当然这仅仅可能在富有的国家里可行,人们可以选择离开。但如果你生活在这么好的环境里,就这么去做吧。不要后悔离开,你没有时间可以浪费,你可能明天就死掉。

  5. 停止争论 Shut up

  如果你没有什么要说的,就不要浪费时间和你同事争吵。这并不是说你懦弱。每天你都要工作,你不需要搞得其他人紧张。想象一下,如果每个人都这么做,那会是多么好的工作环境啊。有时这是不可能的。但尽力尝试这么做吧,你会喜欢的。

  如果你不自负的话,便很容易做到不争吵,而是去关注那些你真正想说的事情。不要将“自我”和经验搞混淆了,记住:你是一个新人。如果其他人有好的想法,就去支持他的想法吧。

  6. 留心\细心\意识  Mindfulness. Care. Awareness

  是的,你在工作。但同时你在呼吸。即使你的工作有困难,你也需要聆听你身体的信号。你应该学习对你身体好的事情,譬如食物。你应该学会照顾好自己,以及留心你所在的环境,毕竟你喝的水将会又流到河里去。因为你仅仅为你自己而活,你独自来到这个世界,也将独自离开。地球没有你照样运转

  不要工作在你不喜欢的环境。不要做不拿报酬的工作,这意味着你不会快乐,你不得不离开你的卧床。远离那些让你不开心的事物。不计回报的工作听起来是天方夜谭吗?想想那些在黄金时间里做开源项目的人。如果你在邮件列表中订阅过一些项目,你可能已经知道这是多么热门的事情。如果你并不感到开心,就不要这么做吧。我知道许多人做开源项目,但是他们并不喜欢。用 Time Bill 我追踪过我为开源项目花费的时间,我浪费了太多的时间,尤其是那些我并不喜欢的项目。

  有些人认为只有当他们有消遣时间的时候,能在晚上有 xbox 玩,有酒喝才会感到开心。虽然有时享乐是非常不错的,但不代表你一辈子的所有时间都是快乐的。如果你能避免你不喜欢的情况,请尽量避免(就像我上面提到的),但有时你不得不面对那些你不想做的事情。譬如手工将经理的 Excel 中的数据复制粘贴到 phpmyadmin 中去。这些可能要花上几天,甚是枯燥。你感到极为无聊,但有时你不得不这么做。你不能因为碰到一个枯燥的任务就随意的辞职。禅宗大师们也不会逃避他们的工作的。他们在 4 点钟起床(有时早些,有时晚些,取决于习俗),开始冥想和工作(他们认为工作也是冥想)。他们会做清扫厕所的工作,或者做园艺,如果是斋饭僧,他们会做饭。他们会全神贯注的工作。不管他们做什么,他们都会全身心的去做,并且感到快乐知足。因为每时每刻,甚至是打扫厕所,对他们来说都是他们的生活

  也就是说:如果你需要复制粘贴 excel,也不要哭诉了。仅仅去做吧。不要浪费你的时间在抱怨上,它们会过去的。试着做个最好的复制粘贴者吧。

  如果你得了心脏病死了,人们也许会说:“哦,他工作太长时间了,他经常为我在深夜里无偿工作。”没有人会指引你去另一个世界,最后一步要我们自己走。你不能转换世界上的任何东西。什么都不行。所以你需要照顾好自己,每时每刻。如果你死了,就死了,如果你活着,就应该好好的活着。没有时间去浪费了。

  在禅学中“心”是个很大的词(在任何一种形式的禅学中都是)。我不可能完全表示清楚它的含义。要明白“心”的不同的含义是很困难的。可能“意识”这个词对你来说更容易懂些。你需要意识到你做的每一件事情。否则你就是在浪费时间。当然你可以这么做,取决于你自己,如果你喜欢这样的话。

  7. 拒绝老板  There is no Boss

  是的,老板付你工资,他告诉你需要做什么,他也可以炒掉你。但没有必要放弃掉你自己的生活,为你的工作而生病。最终你的老板不能控制你了,也许你也失控了 – 请不要走上这条路。

  回到你的老板:如果你允许的话,他可以让你的生活更加糟。但有解决的方法,如果他要你做你感到不开心的事情,或者违背你原则的事情,坚决说不。会发生什么?最坏的情况,他会炒掉你。那又怎样?如果你生活在西方国家,如果你是个程序员(如果你在读这篇文章,那么你极可能是程序员),你会找到另外一份工作。

  我并不是说对类似将 CSV 数据拷贝成 HTML 这样的任务说不。我说的是一个星期工作 80 小时的工作。或者你觉得你的孩子需要更多的关注。或者你被逼要炒掉其他人仅仅因为你老板不喜欢他们。或者你是个顾问,但是需要为一个核电站或是为坦克编写程序(有些人会说为核电公司工作是多么的好啊 – 但这违背我的原则,而且仅是一个例子),你都可以说不。

  8. 有其他爱好  Do something else

  程序员不仅是一个程序员。你应该做一些和电脑无关的事情。在业余时间,你可以去航海、钓鱼、潜水、冥想、军事艺术、玩尺八(Shakuhachi,一种乐器)。不管做什么,用掉你剩下的能量吧,就像你工作的时候那么竭尽全力。兴趣爱好不单是兴趣,它也是你是谁的一种象征。当别人说兴趣不重要时,不要让他得逞。现在我们可以拥有自己的爱好。我录了一些 CD,写了几本科幻书(没有发表过,我需要更多的练习写作)。这些事情都能体验我是什么样的人,最终它们引领我接触到禅学,以及写下这篇博客。最近我在练习尺八。这些都是我日常生活的一部分。

  9. 没有什么东西是不可取代的  There is nothing special

  一朵花很美丽,但它仅仅是一朵漂亮的花朵,没有什么更特别的了。它一点也不稀奇。你是一个会编程的生命体,可能你很棒,但也没有什么稀奇的了。你仅仅和我一样是这个星球上存在的一个生命体而已。

  你要上厕所,你要吃饭,你要睡觉。很久以后(希望如此)你会死去,你所创造的一切将会随之而去。就算是金字塔很久以后也会消失。你知道建造金字塔的人的名字吗?如果你知道,那么这很重要么?不重要。金字塔在或是不在,都没什么特别的。

  同样你写的程序也一样。银行通过你写的软件赚钱。但当你离开之后,没人会记住你。这不是谁的错,这是时间的规律。你不需要担忧。如果你相信这一条规律,你会意识到上一个项目是非常有趣的项目。现在仅仅需要继续,专注的去看其他的什么事情。

  如果你的公司因为财政原因倒闭了,不要担心。生命还会继续。我们不是真的需要一个 xbox,一辆车或是什么其他的。这个世界上大部分人都生活中水生火热中。他们不在乎 xbox,因为他们对于食物和水更加渴望。

  所以,为什么只有你是独一无二的?仅仅因为你很幸运的生活在西方?因为你会编程?不,你没有什么特别的。你应该让你的自我感消失,放松的生活。享受花朵的香气和颜色吧,当冬天来临时不要过于悲伤,春天到来时不要过于高兴。这是自然规律。当别人否认你的程序时也要这么宠辱不惊。因为公司并没有那么重要。

  声明

  我不是一个禅师。我仅仅在学习和练习。如果你认为有什么你需要更深入的了解,请教你当地的禅师。当然我可以试着在这个博客上回答,但我只是个初学者。不管怎样,我很乐意看到你们的评论,如果你喜欢这篇文章,或者用这篇文章的链接发条推,我会很高兴的。谢谢阅读!

  编译:伯乐在线 – 唐小娟

相关文章
|
6月前
|
程序员 测试技术
程序员的“Bug之旅”:为何无法一次性写出完美代码?
程序员在软件开发过程中难以一次性写出完美代码,需要不断修改和调试,即“改Bug”,这是由多个因素共同作用的结果。技术层面的复杂性、管理和流程上的不足以及个人能力和认知的局限性都是导致这一现象的重要原因。然而,这并不意味着无法避免或改进。通过加强需求管理、建立有效的版本控制和测试机制、推动团队知识共享以及鼓励代码审查和自我反思等措施,可以降低改Bug的频率和成本,提高软件开发的效率和质量。辩证地看待这一问题,既要理解其存在的合理性,也要积极寻求改进之道,以实现更好的产品和服务。
56 2
|
6月前
|
关系型数据库 MySQL 项目管理
YYDS,只用几条命令轻松搭建自己的项目管理平台jira
使用Docker快速搭建Jira的指南:首先确保已安装Docker,然后拉取`cptactionhank/atlassian-jira-software:8.1.0`和MySQL镜像。运行Jira和MySQL容器,分别绑定端口并创建jira数据库。访问Jira服务进行设置,包括选择语言、自定义设置、连接数据库、基础配置、设置密钥及管理员信息。通过Docker,便捷地部署和管理Jira,提升团队项目管理效率。
101 4
|
前端开发
前端学习笔记202305学习笔记第二十三天-重构报错解决
前端学习笔记202305学习笔记第二十三天-重构报错解决
46 0
|
JavaScript 前端开发 Java
前端项目里常见的十种报错及其解决办法
前端项目里常见的十种报错及其解决办法
302 0
|
SQL 安全 前端开发
Web安全性测试包括哪些要点?梳理下,总算搞明白了
Web安全性测试包括哪些要点?梳理下,总算搞明白了
425 0
Web安全性测试包括哪些要点?梳理下,总算搞明白了
|
安全 Java 程序员
SCPPO(二十二):读取配置文件---程序猿必不可少的技能
SCPPO(二十二):读取配置文件---程序猿必不可少的技能
|
敏捷开发 架构师 安全
你还记得测试策略么
你还记得测试策略么
94 0
你还记得测试策略么
|
测试技术
初级软件测试面试题怎么找?提供的这两个地方你肯定用得上
最近几年,随着电子产品和互联网的蓬勃发展,各类科技公司如雨后春笋般出现,而软件公司作为科技类公司中的重要组成部分,在这支互联网大军中也占据了重要一席。因而,负责软件问题质检的软件测试岗位也逐渐成了这几年炙手可热的就业岗位之一。
147 0
|
Arthas 监控 Java
看了这篇文章,比同事更快找到bug!
你以为程序员只是闷着头疯狂写bug,写好了发布到服务器就完了? 不,你还要修bug!但在那之前,你还要找bug!
213 0
|
缓存 Java 测试技术
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试
CURD系统怎么做出技术含量--怎样引导面试

相关实验场景

更多