程序员禅宗之道

2024-03-05 06:48
文章标签 程序员 之道 禅宗

本文主要是介绍程序员禅宗之道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在一个下雨的早上,我坐在桌旁,思考着该怎样高效的工作。在我成为一个自由职业者之前,我工作也非常努力,但是收效甚微。

从2006年开始我开始进行禅修。在一段修行之后我发现:早在百年前,禅宗大师们就已经非常清楚的知道现在的程序员该怎样工作了。 即便我并不是很喜欢“怎样成为一个更好的程序员”这类的文章,我还是想在这里记录下那天早上的想法。一方面作为对自己的提醒, 一方面可以和我的读者分享。如果你对下面这些文字有什么想法,欢迎评论。

  1. 心无旁骛
    如果你决定做某事,就尽你所能做到最好。不要同时开始很多任务。一段时间请只专注在一件事情上。多线程的工作并不会让你更快。 多线程工作只会耗尽你的精力,因为你要不停的在各种事情之间跳转并重新进入状态。这条建议不仅是关于编程工作的,它适用于任何工作。

泽木兴道(Kodo Sawaki)禅师曾说:如果你困了,就去睡觉。不要在你试图睡着的时候还在计划自己的软件,直接睡着就好。如果你要写代码,请专注的写。 写代码的时候别三心二意。如果你真的累了,就别写代码了,直接去睡觉。以多线程工作而闻名的 Stephan Uhrenbacher最近也决定将自己的工作方式变成“一次只专注一件事情”。 我有过类似Stephan的经历并最终做出了一个时间追踪工具——Time & Bill。 设计这个工具的目的很简单,他应该可以帮我控制自己的工作时间,即便是类似打个电话之类的小事儿,他也可以帮我精确计算用在上面的时间。 现在,我每天开始工作的时候,只要按一下鼠标,预先设定好的秒表就开始为我的工作计时了。刚开始的时候,效果可以用惨不忍睹来形容: 我经常在一个任务开始没几分钟的时候又去干另外一件事情了。不过,现在情况好多了。类似番茄工作法,我把时间分成小块, 并在这些时间段里专心干一件事情。不再聊天,不再打盹,不再浏览Appstore上的游戏,不再三心二意。

  1. 心无杂念
    开始写软件之前,你首先要清空内存。这段时间里抛开你脑中其他的想法。如果你还有些其他的麻烦事儿没解决,别让他们干扰你。大多数情况下,麻烦都会解决的。但是如果真的有很严重的事情需要解决,就别开始工作了。试着清除杂念。不过一旦开始工作,别让外界环境干扰你。

邮件列表上蹦出有趣的新话题?请先把他放在一边吧。你总是可以以后再看的。关掉那些可能会用垃圾信息干扰你的东西:Twitter、Facebook和电子邮件。再进一步,你的手机也应该调成静音,藏在口袋里。你可能会觉得:这和第一条不是一样吗?不尽然,因为还有另外一个限制:工作前和吃饭的时候也别碰这些东西。他们会给你带来外界的信息,更有可能是一些新的要解决的问题,这又会分散你的注意力。

试想这样的场景:大多时候,你起床之后脑子都是非常清醒的。如果不是这样,做些体育锻炼会有所助益(我选择了长跑)。如果你觉得自己足够清醒了,那就开始工作吧,尽你所能做到最好。工作结束之后,你就可以让那些杂念重新充满大脑了。不过经过一天辛勤的工作,这些东西已经不那么有趣了。Twitter之类的东西只会消耗你的精力。别想着“我就看一分钟”这种借口,一旦你开始看,那可绝不止一分钟。

你懂的。

  1. 虚怀若谷
    记得自己还是个新手的日子。如果你目前就是初学者,请谨记这个感觉。保持对新知的渴望。每天都要提醒自己还是个新手。以初学者的眼光看待技术。这样你更容易接受对你的作品的改进,更容易推陈出新。要不耻下问,没有你经验丰富的人也可能有你想不到的好点子。

有什么软件是完完全全重制但是还是完全一样的?没有!即便直接copy也会有些许不同的。

  1. 不要自负
    有的程序员最大的问题是他们自己的自负。不过我们可没有时间用来发展自负。我们也没时间来变成一个码农界的摇滚明星。

是谁来评价你是不是个好程序员呢?是你自己吗?不是。是其他人吗?也许吧。你可以比较香蕉和苹果吗?不能。你是一个独立的个人,所以你也无法真的把自己和另外一个人作比较,顶多是在某些方面作比较。

你在某个方面很厉害也没什么好骄傲的。你很熟Java?不错。另外一个哥们儿也许这方面没有你厉害,但是他很会打保龄啊。Java技能比会打保龄球更重要吗?这得视情况而定。也许你可以用Java挣不少钱,但是也许那个哥们儿和他的球友玩得更开心呢。

