2014总结以及2015展望

今天死猫猫在群里说,出来写总结了。

== 群内发言 ==
v:
今年的总结就是混过去了
年末的目标就是换个工作

repeat:
今年的总结是『居然连续三年一事无成』

repeat:
今年的总结是『居然连续十年一事无成』
== ==

2014又接近尾声了。

总体还算不错吧
当爸爸了,看着小家伙一天一天长大也是件开心的事情;
同时也是多了一份责任,希望家人一切安康。

工作暂时应该不会变动了,希望能够做长久一些,把握好机会。
工作上的定位稍有变化,从更多的跟机器打交道变成跟人打交道多一些,前期有些不适应,但是要拥抱变化,做到更好。

整个世界都在移动化,传统的互联网略颓,今年也花了一些时间来深入移动互联网,但是还没有什么成果。

经济方面比往年都要好,算是努力工作的回报。今年买的两个比较划算的东西就是一台Mac和一辆Honda Jade(上的沪牌,感谢旋律和晓爷帮忙代拍牌),Mac的轻巧和电池续航可以让我每天把电脑轻松带来带去;每天开车上下班,通勤时间从之前的1个小时变为20分钟,这个投入非常划算。

技术方面除了拓展了一些眼界之外感觉没有多大的进步,这个需要自省。

跟朋友们的沟通也少了些,主要周末的时间都会陪老板娘和小朋友。

基本上先这么多吧,想到其他的再补充。2014过去了,我想说,我很怀念它。

== ==

2015年展望
希望小家伙健康健康成长

老板娘会离开工作陪伴小朋友,小朋友的健康成长总是第一位的。

规划中的H、M、C三件事情有所发展,希望年底有个更好的成果

在移动互联网相关能够有所产出,不论是掌握技能还是能做出几款app。

经济上收入比2014年增加至少50%。

另外要花点时间跟朋友们走动走动。

工作方面提升自己的能力,能够很好的担任目前的角色,同时提高工作效率。

希望拖延症能够比较显著的改善。

基本上先这些,想到再补充。。

余晟:我所理解的技术领导力

FROM:http://www.luanxiang.org/blog/archives/1783.html

一晃六年,《技术领导之路》要再版重印了。回想刚刚开始翻译这本书时,我还忙碌在程序开发的一线,对领导技术团队并没有太多经验;如今,也能差强人意地带领技术团队支撑年销售额数亿的业务。一路走来跌跌撞撞,所幸没有中途倒下。思考其中的原因,除去运气,除去身边同事朋友的支持,翻译《技术领导之路》也是不容忽视的因素。

很多人都知道,“职场童年”非常重要,一个人最初工作的几年,在什么样的环境里,得到过什么样的锻炼,很可能决定了他整个职业生涯的走向。同样的道理,“领导力童年”也很重要,一个人对领导力的最初接触和认知,也会深深影响他对于“领导”和“领导力”的观点,甚至领导作风。所以,在我还忙于一线开发的时候,通过翻译《技术领导之路》,“生吞活剥”了一整套关于领导力的学说,基本“塑造”了我关于领导力的认知,深深影响了我作为技术领导的管理风格和价值取向,因此也对很多问题有了自己的判断——前段时间和另一位掌管公司技术的朋友聊天,说起那种“执行力超至上”的领导风格,我们都认为,尽管或许能出结果,但不是好的领导风格。

怎样成为好的技术领导?《技术领导之路》的作者温伯格给出了一系列的答案。以技术人员的身份,我觉得最受用的几点是:通过写日记来加深自我认识,评估自己的能力应该用乘法而不是加法,从哪里寻找改进所需要的时间。

