月读|软技能——代码之外的生存指南

本月推荐的书是 John Z. Sonmez 写的《软技能——代码之外的生存指南》。本书作者之前是一名程序员,目前更多的是充当程序员的人生导师角色,通过博客、播客、vlog等多种形式介绍自己的软技能,借此希望能推动其他人事业进步,过上更充实的生活。

本书总共分成七大篇:

  • 职业篇,介绍了程序员从公司选择、面试、工作、辞职、创业等职业相关的方方面面内容
  • 自我营销篇,从博客开始,打造自己的个人品牌
  • 学习篇,作者自己领悟的「十步学习法」学习新的知识
  • 生产力篇,自由职业者的自我管理方法
  • 理财篇,探讨收入、投资、债务以及退休等问题
  • 健身篇,下面的图片就是作者本人,和一般的程序员形象有很大的区别
  • 精神篇,心灵、情感等问题探讨

作者博客

从上面的介绍可以看出,这本书基本上把一个程序员可以面对的所有问题,都给囊括了。从形式上来看,这本书像是各种主题的博文合集,有些散乱。总的来说都是关注于「更好地经营生活」。

自我营销

这一个主题是书中我最感兴趣的内容。知识付费的兴起,朋友圈中经常能看到有人分享付费课程的图片,图片中的老师各种头衔酷炫狂霸叼咋天,自我营销的成本真的是已经低到一种程度。万物互联,每一个人都有一次成名的机会。

本书中的自我营销,介绍了一系列的过程,作者推荐个人品牌的建立从博客开始。对于程序员来说,维护一个自建博客是很轻松的事情,而且可以分享的内容也很广泛,工作中的技能学习、遇到的问题分析。将博客当成自己的名片,从而实现让更多的人认识你,认可你。

书中介绍维护一个博客,要从两个方面入手,一是内容质量,二是更新计划。之前,自己的博客都是随心所欲的更新。重新思考一下,给博客增加了几个栏目:

  • 【每周分享】:每周六不定时更新,记录过去一周,我看到值得分享的内容
  • 【月读】:每月不定时更新,推荐本月我阅读的一本书
  • 【数字生活】:我的数字生活实践
  • 【博客公告】:分享与这个博客维护相关的内容

另外一方面,对于我这样的博客来说,最主要的流量来源是搜索引擎,所以花时间进行了一些 SEO 优化。通过在百度搜索和谷歌搜索相关页面提交网站,实现文章更快的收入。除此之外,需要在社交账号中更多的绑定博客,寻求其他的主动点击。

生产力

这个主题,是我大半年以来一直感兴趣的。之前没有注意到,像作者这样的自由职业者更应该是效率大师。其实各种效率方法流程大致相同,更多的是细节的实现。作者在做周计划时,倾向于利用看板来展示任务,这个给我一个新的启示。我考虑过利用 Github + Zenhub 来管理一些大的项目,不过平时没有什么动力打开 Github 网站。

Github Issues

所以,需要一种更加简单地方法。网上查找了一下,发现一个网站 Kanbanist | The Missing Kanban Board for Todoist。Kanbanist 最大的优势是能直接读取 Todoist 的数据,用起来会更加方便吧。不过,如何融合进入日常工作流中,又值得我自己仔细思考一下。

Kanbanist

总结

读这本书,最大的感受是读到很多点的时候,我都打开了电脑进行实践。功利地说,这是一本实用的书,推荐大家有空都来挑选自己感兴趣的内容阅读。


博客折腾记:使用 Travis CI 自动部署

前几天,看到其他人在 V2 上讨论利用 Docker 更新 hexo 博客。不过自己对使用 Docker 不是很感兴趣,倒是了解到 Travis CI 的作用。

参考使用 Travis 自动构建 Hexo 到 GitHub | Zthxxx’s Blog使用travis-ci自动部署Hexo到github和coding - 掘金这两篇文章,完成了博客自动部署的修改,也解决了一些,之前没有在意的问题,写下来备忘一下。

