1. 你忙得踏实吗?

    所有生活的美学旨在抵抗一个字——忙。忙就是心灵死亡,不要再忙了——你就开始有生活的美学。 这是前不久在豆瓣看到的一句话,咋一看,挺有道理的,然后若有所思其实脑中啥也没想地点点头,在某一次低头之后不再抬起,继续看代码。这句话呢,也许混杂在记忆的角落跟朋友圈的鸡汤放在一起等待被时间风干去了。 直到前些天自察好像经常被手边的几件事催得喘不过气来,在一个卧听风吹雨的夜,躺下开始忧愁何时能自救摆脱这个状态的时候,这句话就又冒了出来。搜肠刮肚想了想带有「忙」和「闲」字的成语,竟然惊惶地发现似乎自小接触到的语言里这两个字其实是自带褒贬的: 「手忙脚乱」当然让人看不出一点生活的美学,「气定神闲」却能让人想起面对千万曹军谈笑自若的诸葛亮;「忙中有失」自然不是什么好事,而「闲庭信步」则可以教人脑补出巅峰时期从容干拔的麦迪…… 细想之下,忙倒也并不可怕,程序员对忙一般是不那么恐惧的,因为猿媛们知道,忙碌程度会随着项目的进度、产品的版本发布而起起伏伏,犹如一根高架电缆,总有夏天的松弛,冬天的紧绷,纵使要在闲暇时默默苦练内功,那时间和计划也在自己掌控之中。 可怕的是不知所谓的忙,这通常是没有明确的目的,却把自己置于一刻不得闲的境地,绵绵无绝期,但又仿佛一停下来,就会落于人后,就会在那消停的一段时间里,丢失了生活的意义。 大学毕业以后,我在制造业待过一年多,刚进车间实习那会儿,几个夜班下来干得手腕都抬不起来……那时候虽然每天下班都在群里跟小伙伴们玩笑说「我又活着回来了」,但其实心里还是踏实的——这样的日子又忙又累,可忙说明产量好,到手的工资自然就高,累有所值;身体的酸痛固然难熬,可看着屏幕上剩下的工作量,把那干完就是一个小的「尽头」,不难等到。 而在开始北漂之后,最该苦逼最该努力最应该活得充实的这几年里,来到北京首当其冲的一点感受就是身边优秀的人总是很多,学历高,聪明,关键的是,也都很勤奋。这应该是身处一线城市的显著特征之一,是压力,也是免费的鸡血——于是我也时时感觉到,应该努力,才能不掉队。 所以我也花了不少时间在学习,在小伙伴们学习的时候,在小伙伴们 Wow 的时候,在挤地铁上下班的路上……我甚至给自己定了一条规则,来鉴别某个时间段我是应该学习还是应该休闲娱乐:有人一起时好好玩,没人一起时好好学——当然貌似一直没有好好执行过,只是用它来说明我确实至少曾经计划过要忙着好好学习天天向上的。时间没有少花,成效却不如想象中的好,时至今日我也并不能特别自信地说我在哪个领域比同一起跑线的小伙伴懂得多多少,掌握得好多少。 究其原因,是有些时候会陷入「不知所谓的忙」之中,它有几个特征: 没有目的性。 比如学习编程语言,今天看到 Python,觉得做数据分析与网络请求好方便,赶紧学一下它的基本语法;明天看到科技新闻上鼓吹函数式编程,于是拿起 Lisp 的入门教程啃几天……最后学会了写多种语言的 Hello World,然而这并没有什么卵用。 相对更好的做法应该是以工作业务所涉及的技术范围为主,以个人兴趣为辅,集中精力往精深了学。能够在一个领域深入钻研是一种能力,基于此种能力上积累的经验能在你需要快速掌握另一门新技术时助你轻车熟路,相较之下即使学会写所有 Lisp 方言的 Hello World 除了也许能成为吹牛的资本,并不能给你以后学习别的东西带来什么实质的帮助。 对于如何在一个领域深耕,可以看一看知乎盐系列之《深度学习的艺术》。 低效。 一整天不专注的工作,比不上一个小时注意力高度集中的产出。因为没有给自己安排专用于娱乐休闲的时间段,长时间低效的学习带来的收益有限,成就感的缺失会造成容易对学习感到疲劳和排斥,注意力更易分散,然后需要更长的时间去完成本该快速完成的学习任务,恶性循环。一个各方面条件都一般的人,如果想要脱颖而出,一个行之有效的途径就是让自己比别人更专注,更能死磕,可如果陷入这种恶性循环之中,专注力怕是要大打折扣。 对此,我们可以利用一些效率工具管理好自己的时间,有免打扰高度集中注意力时间段,有休闲娱乐段,有放空段,玩的时候完全放开,学习工作的时候全身心投入。 当然这可不是想要就能做到的,需要根据一些方法进行一段时间刻意的训练,可以参考戴维.艾伦的《尽管去做:无压工作的艺术》。 扯了这么多,「不知所谓的忙」与「有目的性高效踏实的忙」,也许仅仅一步之遥,视角和理解不同可能就归于不同的阵营了,能够随时自察状态,不断优化迭代,达到自我认可的充实自信的状态,那就是踏实的。 我有一个奢望,希望自己在这浮生忙碌的柴米油盐酱醋茶里,忙得踏实,偶尔能活出闲情逸致的琴棋书画诗酒花来。

    2015/07/23 Blog

  2. 定制 Fiddler 之按设备过滤请求

    需求 在开发/测试过程中有多台设备(PC/手机/模拟器)通过 Fiddler 代理上网时,如何方便地从满屏纷飞的 Session 中筛选出自己关心的那台设备的请求?

    2015/07/08 Fiddler

  3. 为 Vim 添加 Smali 语法高亮和 Taglist 支持

    Smali 相当于 Dalvik 虚拟机的汇编语言,语法可以参考 Dalvik opcodes。 本文介绍的是如何使用 Vim + Ctags + Taglist(或 Tagbar) 来实现如下需求:

    2015/06/23 Vim

  4. Win7 下部署 Discuz!

    需要在开发机上部署 Discuz!,结果在根据官方文档 Discuz! X 系统部署 操作时遇到了一些坑,有些是因为使用的组件版本不一样,有些是官方文档有谬误,所以在此将自己从零开始到部署成功的步骤记录下来,供备忘和参考。

    2015/06/14 PHP

  5. 去看特立独行的猪

    2015 年 6 月 6 日,雷雨降兮,待初霁,去看你,满腿泥泞,天空却如洗。 我此时还远算不得王小波门下走狗,最简单的例证就是墓前总是烟酒不断,而我却只带了一本《沉默的大多数》,还是在 Kindle 里。 我对他的了解其实很有限,书翻过几本,从没读完过;最早知道有这么个人是因为大学有个老师的 QQ 昵称叫「沉默的大多数」;后来在朋友圈里流传他其实是以作家身份为幌子的中国第一代程序员云云,顿时感觉异常亲切了起来。然而这样的交情就要来看看他,要是早些时候,我这样的人在某迅笔下估计也就是一名爱看热闹的围观群众。不过墓主人对此应该是毫不在意的,这个我倒挺有把握。 其实想去看看这个墓的缘起,在于从简书的一篇文章里读到一段话: 年少的我有一个心结,那便是惧怕活得放肆的人,因自己的日子太过苍白。无故事可讲的我,怕被这些过得声色十足的生活家取笑了去。 俨然当年的我。 在三年前,我还跟自己说,「如果那些谨慎并无用处,我愿意旁若无人地活着」。 一年多以前,我还在劝解想变外向的内向朋友们,「心底安静,世界就不令人拘谨」。 如今当然是有了些变化,现在我常说的是「不要在意这些细节」,而对生活家的态度也由惧怕变成了羡慕,还暗自养成了一套方法去涂涂抹抹日子的苍白。脸皮倒是依然有些时候薄得紧,曾经在大学英语课上表演过的窘起来瞬间脸红到耳朵根的技能怕是要伴我更久了。 虽然已经历过这许多变化,回头看看自己走过的路,分明还是特立独行的人的对立版本,循规蹈矩,个性全无,所以特别想去结识一位那样的人物,去探知他心里是否常常洋溢着我想象中的那种幸福。 这时突然想到昌平就住着一位呢,他相信和追求自由与尊严,而且绝不会在你耳边啰嗦,想了解他曾经想过些什么,只需抽空看看他的书,便可知何谓《一只特立独行的猪》。 想贴两张图编得这么辛苦,我猜应该会先被人骂是一只花样作死矫情晚睡的猪。

    2015/06/12 Blog

  6. 黑客马拉松参赛总结

    五月的最后一个周末,和同事一起组队参加了我司举办的首届黑客马拉松大赛,经过几十个小时的奋战,我和队友们一起完成度较高地准备好了演示 Demo、ppt 等,在大家一致看好、觉得在首轮评审表现出色的情况下止步首轮,说不遗憾肯定是假的,想想和小伙伴们为了完成 Demo 的通宵达旦,四个人短时间内提交的上万行代码,三十多个小时不曾睡觉的情况下,听到评审结果宣判的那一刻,倦意趁我的一丝失落情绪铺天盖地地袭来。 时间仍然欢快地往前流淌,我在沉睡十多个小时后也满血复活,过去的就让它过去吧,收拾收拾心情,总结总结经验教训,继续前行。 比赛中有幸被小伙伴们推举为我们小组的 CTO,作为需要在技术方面掌控全局的角色,回想一下自己的表现,算是中规中矩,有亮点,也暴露了很多问题。 先臭屁一下自己的优点: 担负起了技术选择、模块划分、任务分配和接口制定等方面的工作。 认真负责,尽自己的努力试图去掌控开发进度、完成我们的 Demo。 在态度上应该算无可挑剔,对可能影响进度和体验的 Bug 从不轻易放过。 花了一些时间封装了一些使用到的基础类库,让小伙伴们用得舒心,写得放心。 然后说说自己暴露的问题: 模块划分与 UML 表达。 平时工作过程中较多地画一些小流程与逻辑的流程图,但是对整个 APP 的模块划分未涉足过,临时抱了一下佛脚之后做了一个类 MVC 的分层设计,自己感觉并不专业,用于指导开发也并不科学。 对此我倒没什么好找借口的,就是对此的理论基础太薄弱,后续需要大量的充电补全,自己平时做一些东西的过程中也最好将前期的总体设计工作重视起来,多实践。 任务分配。 这一点是否做好取决于上一点,模块划分不合理将会直接导致任务分配出现问题。比如本次的任务安排,早期版本出现了这样的情况: 人员 任务1 任务2 任务3 任务4 成员1 第一阶段 UI 第二阶段 UI 第三阶段 UI 第三阶段 逻辑 成员2 空闲 第一阶段 逻辑 继续 继续 成员3 空闲 空闲 第二阶段逻辑 继续 因为对 UI 的工作量评估不足,觉得由一个人来快速完成就行,但是实际上 UI 开发后来成为了明显的瓶颈,持续了整个开发周期。其它两个人有较长的时间处于等待 UI 出来之后才能开始往工程里接入逻辑的状态,浪费了大量的劳动力。 后来对此进行了一番思考,觉得相对来说这样可能会更好一点: 各人负责一段逻辑流程或者功能模块,顺带简单把对应的界面先搭起来,后来如果需要美化,可以仍然分工给各人,或者由一个相对工作量不那么紧的人统一来调整和美化。 前期做工作分配时需要有意识地提炼出不严格需要前置条件的任务,松耦合的任务,合理分配。比如可以先将任务做成粗细两种粒度的列表,然后理清它们的前置依赖关系,找出适合打包分给同一个人的集合。 对工期的评估结合我的评估和对应的负责人的评估来做。 当然这里头显然大有学问,后续还是要针对性地学习一些相关的知识,有理论支撑做起来才更科学更有底气。 量化的缺失。 在试图掌控进度的过程中,有较长的时间里对剩下多少活只能有个模糊印象,而不能明确地评估剩下百分之多少的工作量,究其原因,就是对工作任务的细分量化不够,若能做到以下两点想必会更好: 将模块细分为可以明确评估工作量的子任务。 定期沟通了解小伙伴的进展,更新任务完成情况列表。 总之,离 CTO 的水平还很遥远啊~骚年需努力!

    2015/06/01 Blog

  7. 领导与员工的艺术

    工作远非简单的完成任务而已,如何成为一名合格的员工?如何成为一名令下属信服的领导?朋友圈里的鸡汤似乎经常试图告诉我答案,但是在这个看见鸡汤文就神烦的年代,还是自己稍作总结来得更靠谱一点。 合格员工 如何成为一名合格的员工? 面对这样一个问题,很多人的答案可能是「干好手上的活呗」,此话固然不错,但是如何干好,相信不同的人心里有不同的原则与好建议。 我的版本是: 不要只是提出问题,带着思考后的方案去。 对自己跟进的任务要随时心里有数,比如当前进度,预计完成时间,关键数据等。 敢于行权。一些在自己能力和职责范围内的事情,主动推动解决,将重要节点和结果向领导汇报即可。 抬高眼光层次,在自己的思考之外,尝试以你的直接领导的眼光来分析和解决问题。 图生存之外,还要谋发展。不能满足于现状,要有过上更好的生活的追求,同时要有居安思危的意识。 称职领导 作为一名长期处于基层的员工,对此当然并无实际经验,下面的内容只是根据自己的「以为」想当然胡绉。 当领导,很重要的两点能力就是看事与看人。 看事,是指能对事情进行比较准确的评估:复杂程度、需要的资源、合适的处理人选等;看人,是指对下属解决该问题的能力的把握。 在我心目中称职领导的版本: 有与职级相匹配的看事与看人的能力。 对外,要护犊子,事后再内部总结。 要懂得信任与放权。不用事必亲躬,找合适的人去做合适的事,把握一些重要节点和最终结果就行。 良好的期望管理。对下属的升职加薪等等诉求心里要有个预期,不纵容不合理的要求,但是对应该帮忙争取的利益决不犹豫。 一些细节: 公司内部的评优与奖励名额努力替团队成员争取。 公司内部的活动带领团队积极参与。 最后 啊哈,以上纯属瞎扯,有无异议,都欢迎探讨。

    2015/05/28 Blog

  8. TortoiseSVN 从 GitHub 更新时发生异常

    问题描述 使用 TortoiseSVN 从 GitHub 仓库 Update 时,弹出错误提示对话框: ```

    2015/05/27 SVN