在生活中,我们大多会有一些自己的习惯和坚持,却习焉不察,没有去想过它们是否有道理。然而,如果需要不断改进自己,就必然需要不断观察和审视关于自己的一切,包括习焉不察的坚持。对此,温伯格给出的建议是,每天抽一点时间来写日记,不需要抒情,不需要感慨,忠实记录自己就好。开始我对此也有些怀疑,觉得写日记不过是小朋友过家家。但真正坚持之后才发现收获很大。因为静下心来写日记让我发现,在生活里,自己真正在乎什么,而不在乎什么。有一些东西我很在乎,但成长经历不同的人并不在乎,所以其他人并不是有意冒犯。还有一些东西我不在乎,却是某个人群特别在意的,考虑到其他人的感受,以后还是多加小心为好。

评估自己的能力“用乘法而不是加法”,可能初看起来不太容易理解,但也很好懂。人的能力通常是参差不齐的,有长处就必然有短处。要想成为好的技术人员,技术是不能“一俊遮百丑”的。以1分为满分,如果你的技术有0.8分,表达能力只有0.1分,总分可能不是(0.8+0.1)/2=0.5分,而是0.8*0.1=0.08分。如果给你时间把自己的技能提升0.1分,用来提高技术水平,总分可以到0.09,而用来提高表达能力,则可以达到0.16。哪种选择对个人更有利,其实是一目了然的。不幸的是,大家通常在潜意识里更愿意遮挡自己的短处,更习惯于训练提高自己的长处。程序员更是如此,面对非技术问题,他们往往更希望从技术方面解决。仅仅是因为他们更“喜欢”从这方面入手,而没有考虑这样做是否真的有效率。想要成为优秀的技术人员,一定需要能克服情感的抵触,注重补齐短板。

我在抓虾网(早年一个很流行的在线RSS阅读网站)工作时曾有过深刻的体验。有一次我们的抓取调度出了问题,抓取新浪博客过于频繁,被新浪封锁了服务器的IP。当时大家想出的办法就是找一大堆代理服务器,通过代理来抓取。从技术人员的角度出发,这种思路是自然而然的。我当时觉得还有更好的解法。于是我尝试给新浪打电话说明情况,一下午的时间打了超过二十个电话,终于找到了决定封锁IP的人。我向他说明情况,并说明我们已经修正了程序避免出现这种情况,他验证之后便解除了封锁。有了这段经历,不管是关于纯技术问题还是业务问题,我的思路都开阔了很多,也深刻明白了单纯靠技术是不能“一俊遮百丑”的。

关于改变自己所需要的时间,温伯格的一句话让我印象很深,“如果你想做某件事情却一直找不到时间,那多半是你其实不想做”。想要改变,尤其是自我改变,通常不会像上级布置的任务那样,有明确的压力和期限,所以改变也停留在“想”而已。网络上经常可以看到类似的问题:道理我都懂,但就是行动不起来。所以很多人在纠结,希望有什么办法提高行动力。但是在我看来,要解决这个问题,第一步是承认自己其实不想实践这些道理。

如果确认自己想去做这件事情,由苦于找不到时间,温伯格给了三个建议:第一,对已经分配的任务,不要反复纠结;第二,对实现过程中的细节,不要反复纠结;第三,不要让自己的生活被层出不穷的危机所支配。比如对于“缺乏行动力”的问题,如果你真的希望提升行动力,应该首先制定计划,制定好计划之后应该按时推行,在这个过程中可以容忍错误和异常,但不要轻易纠结计划本身。在实现过程中,不要过分纠结细节,比如学英语,捧着一本书刚看了个开头,又觉得要先学语法呢,还是先背单词,还想知道是这本书更好一点,还是那本书更好一点。更重要的是,要想有时间做自己的事情,应当把一切保持在“井然有序”的状态,哪怕平时需要花更多的时间来维护,这样才不会被各种意外所支配。我曾经见到很多程序员,每天忙于改正线上的各种问题甚至乐在其中,却从来不想想怎么让程序保持在“自主稳定运行”的状态,还一个劲的抱怨“工作辛苦,生活忙碌”。也正是因为如此,我才大力提倡程序员要“横向发展”,要操心程序运行的整套环境,才能真正把自己解放出来