身为一个Geek这件事儿真的很值得骄傲吗?自负的程序员不再虚心好学。请从周边的所有人身上学习,老鸟和菜鸟同时都有值得你学习的地方。

泽木兴道禅师曾说:你并不重要。

仔细想想这句话。

  1. 无欲则刚
    如果你想着得到什么但是并不关心当下,那你已经输了。在当下把事情做到最好,别想着遥不可及的目标。

苦干20年只为成为公司合伙人?为什么不因为乐趣而努力工作呢?努力工作也是有趣的。禅语曽言:一日不作,一日无食。

没必要20年之后再开始幸福的人生。即便你还不是公司合伙人也没保时捷可开,你也可以活得很快乐。世事变化无常,你可能会生病,可能会被炒,也可能耗尽自己的精力(不过你要是按照这十诫来工作,应该不太可能出现这种情况)。

在上面这些情况真的发生之前,请尽情努力工作到最好并享受这个过程。没必要眼馋别人的高薪和你没得到的新职位。

保持这样,你总会达到一些目标的。你会有一些美好的回忆,也许有个不错的职位——还有辉煌的20年时间,因为对你来说每天都是很棒的一天。

如果你感觉到你现在的工作完全没有任何乐趣,那你应该立即辞职。永远不要在会夺走你的快乐的公司工作。当然,这是在你住在一个富有的国家、你有有选择的前提下。如果你的环境允许,大胆辞职吧。没有遗憾的离开。你可没时间用来浪费,说不定你明天就不在了。

你没有职业目标的时候,选择离开就不再是一件难事。

  1. 慎言
    如果无话可说,就别浪费同事的时间和他们争论。这并不会显得你懦弱。每天你上班应该试着别让他人觉得紧张。试想一下如果大家都能做到这点——这工作环境得变得多和谐?这事儿不是不可能的,努力去做,你会喜欢这种尝试的。

如果你并不是个自负的人,那么多你来说慎言并不是一件难事儿,你可以去关住你真正想说的事情。别把“自负”和“有经验”搞混了,并永远记得你是一个初学者。如果别人的想法很不错,大方的支持他。

  1. 正念 关怀 正知
    是的,你在工作,但是同时你也在呼吸着和活着。即便在你工作最忙的时候你也应该聆听身体发给你的信号。你应该了解对你有益的东西,任何有益的东西,甚至一些很基本的东西,如食物。你应该照看好自己的身体和周围的环境,毕竟你喝的水也来自于自然。因为其实你只为自己活着,你孑然一身来到这个世界,也终将孑然一身离开这个世界。没有你,这个世界一样稳定运转。

逃离你并不喜欢的工作。如果免费工作没有乐趣,并且让你无法休息,那你也应该避免这种情况。放手那些不会让你开心的东西。“免费工作”只是一种理论?想想那些把主要精力都用于开源世界的人们吧。如果你订阅了某些开源项目的邮件列表,想必你已经知道这个世界(有时候)多么热火朝天了吧。如果已经没有乐趣了,就停止做这件事情。我就认识一些在开源项目上工作,但是并不是很喜欢这些事情的人。我用 Time & Bill 计算了一下自己花在开源项目上的时间,结果让我惊讶:我竟然花了这么多时间在这些事情上,尤其是那些我并不是很喜欢的项目上。

秉承这种理念,有些人觉得只要工作时候努力然后晚上能喝着啤酒玩玩xbox就是开心。虽然总的来说这个想法算是不错,但是你生命中的每个时刻不都一定可以是‘有趣’的。如果你可以避免你不喜欢的一些事情,那就尽力避免(如同上面所说)。但是生活中总有些让人不爽的事情。例如手工把经理的excel表格拷贝粘贴到phpmyadmin里去。这活儿旷日持久而且极其无聊,完全没有一丁点儿有趣的成分,不过有时候你就得干这种工作。你不能总因为一个任务无趣就辞职。禅师们可从不羞于自己的工作。他们早上四点起床(有时早点儿,有时晚点儿,各个寺庙不同),然后开始冥想和工作(他们把工作也当成冥想的一部分)。他们也需要打扫厕所,也要在园林里工作,如果他是一名典座,那就要做饭。他们尽心尽力干好自己手中的工作。无论做什么,他们都不觉得是煎熬,而是(或者应该是)开心的。因为工作的每一秒钟,即便是打扫厕所工作中的一秒钟,都是他们生命中一秒钟。

常言道:不要抱怨。如果你的工作就是复制粘贴excel表格,那就干好这件工作。别在这类事上抱怨或者难过浪费自己精力,都会过去的。如果做这个工作,那就成为最好的excel复制粘贴员。

如果你患了心脏病,人们只可能会说:“啊,他工作真卖力,他甚至为我在晚上免费工作。”没人能在另外一个世界给你指路,最后这一段路只能你自己走。你的死换不来这世上的任何一件事,可以说屁都不顶。所以是否照顾好你自己的身体,全由你自己决定。如果你死了那只是死了,如果活着就好好活,没有时间可给你浪费。