介绍一下与这个博客先关的 git 项目。博客相关的原始文件放在 xiang578/blog,主题文件放在 xiang578/hexo-theme-even: A super concise theme for Hexo(我对这个主题有一些修改,所以自己 fork 了一份,最后发布的文件放在xiang578/xiang578.github.io: Welcome to My blog!(实际上这也是一个备份,访问时的文件是从 coding 服务器上读取的)。

按照上面两篇博文配置好 Travis CI 之后,每次向存放博客原始文件的仓库 push 时,travis-ci.com 都会拉取代码进行 build ,成功之后会出现下图。

之前都是使用 git clone 下载主题的,如果把本机上的博客相关文件直接推送到 github 上会遇到问题。简单地说就是一个 git 文件夹包含了另外一个 git 文件夹。所以,需要使用 git modules 来解决。通过这种方法可以在 clone 主仓库时,会自动clone子仓库。

博客仓库中会链接到其他仓库,其中 @ 之后的那一串就是 commit 编号,主要是用来做版本控制的。

完成这样的设置,修改主题文件后,需要先将修改 push 到主题的仓库,然后在博客文件夹下 push 修改到远端仓库。最终,才能再网页上看到修改效果。


月读 | 数学之美

其实从《数学之美》这书名上看就可以知道,这是一本科普类的图书。这本书收集吴军博士早期发布在谷歌黑板报上解释搜索相关的数学原理的文章。吴军博士之前在谷歌和腾讯都从事搜索相关领域的研究,自然而然的有很多独特见解。除了这本书之外,他还有《浪潮之巅》、《大学之光》等科普图书,也是值得一读。

虽然是科普类读物,但是本书还是有一些阅读门槛的。大二的时候也看过这本书,当时的数理基础不够,囫囵吞枣翻完后。事后大概只记得自然语言处理、马尔科夫链等等的名词。这一段时间正好自己也在做文本搜索相关的工作,所以又从图书馆中借来一读。

本书大概介绍了 Google 整个搜索引擎的基本框架,包括资料获取、分词、索引、排名、分类、相似度计算等知识。这一次读完之后,印象最深刻的是关于从通信模型推导出语言翻译模型的转变。这里和大家分享一下我的简单见解,如果想要更加深入的理解可以阅读《数学之美》的第 5 章 隐含马尔可夫模型。

大二的时候上过《通信原理》这门课,其中讲解如下图所示的简单通信系统。一般包括五个最基础的要输,分别是信源、变换器、信道、反变换器、信宿。从字面上很难理解这些东西是,所以简单的解释一下。通信系统是对通信过程的抽象概括,比如你和其他人发微信时,你就是信源,信息的发送方。变换器的作用是编码,计算机只能处理 0 和 1,所以需要将你的消息通过一定的方法(协议)转化成为由 0 和 1 组成的序列。之后的信道指的是信息发送的通道,可以理解为发送微信时需要有网。反变换器顾名思义作用和变换器相反,从一个二进制序列还原成和你聊天的人(信宿,和你聊天的人)可以理解的消息。

当时学到这里的时候,没有去发散思维,思考这个模型在其他领域的应用。《数学之美》书中,讲到统计语言模型时,将它衍生到机器翻译的过程中。在日常生活中,我们和其他人交流的时,一般是在脑子中有一个想法(信源),然后在说出来(编码),声音在空气中传播(信道),最后被另外的人(信宿)听到,并且在脑子中思考理解(解码)做出相应的回应。对于翻译问题,可能我说出来的是中文,如果听到的是美国人,他需要将你说的转化为英文。所以产生的一个问题是,如何实现将中文与英文对应起来,也就是翻译问题了。为了解决这个问题,科学奖们运用了贝叶斯概率、隐含马尔科夫模型、大数定理等数学知识来处理。

这只是书中的一个简单例子,吴军博士在自然语言处理与搜索领域的经历令人难以望其项背,书中关于这两个领域在近代的发展的小故事比比皆是,作者更是和这些人谈笑风声。所以,我推荐所有对数学有爱好的人,都可以看一下这本书,感受一下数学原理的力量。


利用 GTD 原则完成一次讲座

前几天,在导师的邀请下,给17计算机班的同学们进行了一次分享讲座。内容大概是关于去年在滴滴实习时做的一些工作以及主观意愿下的大学学习建议。作为一个号称实践 GTD 的人,必不可少的要将 GTD 原则使用到这一次分享准备过程中。

自然式计划模式

这样子的一次活动,正好符合 GTD 中关于项目的定义。《搞定1》第 3 章中提到了「控制项目:纵向管理项目的5个阶段」。现在结合五个阶段,来复盘一下我准备讲座的过程。

1. 定义目标和原则

你为什么做这件事?
做这件事的真正目的或动机是什么?
做到什么程度才算是成功?
你的目标是否足够清晰明确?
什么样的行为可能会损害我正在进行的工作?
我怎样才能防止这类情况的发生?

我决定做这一次分享时,主要有下面的4方面原因。

第一,整理。每一次分享都是一次自己我反思。所以我需要整理一下之前在滴滴工作时留下的资料,以及梳理前几年的学习感悟。
第二,演讲。说句实话,我的演讲的能力很弱。体现在,口齿不清楚、演讲时语速太快和听众没有交流。众所周知,演讲能力是现代社会必不可少的一项能力。提升演讲的关键在于实践,所以给其他人讲解我熟悉的内容正是一次绝好的机会。
第三,回馈。虽然私下里和其他人骂过很多学校和学院的规章制度之类,但也不能忽视学校所提供给我的成长机会和空间。之前书记也在一次党会上说过,我们很多党员的材料中,只有那一年考了多少名,又获得什么奖这些的,没有和群众交流。
第四,参考。作为一个软弱的人,我很少会去谈给其他人有什么影响,也不会整天去批评这个那个,只希望自己的经历给其他人一个参考。所以,我很喜欢学院里面搞的《榜样的力量》栏目。通过这些,可以了解到学长学姐有多么努力,获得了什么样的成就。事实是,我们这样的普通学校中,很多优秀的人都已经模板化了,集中在绩点多少高,获得过什么奖学金,当过什么部门的什么而已。真正的大学教育,应该培养的学生达到「千人千样」。

2. 展望结果

成功是一番什么景象?听上去会怎样?有什么感觉?专注!创造出清晰可见的结果。只做积极性思考,不考虑不利因

对于我个人来说,这一次分享是一次宝贵的锻炼机会。是实践 GTD 原则,是完成一次公众演讲,也是完成一次和学弟学妹的交流。不过,由于个人经历的限制,我所分享的东西,终将是少数同学所感兴趣的,只希望这部分人听到我的一些观点,未来的学习会有那么一点点不同。也许多年之后,互联网上有一段文字记录,提起那个晚上我所讲的观点。

3. 头脑风暴/集思广益

在这张的纸的反面的正中央写上项目名称,开始头脑风暴。追求数量,不求质量,不判断,不质疑,不评估,不批判。
不要急于分析组织。1)目的?2)害怕什么?3)我所不知道的?4)有哪些不利因素?