当然,既然名为《技术领导之路》,温伯格讲得最多的还是“如何成为技术领导”。温伯格反复强调的根本观点是,人不应当被作为机器对待,尤其因为技术工作强调思考和创新,所以技术工作者更不应当被视为机器,而应当被视为种子——蕴含内在力量,会不断发展成熟的种子。所谓领导力,就是创造一个环境,让所有的人都可以发挥出比单干时更大的价值,并不断成长。以此为基础,领导力的培养和发挥,需要注意激励、组织、创新三个方面。

关于领导的激励,已经有很多的论述。不幸,通常的激励似乎是从行为主义心理学的角度出发的,认为简单机械的“奖励/惩罚”就可以对员工起到引导和归束的作用。但这种理论其实是行不通的。赫兹博格的“激励-保健因子”理论指出,员工在不同的阶段所看重的方面是不同的,简单说员工刚开始更看重的是个人生活、工作环境、薪金福利等“基本因子”,满足之后则寻求学习与发展、工作乐趣、成就与肯定等“激励因子”,而简单的“奖励/惩罚”在这些方面并不能奏效。更重要的是,因为技术工作的核心之一便是创新,简单的“奖励/惩罚”并不能催生创新。按照我的经验,激励的作用更多是树立正确的价值观,这种价值观既符合公司的利益,又兼顾个人的成长,而且还要能落实到真实的工作中来。

在很多公司,有一些程序员是众望所归的“明星”:程序出了什么问题,找他们可以第一个响应,而且他们可以非常投入地解决问题,哪怕加班加点也无所谓。可是如果仔细思考,这样的程序员有不少就是麻烦的制造者,因为他们写不出高质量的程序,只能以“高度的责任心”在线上除错。而且,这样的程序员往往因为态度好、加班多,受到大量的关注和鼓励。还有一些程序员,他们或许沉默寡言,或许不爱加班,但他们总能提交高质量的程序,上线之后就不需要自己再操心。不幸的是,这样的程序员往往不会获得关注,颁发奖励的时候也论不上他们。

身为技术人员,很多人都知道两种做法的优劣,但因为外界(领导)没有明确的褒贬,很多人并不敢坚持自己的选择。所以,如果希望成为好的技术领导,一定要注重激励的方面。在日常工作中,技术领导应当持续表扬和鼓励能提供高质量程序的行为(哪怕日常不怎么说话),而不是提交质量一般但努力除错的行为。有这种持续的激励,才有可能塑造正确的价值观,给有潜力但还在摇摆、困惑的成员发出清晰的信号,从而打造高质量、迅速成长的团队。

技术领导需要注意的第二个方面是组织。前段时间我和一位MBA朋友聊天,他说很多领导对于招人的定义就是:因为我忙不过来,所以我需要一个人帮我做这个。他评价说:“其实,这类领导需要的不是员工,而是劳工”。用我的话说,这种组织不叫团队,只能叫团伙。

既然领导力的表现是创造让所有人都能成长,都能发挥更大价值的环境,当然不能把所有人当成可以互相替换的棋子。按照温伯格的意见,好的组织应当是“全面的(Organic,也可以翻译为“有机的”)”,也就是可以互相取长补短,形成一股合力。假设一支团队里没有产品经理,虽然客户对产品的要求并不是太高,程序员也有一定的产品意识,交付的软件堪称能用。但技术领导应当看到,关于产品的工作其实消耗了开发人员大量的时间,而且开发人员本身并不“愿意”从事产品方面的工作。所以应当考虑补充产品人员,并让产品和开发协调工作,形成1+1>2的结果,提升整个团队的效率。同样的道理,如果团队里多数开发人员都比较沉闷,在继续招聘开发人员的时候,就应当优先考虑开朗外向的性格。