“关怀”在禅宗佛教(我觉得应该是在任何佛教宗派中)是一个含义深刻的词。我也无法阐明其中的深意。理解“关怀”的不同含义也绝非一日之功。也许对于你来说,“正知”是一个更好理解的词。你须得意识到你一生中每一秒的所为,如若不然,是为浪费。不过,是否这么做当然还是取决于你自己。

  1. 明哲保身
    是的,你受雇于某人。有人会指挥你干这干那,他也可以把你炒了。但是你不该因此放弃自己的生活或者因此延误你的工作。总之,你的老板并不能真正控制你。即便你甚至怀疑你是不是受自己控制——不过可千万别走上这条不归路。

接着回来谈你的老板:如果你同意,他可以把你的生活毁掉。但其实有路可退。如果你被迫要做什么让你不爽或是违背你的理念的事情,说“不”。然后会发生什么事情呢?最最惨的情况就是你被炒了。那有怎么样呢?如果你是一个住在西方国家的程序员(如果你在读这篇文章,你应该是这种情况),你会找到另一份程序员工作。

我并不是说你应该对“把csv数据拷贝成html”这类工作说“不”。我说的情况是一周工作80小时,以致你的身体无法承受这种高强度而崩溃了;或者你觉得你需要更多的时间陪伴自己的孩子;亦或只是你的老板不待见某人就让你把他炒了;再或者你是一个咨询师然后找到了一个开发核电站或者坦克用的软件的工作(有的人会说这些完全不是问题啊,不过这事儿违背我的道德准则,所以也算是一个例子吧)。这类情况,你可以说“不”。

  1. 转移视线
    程序员不仅仅是程序员。你应该干点儿和计算机一点儿关系没有的事儿。在你精力充沛的时候,不妨驾舟远航、垂钓和潜水。还可以进行冥想,练习武术和吹尺八(一种笛子)。无论做什么,用你(剩余的)全部精力去做好它。如同你对待自己的工作一样,严肃的对待这些爱好。爱好不仅仅是爱好,它也是一种自我表达。如果有人和你说玩物丧志,爱好无足轻重,千万别被他们骗了。现如今,我们可以尝试各种爱好。我录过一些CD,写过一些奇幻小说(未出版,我还得多多练习)。就是这些事情让我成为了今天的我,并最终让我开始了禅修并写下这篇博文。最近我在练习禅宗尺八。它已然是我生活中至关重要的一环了。

  2. 无甚特别
    一朵美丽的花只拥有它的美丽,它并不特殊。你是一个会编程的人,甚至很会编程,但是你也没有什么特殊的。你如同我一样,如同万千大众一样只是这个渺小星球上的渺小一员。

你需要如厕,你需要进食,当然你也需要睡眠。

经历过(希望是)很长一段时间后,你会死去,你所创造的一切也终将消逝。即便金字塔在历史的长河中也会逐渐消逝。那宏伟的金字塔的建造者的名号可曾有人记得?即便你记得,可这重要吗?当然不。金字塔在与不在,没什么特殊的。

你的软件作品也是一样。银行用你写的代码来赚钱,但是你走了以后,没人记得你。这也没什么不对的,这是时间的规律。逝者如斯。你无须担心任何事情。

如果你的公司因为财务问题倒闭了,没什么大不了的。生活还会继续。xbox,汽车或者其他什么也没什么重要的。地球上的大多数人都活在难以置信的贫穷环境里,他们才不在乎什么xbox,对他们来说食物和水才是重要的,而这些他们奢望的东西都是你唾手可得的。

所以…为什么只有你是独一无二的?就因为你有幸生在一个发达国家?因为你会写代码?不,这都没什么特殊的。把你的自负扔到一边去吧,并自由的生活。享受花朵的颜色和香味吧。别因为冬天来了而悲伤,也别因为春天来了而过于开心。自然就是这样运转的。别人批评你的代码的时候也应该宠辱不惊。因为你的公司也没有什么特别的,以致值得让你担心在这里的这份工作。

免责声明
我不是禅师。我只是在进行禅修和学习禅宗。如果你想对禅宗有更深入的了解,请询问你当地的禅师。当然,我也可以尽我所能回答你们的问题,不过,我毕竟还是一个初学者。不管怎样,欢迎评论,如果你喜欢这篇博文,欢迎tweet转发。感谢阅读!

这篇关于程序员禅宗之道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775630

相关文章

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及

黑马程序员---多线程

TraditionalTread 传统线程技术回顾 创建线程的两种方式: thread3中,同时创建了Thread的子类和Runnable,那么会优先执行Thread的子类,因为Runnable的代码被当做参数传到了Thread类里,Thread子类的run方法又覆盖了父类的方法,所以会执行Thread子类的代码。 package cn.itcast.heima;public class T

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理