上面写了这么多,终于到了最关键的一步。由于这是一次个人分享,所以也谈不上什么集思广益。不知道现阶段有没有什么头脑风暴的工具,我直接掏出几张草稿纸就开始搞了。上面的介绍也提到了,头脑风暴的原则,将大脑中的想法排空,为下一步工作做准备。

头脑风暴

4. 组织整理

在完成头脑风暴之后,我开始使用幕布来整理之前想到的想法。上图中蓝色的对勾就是在整理时的记号,标记整理到大纲中的内容。最后导出一张思维导图,到这里为止我就清晰的知道自己要分享的内容。

路径规划那些事大纲

5. 明确下一步的行动方案

目前我是在使用 Emacs 中的 org-mode 管理这些项目。所以,我就将自己要做的事情放到一个文件中。下图是完成这个项目之后的结果,当然也有些行动被我取消了。

组织

回顾

来总结一下这次讲座之后的想法。

从辅助工具上来说,自己的 PPT 水平很差,也就认为不能把时间都放在准备 PPT 上。所以思考过其他一些工具,但都不是很乐观。考虑过两种类型的工具,可以生成 ppt 的软件,比如 Marp(利用 markdown 生成)以及 org-ioslide (利用 org-mode 生成),这两个工具很难实现图文混排。另外,就是幕布的演示模式,使用时需要展开和折叠大纲,有点麻烦,也容易导致出错。最后,还是只能硬着头皮去做了一个简单的 ppt 。

幕布演示模式

从演讲效果来说,内容是很丰富的,但是我的演讲能力很差,之前在上面提到的问题,都暴露无疑,还是需要加强锻炼。也由于时间上的一些原因,我的准备不够充分,试讲次数也太少了,导致节奏控制也不好。还要对浪费17计算班同学的时间,表示一些歉意。

点击查看我使用的ppt,文字形式的分享等我有空再来整理吧。

参考


采访一则

前一整子学院内有关部门对我进行的采访,正好放在这里记录一下。【】这个内部是我现在补充的内容。

Q1:在大学学习的这几年里,可有一事令你感触颇深,对你影响巨大?能否与大家分享一下?

【没有回答,现在很难被一件事情所影响】

Q2:很少有人在人生的道路上总是一帆风顺,你可曾遇到过难以解决的挫折?你是怎样克服它的?

【没有回答,向前看,不回头】

Q3:学长一直以来都是成绩优异,然而大学生活必定不能只有学习,学长是如何合理安排自己的时间的呢?

最简单的方法是善于利用日历软件。每学期将自己的课表以及固定时间要做的事情(比如每周二、四下午都要训练)输入到软件里面,作为已经分配的时间。每周、每天将必须要完成的任务找到一个截止日期前的时间块填入。复杂一点可以去尝试学习 GTD。
【比起和安排时间,更重要的是控制欲望】

Q4:作为信工学子,大家都知道你的代码十分厉害,能否跟学弟学妹透露一下学习的妙招?

平时多写算法题目或者是多做项目。刚开始可以从书籍、博文、mooc等渠道找到自己喜欢的内容模仿,然后自己在这个基础上尝试添加的代码。
【上一篇博文中有过类似的感叹,其实我的基础也很不扎实】

Q5:学长曾经参加过许多国家级乃至国际的竞赛,初次参加大型竞赛时可会紧张?你是如何克服这些心态上的问题的呢?

一般来说,编程比赛时间比较长,相对来说是比较自由的。紧张时可以尝试先趴着睡一觉,然后等到心情平复之后,再发挥出自己的正常水平就好了。不要有太多成绩上的压力或者是幻想。
【刚开始以为自己参加比赛能有奇迹发生,后来开始期待队友能 Carry。最后发现只能做自己,顺其自然。】

Q6:学长刚毕业就接到滴滴出行的offer,令人羡慕不已,每个人都想变得优秀,学长可不可以分享一下努力的过程?

凡事预则立不预则废。 很多时候,我们想要做的事情都是有前人做过的,所以可以从网上收集大量的资料。对于找工作来说,很多人会在博客或者论坛上分享面经,通过收集这些,看一下企业一般会考察本科生哪些方面知识,以及什么样的经历会给自己加分。然后朝着这些方向去努力。
【这些话是我自己经历找工作痛苦之后,才总结出来。人生就是一张信息战。】

Q7:图书馆是许多同学经常待的地方,你最喜欢哪一类的书籍?对哪本书印象最为深刻?

好像没有特别喜欢的一类书,大概什么类型的书都看,一般是了解到某一本感兴趣的书,就会去图书馆找一下。另外,我大部分时候去图书馆都是看报纸和杂志。
这么多时间下来,看完之后收获最大的书是《搞定I:无压工作的艺术》。这本书是 GTD( Getting things done) 的入门读物,主要介绍了一套个人任务管理的方法。如果你感觉生活杂乱无章,可以尝试学习这套方法来规划生活。
【不知道为什么,我一直想给身边的人推广 GTD 的原则。】