组织的全面,还提现在一个方面,即它是自组织的,各级的情况和任务可以在对应的级别自动自发地完成。或者用温伯格的话说:“(在全面的组织)中每个人都能解决问题,做出决策,执行这些决策。而领导不需要对各种问题亲自出面,亲自做决策,亲自执行”。这种观点也可以在其它相关书籍中得到验证,比如Uncle Bob就在《程序员的职业素养》中再三强调,团队要有凝聚力。要想打造全面的组织,有凝聚力的团队,温伯格列出了几种需要警惕的行为,包括“只抓大目标”(特别强调执行力的领导作风就是如此)、把人当成机器来看待(忽略人的情感和潜力)、事必躬亲(下属不应当仅仅是领导完成任务的手段)、奖励低效的组织(回到价值观的树立)等等。虽然我们日常工作中无法做到彻底戒除,但只有尽力避免这样的行为,才能真正营造全面的组织,形成有凝聚力的团队。

技术领导需要关心的第三个方面是创新。许多技术领导本身对技术非常有兴趣,所以他们自己在创新方面是没有问题的。但是身为领导,仅仅自己创新是不够的。既然相信人不是机器,既然相信软件开发是需要创造力的工作,那么就应当鼓励每个人的创新,为团队营造勇于创新的气氛。

在很多公司,技术领导往往掌握着框架和类库的生杀大权。我听到不少程序员说,自己在网络上看到了很多新的、好的框架和类库,但领导就是不同意。很多时候,这是因为领导没有用过,对此不熟悉,不愿意冒风险,毕竟领导要对公司业务负责。有时候我也确实发现,因为经验等方面的限制,一些程序员提出的创新想法并不实际。但是好的技术领导从来也不应该因循守旧。按照温伯格的说法,即便你用某种方式成功过,也不意味着没有更好的办法来解决同样的问题。所以,身为技术领导,应当鼓励所有人的创新,对于不够完善的创新建议,不能简单拒绝,需要代之以鼓励和引导。甚至在某个问题上,即便自己有过成功经验,心里已经确定了方案,也需要虚心听取其他人的不同建议,更要勇于采纳更好的方案。要知道,这样做并不意味着贬低自己的技术威信,反而确立了积极创新,并且能采纳合理创新建议的工作方式。只有一个人能创新的团队,永远不会强过一支人人都能创新的团队。

很多人读过《技术领导之路》之后跟我说:“我觉得这本书写得很好,我也承认作者说的很有道理。但是,这和中国的现实不搭配。我努力去激励了、去组织了、去创新了,却好像对牛弹琴,我领导的人似乎无动于衷。还不如安心当个包工头省心省力”。是的,我承认现实中确实有这样那样的困境,但我也认为这不是安心放弃成为优秀的技术领导的理由,因为有个重点书里没有写到,那就是想要打造好的技术团队,必须对招进来的人有足够高的要求。实际上,在《极客与团队》之类讲述技术团队管理的书籍里都强调了这一点:如果期望打造有战斗力的团队,必须保证大家形成一致的工作习惯和价值观;对这种工作习惯和价值观持续产生负面影响的“害群之马”,是应当坚决予以淘汰和替换的。

抵抗焦虑(Battling anxiety)

在开始这个实验之前我经常担心不能够完成足够多的工作量或者取得足够的进展(这两点很难度量,因为我的业余项目没有明确的截止日期)。我发现想要取得进展与实际取得进展是同样的重要。这让我豁然开朗。一旦我开始每天取得持续的进展,焦虑就开始消失了。我对我不断完成的工作量感到欣慰,并且我不再过度疯狂地期望完成更多的工作。

Ref:
http://article.yeeyan.org/view/340567/431980

几个吸盘产品的使用经验

1、伊美恩
宜家的产品。有一次逛宜家的发现,吸力很强,当场测试之后果断拿下,看产地是说意大利,用于吸附的橡胶层很厚,压实之后螺丝固紧,用到现在一直吸得很牢。链接:http://www.ikea.com/cn/zh/catalog/products/20253124/

