我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
归档 2014 年 5 月

番茄工作法简明教程

鉴于目前介绍番茄工作法的流行书目「番茄工作法图解」中的废话过多,我基于这本书提炼出了番茄工作法的核心内容。

番茄工作法第一原则:一个番茄等于二十五分钟的工作时间。将工作分为以二十五分钟为单位的小块是很有必要的,因为有些工作庞大而复杂,距离完成遥遥无期,比如很多人提前半年开始准备一项考试,但这个目标太遥远了,无法预见,很容易让人失去信心。因此,将工作划分为番茄,就让你有了一个抽象但精确的时间单位,可以衡量你的工作进度。同时,可以让你放下压力,不去想遥远的未来,而是专注于眼前的二十五分钟。每完成一个番茄,对自己而言都是一次激励,这种激励是小而频繁的,会帮助你克服对一项复杂的任务的抗拒,治疗你的拖延症。

番茄工作法的名字来源于厨房的番茄钟,一种用来提醒你在五分钟后吃你的泡面的的发条钟。之所以选择番茄钟,是因为它走起来有「滴滴嗒嗒」的声音,当你养成习惯之后,这种声音会提醒你:你正在「番茄时间」中,要集中注意力不要受外界的打扰。番茄时间过后,你应当适当地休息五分钟,你可以离开座位活动一下,或者倒杯水,刷刷微博。五分钟并不是一个精确的时间,休息是为了释放压力,收集灵感,当你准备好进行下一个番茄的时候,再开始继续工作。番茄具有原子性,即番茄是不可分割的,一旦中途被放下,整个番茄就必须作废,这是因为如果你在工作的时候受到过多的打断,那么说明你不适合在这个时段工作,你应当对自己的工作计划做出调整。

当你在番茄时间中时,你要尽可能避免中断。中断有时候来自于自己,比如自己突然想起来有另一件事需要做,这时应当将想法记到待办事项上,等到下一个番茄再去完成,而不是立刻去做。还有的时候中断来自于外部,比如有人来要求去完成另外一项工作,这时应该尽可能地向对方协商另外一个时间,如果这件事确实必须立刻去做,那就只好将这个番茄作废了。番茄被打断,或者番茄被放弃时,都需要记录下来,以便今后调整自己的工作计划。例如经过一段时间后你发现,自己在番茄时间经常被打断,那么你可能需要适当缩短自己的番茄时间——比如十五分钟。反之,如果番茄时间进行得很有效率,那么可以适当延长一个番茄的时间。

除了正确地完成任务,还需要高效地制定计划,并跟踪和记录计划的执行情况,最后根据统计结果,对工作流程进行调整。每天你应当准备三页纸——待办事项(Todo List),今日计划(Pin),执行情况(番茄记录). 「待办事项」是所有你需要做的事情,可能有短期的任务,也有长期的任务,可以起到一个备忘录的作用,这张纸可以使用很多天,每完成一项就从上面划掉一项。「今日计划」是每天早上,从待办事项中抽取出需要今天完成的任务,列在上面,并预估每项任务需要的番茄数量。今日计划就相当于给了自己一个承诺:我今天需要完成这些工作。每当从待办事项里划掉一个条目时,会给自己一个积极的反馈,让自己更有干劲。

每天尽可能地完成计划上的任务,当晚上收工的时候,要统计那些任务没完成,并记到第二天的计划里。「执行情况」是一天中完成番茄的记录,需要记录每一项任务实际花费了多少个番茄,中途被打断了多少次。通过这些记录,在日后你可以较为精确地统计哪些任务上花费了更多的时间,自己对哪些任务的番茄数量预估不准确,根据这些信息,你可以不断改进自己的工作流程,找到最适合你的工作方式。

为什么我总是在黑「黑客」