Q8:在学习与代码之余,你有什么十分热爱的东西,并为它坚持不懈吗?能否与大家分享一二?

写日记。这个爱好从高中开始,最初是写在笔记本上,由于不会搞手账之类的东西,日记的形式很单调。后来受到《晨间日记的奇迹》启发,开始使用为知笔记来记日记,可以同时记录今天拍摄的照片或者是视频。另外,每个日期开一篇笔记,每年都在同一篇笔记上更新,可以手动实现去年今日功能。
【记日记可以发现自己吧】

Q9:每个人都拥有属于自己的生活习惯,学长有哪些良好的生活习惯能与学弟学妹分享一下吗?

充分挖掘手机或者电脑的功能来体验数字化生活。推荐一些我自己使用的软件给大家吧。
个人任务管理:OmniFocus
笔记软件:Evernote、Wiznote
时间记录:Toggl、Forest
记账:MoneyWiz
如果想要具体了解这些软件如何提高工学学习效率,推荐大家去少数派上找相关文章阅读。
【其实我想说的是一个「数字游民」的概念,通过使用这些优秀的软件,记录自己的成长以及提高自己的效率。】

Q10:最后,请学长给学弟学妹们分享一段寄语,鼓励一下大家吧!

大学时光是短暂的,希望你们能早点找到自己想做的事情,并为之奋斗。

新闻稿的链接
查看更多我的随笔,请点击 ZenTalk


构建之法 第 0 次个人作业

最近重新看邹欣写的构建之法,发现他的第一章课后作业很有意思,所以决定自己也来写一下。有关的作业说明在2017BUAA软工助教 第0次个人作业 - ChildishChange - 博客园中。

结缘计算机

你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
计算机是你喜欢的领域吗?是你擅长的领域吗?
你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?

与大部分人差不多,在高考前我也没有对规划未来。考的也不是很好,没有太多的选择。所幸自认为还是有学习的劲头,想着大学找机会去转专业一波。当时也没有太在意专业的填报,最后机缘巧合来到了财经读计算机。大一下时,确实得到了转专业的机会。在面试时,突然感觉自己对转过去的专业也没有太多的好感,就和面试我的老师说放弃转专业,他们只能口头上鼓励我,男生学计算机也不错。大概就是这样子,就在计算机专业混到了大四。

比起这些博主来说,我没有他们那么强的主观能动性吧,能自觉地了解学习计算机各个领域的知识。而我从除了学校内的课程安排之外,自己了解其他知识都是浅尝而止。从大一开始差不多就点弯了天赋树,基本上课余时间都在写算法题目,参加各种各样的算法竞赛。幸运地拿了一些大大小小的奖,但是这也导致在知识面上和企业认为的计算机专业学生有很大的区别。目前来说,正在通过自己的努力,加强学习基础知识,希望能补齐自己的短板。

记得之前有一句话说,「数学是神造学科,计算机是人造学科」。在三年多的学习中,无时无刻不感受到前人思维的巧妙与严谨。比如 CPU 中的加法器,能通过简单的元器件和门电路搭配实现二进制加法以及进位。另外,计算机专业也能及激发最深处的好奇心。当你查阅相关的文档,实现软件的某些功能时,是否能想起童年某个午后拼成的模型?

在计算机系学习

你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答) (8.26修改)
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)(8.24修改)
科班出身和北大青鸟有什么区别?
速成的培训班和打基础的大学教育还有mooc之间有区别吗?
学线性代数和概率论的时候,你是否有过这样的疑问「我们为什么要学这么多数学,这和我们的计算机有关系吗」,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

对于专业来说,我记得辅导员曾经在年级会议上讲过这样一段话:「有些人和我说,为什么高等数学这么难?这些书都是在大学没有扩招前编的,以你们的成绩当时都可能上不了大学。而且,我们学校搞计算机系,只是发现有很多教计算机基础的老师才开设的。」所以,也可以知道这个专业在学校的尴尬地位。

托尔斯泰说「幸福的家庭总是相似的,不幸的家庭却各有各的不幸」。反而对于计算机专业来说,感觉「普通学校的问题总是相似的,强势学校的优点却各有不同」。蒋宇东在梦断计院 为梦前行中写道他自己的学校计院有三大问题:1.学生基础薄弱 2.学风不正,溃散成性 3. 实践环节薄弱,人才位置错放。之前,我也一直在想一件事情:是老师水平太差学生懒得学还是学生水平太差还是老师懒得教?看到上面的三个问题才明白,冰冻三尺非一日之寒,事物发展都是相辅相成的。学生大部分都是过来享受大学美好生活的,对于有挑战的专业基础课比如编译原理、离散数学等都会用脚投票让他离开课程表。有幸能勉强开下去的课程,也会被改成能突击几天通过的样子。