2、嘉宝
国产货嘉宝。不错的产品,橡胶层比较薄,比较软,这样带来的好处跟墙壁的贴合性比较好,其他连接件也看上去单薄,但就目前使用下来的经验来说强度应该没有什么问题,买的是一个吸附水培花盆,装满水之后很稳固。链接:http://www.garbath.com/products.asp?ProductID=97&ClassID=5

3、dehub
宣称是韩国货。安装比较省事,轻轻一旋即可,应该是有个内部卡扣。吸附的橡胶层看上去是分了两层,材质也不同于其他两个,贴合性很强,有一次强行把挂钩拉下来之后发现里面的橡胶层居然有点碎了。橡胶层和吸附力是这三个中最好的。只是担心一个吸附层的强度。其他无。

一点购物经验

  1. 冰箱

    • 一开始选择了松下的NR-C28WPD1-S(无锡产,松下压缩机,变频风冷),觉得高速运转的时候噪音有点大(另网上有人反馈有高频噪音),矫情病发作,于是就退掉换了西门子的KK22F57TI(恩布拉克压缩机,直冷),用起来之后发现噪音控制还不如松下的(摔!),仔细听了一下,倒也不是压缩机的噪音,估计是设计缺陷,另外西门子的空间也没有松下来的好,大致相当的外形尺寸,松下可以做到278L,西门子只有218L的空间。
    • 尽量选择恩布拉克压缩机的冰箱
    • 选择风冷,不用费心来除霜
    • 西门子的东西Just so so吧
    • 国产的品控真心不行,有条件就选择原装的吧,无责任推荐松下NR-F555T
    • 有条件还是不要把冰箱放在客厅 -_-!
  2. 空调

    • 直接选择了大金FTXJ335NC-N
    • 另外:N多所谓自主品牌的空调压缩机都是用的外国货
  3. 床垫

    • 偏向带乳胶的产品
    • 金可儿,五星之选,相对比较厚道的厂商
    • 如果有条件的话,可以直接从美帝买Simons过来
    • 国产的爱舒,乳胶系的谨慎购买,因为这家乳胶味道比较重,一度想退货
  4. 家具

    • 选择了橡木
    • 框架用的橡木,背板用的杉木(松木?)
    • 橡木的木纹很好看,但是裸板杉木绝逼味道大(木头的味道,个人闻不惯,但是有人喜欢-_-!),谨慎呐
  5. 保温壶

    • 象印SH-HA15-PF,容量1.5L,保温效果非常好
    • 日本国购得,然后是Made In China。。

apparmor的坑

将mysql的datadir修改了个路径,mysqld死活启动不了,可以dmesg看一下是否是路径被apparmor拦截了:

type=1400 audit(1390890338.307:153): apparmor=”DENIED” operation=”open” parent=4033 profile=”/usr/sbin/mysqld” name=”/srv/app/mysql/ibdata1″ pid=4415 comm=”mysqld” requested_mask=”rw” denied_mask=”rw” fsuid=105 ouid=105

mysql的错误日志会提示无法访问plugin表:

/usr/sbin/mysqld: Can’t find file: ‘./mysql/plugin.frm’

解决方法:
/etc/apparmor.d/usr.sbin.rsyslogd 把新的datadir路径加进去即可。

lxc & aufs & docker

将rootfs放置于aufs上可以节省不少空间(template):

create a linux container named “p1” with template “ubuntu” on a 32bit pc
1. mkdir -p /var/lib/lxc/p1/rw /var/lib/lxc/p1/rootfs
2. mount -t aufs -o br=/var/lib/lxc/p1/rw:/var/cache/lxc/saucy/rootfs-i386 none /var/lib/lxc/p1/rootfs
3. lxc-create -t ubuntu -n p1