和一些人从「黑客技术」入门计算机不同,我似乎从一开始就对所谓黑客技术没有什么兴趣。一开始当我刚刚听说黑客这个词的时候,因为大多数人对黑客精神的崇拜,我也对黑客这个称呼心存敬畏,但当我掌握了更多的知识,接触了更多的人和事之后,越发觉得黑客技术并不高端,黑客也不值得敬畏。在最近两年,黑客被洗白成了「白帽子」,入侵被洗白成了「信息安全」,一开始我觉得这似乎还是个好现象,但后来我觉得这其实也不见得有多少正面意义。

无论在哪里,只要提到黑客这个词,总有一批人跳出来为黑客洗白,而且会把黑客洗成「黑帽子」,「白帽子」,「骇客」,「红客」或者其他各种颜色。我觉得这样挺无趣的,有太多的词已经不是它本来的含义了,而且黑客这个词很模糊,总是被用来制造神秘感。如果是为了显示自己的专业性,介绍自己的职业,不如换成交互设计,桌面编程,代码审计,数据库运维等更具体的词。

我总是在吐槽某某知名 Web 安全界人士的编程水平不过关,当然,他们也确实不过关。会写代码是最低的标准,代码应当首先是写给人看的,顺便能在机器上运行。无论多么短小的程序,都应当考虑可读性和可维护性,并应用各种用于避免错误的技巧。对于如何提高可读性,如何避免错误,不同的人可能会有不同的观点,但是作为代码的作者,在写代码的时候至少应当考虑过这些问题。我认为绝大部分信息安全相关的工作,都需要首先是一名程序员,有过构建真正应用的经验才行。

我有这样的观点是因为我在思考一个问题,「信息安全」的最终目的是什么呢?我认为目的是为了减少程序的漏洞,但是现在业界的普遍目标是「发现更多的漏洞」。的确,发现漏洞是减少漏洞的前提,但是现在业界对于「发现漏洞」的热情实在太高了,以至于忘记了真正的目的。

比如说前一阵的 Heartbleed 事件,首先发现这个漏洞的人值得喝彩。但是随后几天,就开始有很多人在乌云网上提交各种网站没有更新 OpenSSL 的问题。在这些人看来,发现漏洞就是自己的目标,但他们从未想过如何能够减少漏洞。

我认为减少漏洞的途径应当是培养更多具有安全意识,能够写出高质量代码的程序员,专职的信息安全专家当然也要有,但至少他们应当曾经是一个「具有安全意识的程序员」。以我自己举例,我算是一个不太主流的程序员,除了写代码之外,我还花了更多时间学习新的技术,和新的知识——虽然这些知识可能我永远也不会在工作中用到。我虽然从未专门学习过有关「信息安全」的技术,但是因为我一直在研究如何编写更安全的代码,所以我对「信息安全」也算是触类旁通,甚至发现漏洞的水平也在一些人(通常被经常给黑客洗白的人称为「脚本小子」)之上。

很多没有学习过编程,而是首先开始学习信息安全的初学者,思维都很僵化。举个简单的例子,他们很难认识到「XSS」和「SQL Injection」其实是同一类攻击手法——注入 HTML 和注入 SQL. 也很难区分加密(Encryption), 编码(Encode)和散列(Hash)——因为它们似乎都是在把一个可读的字符串「加密」成一个不可读的字符串。所谓 SQL 注入不过是 SQL 的一个特例而已,如果你没有用过 SQL, 而直接学习如何注入,那你恐怕得一直按照「大牛」们总结的注入方法来实施,很难自己发现新的攻击方式,这就是我所说的,编码是 Web 安全的基础。

比如现在有些 Web 安全方面的书,在繁复地罗列一些很相似的攻击手法,并未抽象出其中的联系和规律,使读者只能照着做,而很难有所启发。更不要说这些书将安全与编码完全割裂了开来,并传达「代码只是工具,会写就行了」的思想。这样的书却被一些人奉为神作,这又印证了我之前的观点:太多人在以发现漏洞为目标,而不是减少漏洞。

最后,我的观点就是认为,直到目前,至少国内的「信息安全」的行业还处于一个非常原始的状态。当然,没有事情是完美的,我也期待这个行业能够迅速地成长起来。

1

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2023-12-20.