记得大二导师前往台湾进修前找我谈过一次话。他希望我能自己养成一些良好的学习习惯,多去钻研计算机专业知识。并且还说,学院每年毕业的学生中,没有超过十个学生明白计算机是怎么一回事?三年多的时间里,我也接触过网上的一些 Mooc,不过差不多完全听完的只有浙江大学陈越教授的数据结构和吴恩达教授的机器学习。能坚持学习完这两门课,背后都是兴趣使然。数据结构是 ACM 比赛中很重要的一个知识点,当时自己学校还没有开设这门课,而且看书自学也不是很懂,所以就花大半学期的时间在网上去学习。机器学习则是希望未来能从事机器学习相关方面的工作才了解的。

陈越教授放在网上的数据结构课程相对于浙大内部来说,最大的变化是将教学语言从英文变成了中文,而且也适当的删除了部分内容(不是很确定?)。之前也在知乎上看到浙大计算机专业的课程安排,主干课程选用外国原版教材,以及使用英文授课。另外陈老师在讲解相关算法时,只介绍原理和思想。相关的实践需要你课后花时间进行,并且要求提交程序设计平台上进行黑箱测试。对比后来在自己学校开设的数据结构课程中,直接给你展示代码,也不强求你写的代码能正确运行,只要粘贴在实验报告中提交即可。《机器学习》的课程展示了美国教育的特点,每一周的课程都会包含一个小 quiz ,以及在课程中插入适量的编程大作业,学习的困难程度也就可想而知。

这些授课方式的不同,我认为是不同大学对于教育的理解不同。对于浙大之类的重点大学来说,所给予学生的是精英教育,侧重于培养学生的计算机科学基础。而下面的学校更多是大学教育成为通识教育的产物,本应该培养专业型人才,传授计算机技术,却由于种种原因没有这样开展。Mooc 的出现,打破了原有的时间、空间的限制,让我这样的普通学习接触到了国内外顶尖大学的教育资源,有利于教育公平。但失败之处也在于它的灵活性,不得不承认需要很强的自我约束能力才能完整地学习完网上的课程,不知你还记不记得那个当时看得热血沸腾的课程时,被你遗忘在哪个角落了?

最后,我觉得 Mooc 还缺少的同辈压力。吴军博士在《大学之路》中写道「当许多聪明、求知欲强、具有同情心而又目光敏锐的年轻人聚到一起时,即使没有人教,他们也能互相学习。他们互相交流,了解到新的思想和看法、看到新鲜事物并且掌握独到的行为判断力。」这大概就是学什么不重要,重要的是和谁一起学吧。一些 Mooc 虽然提供在线社区交流,但还是没有线下那种碰出火花的感觉。

对比完这些,计算机专业学生的另外一个主题不可能忽视——“自学”。最开始的作业说明给出的很多参考博文也说明了这一点。我印象最深的一个方法是徐宥在掉进读书的兔子洞中写道的「一字不漏敲入一本书的程序成了我推荐别人学习语言的最好办法」。古语读书百遍其义自见,计算机是一门实践的学科,只有在实践中才会学习到技术的本义。目前,自己在看《机器学习实战》时(相关代码和读书笔记见参考链接5
),也差不多用的是这个方法,将书中提到的机器学习算法一个字符一个字符地敲进编辑器,一次又一次地调试运行直到出现满意的结果。

在这样的学习中,我也可以回答这一部分的最后一个问题,我们为什么要学这么多数学,这和我们的计算机有关系吗?对于机器学习来说,本身是建立在概率论和线性代数的基础上,毕竟解释机器为什么能学习都需要用到霍夫丁不等式等相关知识。数学是一种工具,通过数学能将很多的计算机实践经验理论化,以此得到更好的发展。对比功力性很强的培训机构来说,接受科班教育的结果是有机会受到严格的数理化训练,这也能间接决定你在这个行业从事工作的层次和上限。

未来规划

对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
你对于实现自己的梦想已经做了或者计划做什么样的准备?
你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
实习经验究竟有多重要?是否需要马上开始积累实习经验?

前文也提到了,以我的目前的情况来看,大学中接受的教育和自己所学的技能都是和市场脱节的。所以,前一段时间也很迷茫,自己能做什么。所幸看到之前公司的同事所写的知乎专栏文章「谈“圈外”在校生如何更靠谱的拿到大厂算法/ML实习机会」(不知道为什么被删除了,所以无法提供链接),大意就是可以曲线救国,先就业再择业。

所以,我还是推荐出去实习的。不仅是走出象牙塔,感受一下工业界的需求。更重要的是大一点的企业都会安排专人对实习生进行相应的指导,使其能更快地朝工程师方向发展。

参考

  1. 现代软件工程 第一章 【概论】练习与讨论 - SoftwareTeacher - 博客园
  2. 2017BUAA软工助教 第0次个人作业 - ChildishChange - 博客园
  3. 蒋宇东:梦断计院 为梦前行
  4. 徐宥:掉进读书的兔子洞
  5. xiang578/MachineLearningAction: 《机器学习实战》

使用 TaskPaper 实现 3 Things

这几个月,一直在尝试 GTD 方法。有没有改善生活不知道,反正是软件尝试了一个又一个。前几天,又接触到了一款纯文本任务管理软件——Taskpaper。简单的尝试了一下,发现可以将这款软件结合进入 3 things 体系。

3 Things

看过很多时间管理的方法之后,才明白时间是不可以管理的。一个人独处的时候,明知道有很重要的考试需要准备,但还是会不知不觉地打开手机刷微信。很多时候,需要管理的不是时间,而是欲望。所以,在自我控制力很弱时,时间管理会加重你的疲劳感。

说到底,一个人的精力优先,能做的事情也很少。有一个很有名的原则叫做“二八原则”,套入到这里来就是,我们的生活是由 20% 的关键任务 + 80% 的普通任务组成。在理想的状况下,我们应该将 80% 的时间投入到那些 20% 的重要任务中。如何安排这 20% 的任务时,3 Things 的体系就孕育而生了。3 Things 指的是每天优先挑选出最关键的三件事情,优先处理。这三件事情的选择,需要结合你自身的目前情况、长久目标而决定。对于这个选择,你可以问自己,如果完成了其他事情,没有完成这三件事情,这一天不合格吗?如果完成了这三件事情,而没有完成其他事情,这一天合格吗?

Taskpaper

如同前文所说,Taskpaper 是一款纯文本软件,所以界面非常的简洁。下图右侧就是他的主界面,和大家经常使用的文本编辑器没有太大的区别。软件通过一些语法来实现任务管理,比如 : 实现一个项目,用 - 实现一条任务,再使用 @开头实现标签。软件更强大的地方在于,可以自定义 CSS 文件,所以可以很轻松地将一些标签搞上不同的颜色。

有点遗憾的是,TaskPaper 只用 macOS 版本,其他平台只能通过文本编辑器+插件的方式实现,比如 Sublime Text 中有一个能实现类似功能的插件 aziz/PlainTasks: An opinionated todo-list plugin for Sublime Text editor (version 2 and 3)

系统工作流

其实,能想起来用 Taskpaper 做三件事情,是受到了《18分钟》:如何用18分钟变身效率达人?| 狗熊月读64影响。视频中,大狗熊老师介绍了一个习惯,会每天在文本文档中,列出5项需要完成的任务(对的,比三件事情多出了两项),而且会对事情进行估计,包括四象限中的位置、预计完成时间以及和自己人生的那个目标有关。

四象限法则是时间管理中的一个重要理论,它将我们需要处理的事情分成了下图显示的四类,并且指导在日常生活中应该关注重要但是不紧急的事情,也就是第二象限。

一般的 GUI 任务管理软件,列出事情还算比较方便,但是做评论却没有那么便利。TaskPaper 比起在文本文档中直接写,体现出强大的整合能力。比如,我可以选定 MachineLerninginAction 的标签,可以快速的将我之前安排过的相关任务整合到一起。

所以,每天晚上睡觉前的 10 分钟,我会回顾一下今天完成的事情,并给第二天安排需要做的 3 Things。确保第二天醒来,我可以直接开始做当天的重点。达到从头到尾、逐一处理、不避不拖、一次一事的 GTD 执行境界。

参考

IMG_0233


「只言片语」| 2018/03/07

多年之前阅读《读者》时,最喜欢杂志中的语丝栏目。所以准备向其致敬,收集每周我在阅读中收获的只言片语。

1. 学习

  • “当我在你们这个年纪,有段时间,远离人群,独自思索,我的人生到底应该怎样度过。某日,我偶然去图书馆,听到泰戈尔的演讲,而陪同在泰戈尔身边的人,是当时最出名的学者。那些人站在那里,自信而笃定,那种从容让我十分羡慕,而泰戈尔正在讲对自己的真实有多么重要,那一刻我从思索生命意义的羞耻感中释放出来,原来这些卓越的人物也会花时间思考这些,他们也觉得这些是重要的。”
    • 语出《无问西东》的吴岭澜给学生介绍泰戈尔时。“自信而笃定”,简单五个字,回味无穷。
  • 凡是机器或者人工智能能够代替的能力,就是不值得花时间去训练的能力;凡是不能迁移到其他领域的能力,也是不重要的能力。
    • 机器学习的火热带来思考,如何才能避免自己在未来被替代。
  • 只要你停下来认真思考一下就会明白,投资比特币简直愚蠢至极。这是不安好心的坏人们鼓吹的疯狂泡沫,引诱人们追求不劳而获、一夜暴富的妄梦…… 你知道,黄金之所以具备流通价值,是因为人类根本无法轻易地得到黄金,因此黄金才显得稀有。相信我,人类完全有能力创造出更多的比特币——尽管他们会告诉你由于种种限制无法这么做。千万不要相信这些鬼话,当好处足够多的时候,坏事就会发生。
    • 根据所学为数不多知识判定,比特币之类的数字货币已经成为24小时不断线的赌场

2. 理性

  • 总体来说,给我的感悟就是老罗成长了,做实事才是真正锻炼人的,相比罗振宇哪个挤眉弄眼心高气傲的样子,罗永浩讲起来自己的产品那种娓娓道来朴实坦诚的样子让我能容易喜欢。
    • 语出知乎网友评价罗振宇对罗永浩的专访。记得有一段时间,疯狂地看罗永浩的演讲视频,完全被他的行为所喜迎,记得印象最深的一句是通过干干净净的赚钱,让人相信干干净净的赚钱是可能的。可不知道为什么不喜欢看《罗辑思维》,现在找到答案了。
  • 对熟人宽容大度,对陌生人零容忍。
    • 有另外一种印象:坏人远在天边,好人都近在眼前。
  • 罗辑思维搞了四年,知乎上大家骂了四年。四年中罗辑思维从最初一个靠打赏的小书童,成长为一个创业者,继而成长成一个做平台的知识服务提供商,甚至邀请了一众精英在主流媒体和新媒体上大搞跨年演讲,钱赚得盆满钵满,影响力也是一日千里。而那些罗辑思维的黑粉,四年来又收获了什么?罗胖的一句话,黑粉真的可以好好琢磨琢磨,原话忘了,大概的意思是:我不会再否定一个人,因为否定他,是关闭了我自己观察世界的一扇门。
    • 知乎网友对得到的评价。因为这个,开始接触一些自己之前无名抵触的东西,还是有收获的。
  • 毕业20年之后,去参加一下同学聚会,不是要你去攀比人生成就,也不是要你去利用同学资源,而是看看人生20年长跑之后,决胜千里的东西究竟是什么,输掉人生长跑的东西又是什么?
  • 我想不起来有什么真正的机会是稍纵即逝,追悔莫及的,我想不明白为什么人们非得那么迫不及待,惶惶不可终日。错过了成为 Netscape、Yahoo 的机会,你可以成为 Google ;错过了成为 Google 的机会,你可以成为 Facebook ;错过了成为 Facebook 的机会,你可以成为微信,成为滴滴,成为 ofo。如果区块链真的是一个大机会,它怎么可能会是一个手慢无的机会?况且,有哪个真正的大机会,从一开始就孕育出了空前绝后的大项目?有哪项有前景的伟大技术,不是慢慢成就它的伟大?
    • 区块链或者数字货币火热的反思

3. 欢喜

  • 世界于你而言,无意义无目的,却又充满随心所欲的幻想,但又有谁知,也许就在这闷热令人疲倦的正午,那个陌生人,提着满篮奇妙的货物,路过你的门前,他响亮地叫卖着,你就会从朦胧中惊醒,走出房门,迎接命运的安排。
    • 泰戈尔《爱者之殆》,可能现实中叫醒你的就是你自己。
  • 好看的皮囊是确实好看,有趣的灵魂是自以为有趣。
    • 取“好看的皮囊千篇一律,有趣的灵魂独一无二”之反

4. 番外

  • Timetrack:计时软件,点击图标就能开始计时,配合 URL Scheme 直接跳转到你预设的 App 中。

IMG_0233


解决 OmniFocus 中 Applescrpit 脚本输出文件中文乱码问题

在学习OmniFocus 入门与进阶 - 少数派教程中,了解到了一个 Applescript 脚本 Weekly project report generator(周报生成器)。这个脚本可以将 OmniFocus 中前七天活跃的项目以及完成的动作导出成为一个.md文件。这样子,可以大大减轻周回顾时回忆本周完成任务的压力,也可以将生成的文本粘贴到周报中使用。

但是当我第一次运行这个脚本时,生成的文件中所有的中文字符都变成了问号。

错误

由于,之前没有接触过中文显示为问号的问题。所以,与少数派教程的作者联系,他很快给我回复了一份邮件,并给出两个建议。

回信

按照邮件中的建议,我进行了下面三个尝试。

  1. Sublime Text中安装转化编码方式的插件ConvertToUTF8,最终发现无法识别出生成文件的默认编码。
  2. 使用系统自带的文本编辑打开时,还是显示编码错误。
  3. 利用homebrew安装了enca软件,使用enca -L zh_CN file无法检测出文件的编码方式。

无奈这些方式都没有找出问题的所在,只好打开脚本编辑器,查看这个脚本是怎么写的。

如下图所示,该脚本将需要输出的字符串指定为Unicode text 格式,用 write 将这个字符串写进文本中。

根据之前的编程经验,输出文本一般都能指定编码方式。所以又用 Dash 来查看 AppleScript 中 Write 的相关语法。

最终,找到 as 可以用来指定编码方式,成功解决乱码问题。

IMG_0233


GTD 实践 1 个月心得

不知不觉混到大四,突然感觉有一堆事情把我压的喘不过气来。所以就想学习一种任务管理方法。GTD 正好在这个时候重新进入我的视线中。根据 wikipedia 上的介绍:GTD,全称 Getting Things Done ,中文一般翻译为搞定,是一种行为管理的方法,也是戴维·艾伦写的一本书的书名。GTD 的方法根据一个理念,大脑是用来思考的,好比计算机中的 CPU。所以,我们需要把要做的事情从大脑中移除,放在一个可靠的外部系统中,这就是 GTD 系统。

根据网上的教程,学习 GTD 第一步是阅读戴维·艾伦的书《搞定I:无压力工作的艺术》(读书笔记链接)。这本书,其实我在大一就借来看过,但是由于翻译的实在是太差了,所以没有看完就还回去了。所以这一次重新学习时,我选择从阅读《小强升职记》(读书笔记链接)开始,这一本书通过讲述一个职场新人小强的虚拟故事,介绍了很多任务管理、项目管理、个人心智成长的方法。最后,还阅读前人实践的心得。貌似 GTD 这几年不是很热门,很多文章都很旧了,没有太多的实际意义。我只推荐两个系列文章,第一个是申龙斌的博客园博客搞定GTD - 随笔分类 ,他践行 GTD 五年多的时间,写下很多心得体会,是很不错的参考资料,目前他选择在微信公众号(申龙斌的程序人生)中更新为主。最关键的一点,他也是一名007er。第二个是滴答清单与GTD时间管理知乎专栏,从名字中可以看出这个系列的特点。不要因为你不用滴答清单而错过里面的内容,毕竟 gtd 方法是通用的。

开始打造 gtd 系统之前,还需要挑选一些工具。《搞定》书中是介绍的是利用纸笔和篮子来完成gtd,这是一个不错的方法。但是,结合实际,我没有太多的实体材料,所以选择使用软件。前几年,我也使用过很多任务管理软件,有 2Do、奇妙清单和滴答清单等。考虑到目前使用的组合是 iPhone + MacBook Pro,所以我选择了 OmniFocus 。第一次打开这个软件简直让我头皮发麻,功能很强大,但是需要深度学习才能运用自如。我是跟着这一个教程OmniFocus 入门与进阶 - 少数派,才掌握初步的使用方法。OmniFocus 吸引我的是任务过滤功能,也就是透视。简单来说,通过定义一些规则,来展现你的任务。

介绍 gtd 时,我将结合下面这张图,来讲讲我是怎么做的。一般来说,gtd包括 5 个步骤:收集、厘清、组织、回顾和执行。

(一) 收集
对应图中开始的一步,将材料放入系统的工作篮(inbox)。这里的材料是一个很广泛的概念,可以是你要做的事、想读的一本书或者是要学的技能等等。根据最开始的介绍,成为一个可靠的系统,需要将你所有的材料都放进这个inbox。所以,你在打造系统前,需要找个空闲的时间(书中说是2天)和过去做一个告别,好好的把任务整理出来。

在第一次收集前,我利用幕布把自己的材料来源整理了一下,主要分布在手机和电脑的一些软件中。根据这张大纲的顺序,最后整理完成时大概有300多件。完成这一次整理后,再有要做的任务记录到inbox中,自己定时清空就完成这一步了。

GTD整理思考

(二)厘清

在完成上一步收集后,我们需要开始第一次过滤这些事情。从inbox的顶端开始一件件评估我们收集的事情,对于每一件事情,考虑这件事件需要现阶段去做吗?对于不需要去做的事情,我们需要将他们分成三类:垃圾(没有任何价值,直接抛弃)、将来/也许(以后有机会做,放在一个专门的列表中)、参考资料(需要时再来参考)。

(三)组织

这是GTD中最复杂的一步。我们把需要现阶段去做的事情继续分类:第一类是行动,只需要一步完成的任务,第二类是项目,需要执行多个步骤才能完成的任务。首先是项目,书中提供了一种分析项目的方法:自然项目分析法,通过这个方法可以有效的把项目搞明白。当然,对于我们这样的新手,虽然有了这个强力的武器,但还是不容易一开始就将项目拆解的明明白白。这时候,我们只需要考虑一个问题:下一步行动是什么?比如说,如果你看了我的文章,也想要学习 GTD ,这时候就有了一个项目:学习 GTD。由于你更本不知道这是什么东西,所以无法分析项目,所以只能考虑下一步行动:利用搜索引擎来搜索 GTD 相关的介绍。完成这个行动之后,下一步行动就可能变成去买几本书了。通过这种每次思考一步的方法,来完成大的项目。说完项目,接下来就是动作。这里又诞生了一个很厉害的方法:两分钟原则。如果在组织的时候,这个动作可以在两分钟之内完成,那就直接去完成它,不用下面的步骤,特别声明这里的两分钟指一种很短的时间。对于其他动作,你还要考虑是否可以由其他人完成,如果是直接去委托他人完成。对于有时间限制的事情,比如明天下午开一个会之类的,就要写进日程表来提醒了。如果都不是,那么就放进你的文件夹中,等待后续执行。

(四)回顾

可能有些奇诡,事情还没有执行,怎么就开始回顾了。是的,书中就是这么安排的。这里的回顾是指,看看你做了什么,有什么需要反思的。主要用两种方式,第一种:完成项目之后回顾;第二种:定时回顾,可以是日回顾、周回顾、月回顾以及年回顾。目前,我主要做的是日回顾和周回顾,日回顾主要是简单看一下做了什么,周回顾有专门的检查清单,以及会写回顾记录。

(五)执行

这里就要认识到任务管理的本质是管理任务,而不是帮你完成任务。所以,还是需要你去执行。GTD 提供的只是一种简单的挑选方法。当你没有空闲时,考虑当前的情景(在什么户外还是家中,有手机还是电脑),有多少时间可以用,当前精力(精力旺盛还是昏昏欲睡)以及有没有重要的事情需要做。综合这些情况,找出需要做的事情,然后去做吧。

最后,根据一些人的说法。GTD 执行一年之后,才能算是懂了,上面就是我这个执行一个月的菜鸟的见解。由于时间有限,GTD 的六个层次、三个原则、自然分析法都没有写到。更关键的是,也没有结合 OmniFocus 来写我是具体怎么执行的。总结一下,这一个多月来,我第一次认识到要做的事情居然有这么多,真是时不我待。用原来的方法确实能做很多事情,但是接触 GTD 之后,我开始关注目标制定以及回顾方面的实践。

IMG_0233