Sunday, May 27, 2012

我們

夜晚
你和我
一樣地憂傷

你不知我
將繼續彷徨
我只見你
仍一如既往

我們間
只多了點
浩瀚的時光

2012.5.27 23:38

Sunday, May 13, 2012

华美汉盛 Adaptive Development Process 简介

零、引言


日前因競標項目,終於“被迫”要把公司這七年來在軟件開發流程方面的知識做一次小結,於是有了寫入標書的此文。

準確而言,這並非第一次寫,只是第一次用中文寫,早在 07 年底 08 年初便在公司內部 wiki 寫過一篇長達 10 屏的英文版:


此後零零星星還有一些英文寫作,隨着內部培訓的需要散落各處。直至去年年底開始給 BTV 的開發團隊講課,秉承一貫白板筆加嘴巴的風格,回來後也只懶惰地寫了篇《軟件開發流程第一講: 開宗明義 (綱要)》;後續課程見聽衆不催,便偷偷一併欠下不寫……

此次競標,終得靜心坐下,把往事悉數回顧,遂成此文。

注意——流程管理如一切精密之物,思想萬般,細節無數;此文僅覆蓋本人經驗所至,自覺精要部分,其他深入如商務分析、需求管理、開發日常(SCM/Unit Test/Code Review, etc.)、質監全程、發佈管理(Release Management)、系統運維(Operation)等等均未覆蓋。待某年某月空閒或“被迫”(again)再考慮動筆!

應標所需,寫作時遣詞造句略有發揮,但撥開辭藻,一切堅若磬石。予晚輩參考,與同行切磋,求前輩指正。

(另,競標成功,一切的努力都沒有白費:)

yihua
5/13/2012 晚



(Update: 前傳《軟件開發流程第一講: 開宗明義 (綱要)》)

一、背景


华美汉盛自成立伊始,针对软件项目需求多变、节奏快速之特点,一开始便采用了轻量应变的敏捷开发方式。脱胎 Scrum,历经数载,我们最终沉淀下了自己的流程:ADP - Adaptive Development Process,应变式开发流程。

敏捷的 ADP 锤炼得尤为适合移动互联网、后 PC 时代、云端服务的应用开发。

此类项目的突出特点:
  • 海量受众:各种受众,多样设备,时时有你未曾想到的需求
  • 市场多变:业界风向,竞争对手,处处有你需要响应的挑战

这为工程以稳健为要义的技术团队带来了难题——我们如何能够一方面聆听市场、迅速响应,另一方面在工程实施上却不能因此没了章法、乱了阵脚。

ADP 便是华美汉盛针对这一难题给出的答案。

二、思想


敏捷的 ADP 与非敏捷的瀑布模型(waterfall model)在思想上有典型的区别。

瀑布模型,顾名思义,便是“需求分析 > 设计 > 实现 > 测试 > 集成 > 维护”瀑布般、线形地完成一次软件的开发。这种模式,其实暗含了如下两点“假设”,或说“前提”:
  1. 需求不变:自始至终,项目需求始终是固定的、不变化的
  2. 认知不变:在整个开发过程中,对业务的理解和传递是一致的

在大部分项目中,尤其是 Web 2.0 时代以来、移动和互联网的兴起,大量面向最终消费者的应用开发项目,这些假设都是不成立的:一来用户们会不断要求新的功能,二来我们自己对原有需求的理解也会在现实中不断深化或演进。

针对上述传统瀑布模型无法解决的问题,ADP 的核心解决思想便是:承认变化,拥抱变化

如果说瀑布模型是以一种“万能之神”的“可预知”的态度,试图以有限的能力、以预知和冻结的方式控制、消除变化,最终获得工程层面的“稳健”;ADP 则是以回归“能力有限的人”的、务实应变的“适应变化”的态度,承认变化、拥抱变化、响应变化,这便是 ADP 精髓。

但,承认、拥抱、响应变化决非毫无章法地胡乱变化。我们有一整套完备的工程角色、流程步骤,使得一切变中有稳,精细可控。形象地概括起来,ADP 就像是“一系列的小型瀑布”,即:
  • 整个项目周期被分割成许多的迭代,每个迭代交替时允许吸纳充分的变化
  • 迭代内则是一个需求“冻结”的“小瀑布”,以保证迭代计划好的工作可以被稳健执行

三、项目管理实践


3.1 角色


在一个项目中,通常客户作为产品负责人(Product Owner),同时,ADP每个项目配备如下角色:
  • 业务分析员(BA,Business Analyst):负责与客户沟通、采集、管理所有业务层面的需求
  • 质监(QA,Quality Assurance):对产品质量及流程执行完备性进行监控;负责在业务需求驱动下,形成测试用例的设计、计划、执行,缺陷报告、跟踪、管理
  • 项目主管(PL,Project Lead):桥接业务与工程的关键角色,负责驱动项目、资源管理,这包括确保客户、BA、QA 与工程团队对需求的理解之一致,确保资源被合理估算和调度,确保计划被稳健执行,确保风险被有效预见并管理
  • 开发团队:负责完成各项具体开发任务

3.2 需求仓库


项目伊始,BA 便会与客户紧密交流,从商务角度,一来采集客户需求并准确归档成用户故事(User Stories),二则协助客户分析、判断、做出正确选择。

BA 采集到的需求(用户故事)并不会立即进入工程团队的“生产线”,而是会在需求仓库(Product Backlog)中被管理,它成为一个有效捕获用户各色(新的、变化的)需求、同时又不会影响工程团队当前工作的“缓存池”。

BA 管理该缓存池的过程中,将不断与客户一同明晰需求、判定轻重缓急,始终保持准确反映客户需求、项目进度的状态。

随后,PL 将协同 QA 及工程师从该池子中,依优先级选出需求,估算、计划、开发、测试并最终迭代式、增量式地发布产品。

3.3 团队容量


团队“容量(capacity)”在 ADP 中为重要概念,它将指导我们对资源作出准确判断,进行有效配备。

“容量”意指:在给定人数、时间的前提下,一个团队可利用的人时便是定数,能完成的工作量亦是。例如,每人每天工作 8 人时,一个两人的团队,分配一周,其“容量”便是:8 x 2 x 5 = 80 人时。

PL 在做计划时便需要根据团队容量决定一个迭代里可以完成几个需求;在发生变化致工作量增长时,需根据剩余容量决定响应方式。

3.4 估算


ADP 中估算是一项极其重要的工作,如果把用户故事(需求)比作小球,每个迭代中团队的容量比作杯子,我们只有在估算出了小球的大小之后,才能做好计划,才知道每个迭代中能放入多少小球。

在估算用户故事工作量大小的时候,我们一般遵循如下步骤,在一次估算会议中:
  1. 由 PL 负责为开发团队讲述每个用户故事及其细节
  2. 每位工程师据此提出自己的问题或看见的风险,PL 相应作答
  3. 当充分交流完毕,每位工程师提出自己的估算
  4. 若估算时间结果差距较大,估算最高者与最低者需各自陈述理由,但不作任何辩论。若有未明问题,PL 作进一步解答,无现成答案则记录下来,待与客户沟通。
  5. 在听取意见后,每位工程师再次给出新估算

每个用户故事如此进行一至数轮的估算后,将得到相当合理的值,小球的“大小”至此清晰。

该做法的好处是:
  • 促进整个团队对需求的理解,知识被“分布式”存储到每个人的脑海里,这在计划执行过程中,若遇到成员病假、变动时,其他成员可以立即有上下文承接其工作——这是很好的风险控制手段之一。
  • 发挥团队智慧,发现未知问题。同样,由于团队成员的技能各有所长,探讨的过程中,非常容易从不同角度发现 BA、PL 未曾想到的问题或细节,这样 BA、PL 便能及时与客户沟通,提前消除可能的风险。

3.5 项目计划


在 PL 得到团队给出的各个用户故事之估算大小后,辅以每迭代为定量的团队容量,计划便轻而易举了。PL 要做的仅仅是把已知大小的小球——用户故事,按优先级填满一个杯子——迭代容量即可。随后,将该计划草稿提交客户审核,在得到客户批准后执行即可。

当然,再好的计划,执行过程中同样会面临各种变化,重要的是 PL 必须全程保持对团队进展的把握,对新出现情况的理解,以及与客户保持顺畅的沟通,这样才能确保应变及时、客户知情、结果满意。

另外,有了“小球”填“杯子”的概念后,计划执行过程中进行需求变更管理也变得非常清晰明了。迭代过程中需求变更通常有两种情况,一是新需求的加入,而是原有需求的变动。需要把握的原则就是——任何一种变动都将带来小球“大小”的变动,在杯子定容(不加班,不加人)的前提下,必然对其他已放入的小球产生影响。PL 的重要职责就是确定此次变更带来了多少新的工作量,据此与客户沟通,以确认是把新工作量计划入下一迭代,或是“挤出”当前迭代的其他小球。

四、开发流程


一个典型的开发流程如下——

4.1 迭代零


经 BA 采集整理,PL(独自或带领工程团队)估算出优先级最高的需求的大小(单位:人时,例如完成需求 A 需要 8 人时),形成迭代一计划草稿,经客户审核,确保在迭代一开始前得到客户批准即可。

4.2 迭代一


以下三个角色、三条“线索”将“并行”发生:
  • BA 继续开发需求,与客户交流沟通,进一步提升项目的未来能见度(visibility)
  • QA 开发针对本迭代需求的测试用例(test case)
  • 开发团队执行迭代一计划,开发本迭代需求功能

在开发团队这条“线索”上逐渐开发完毕一些功能时,QA “线索”也逐渐开发完毕测试用例;这两条“线索”将在内部版本上“交汇”——开发团队把迭代内的阶段性成果发布到测试环境中,QA 便可以立即开始测试、报告缺陷,开发团队相应修复;直至迭代结束前,开发团队将发布一个经 QA 充分测试的版本给客户。

在迭代其间,项目组长亦将挑选经由 BA 定义清楚的需求,同时组织开发团队估算后,生成迭代二计划草稿,提交客户审核,收集反馈,确保在迭代二开始前获得客户批准。

4.3 迭代二至迭代 N


同迭代一
  • 需求团队与客户开发下一迭代需求
  • 开发团队执行迭代计划,经 QA 测试并发布
  • 项目组长与客户生成迭代三计划

如此周而复始至项目结束。在此模式下,我们拥有了:
  • 充分的应变调整机会——客户永远可以在当前迭代规划下一迭代的调整
  • 稳健的工程实施节奏——已计划的需求将被冻结并准时发布,确保阶段性目标被不断达成

“最坏情况”下,客户只需等待一个迭代的周期,便能让变动的需求进入。如遇特殊情况,必须当前迭代调整,ADP 同样有如下应变步骤稳健支持:
  1. 与客户充分沟通,定义变更范围,估算资源变动,明晰容量剩余
  2. 若资源并无增加,那将在迭代内自然消化
  3. 若资源增加,当前剩余团队容量不足,则优先考虑将其他未开始或相对次要的需求移出当前迭代,为吸纳变化“腾出空间”
  4. 若此变动必须发生,且当前迭代需求亦必须完成,此时可清晰告知客户将加班“扩容”,以及相应的成本增加

五、小结


简言之,整个 ADP 实作过程中,与客户的充分交流贯穿始终。

我们一方面以上一迭代已发布的产品,辅以经验,让客户对未来保持充分的能见度;另一方面,以即时到位的交流,让客户随时知悉项目进展、资源动态,能以完备信息做出最佳决定,直至项目成功发布。

我们相信:
  • 鲜活的交流 优于 死板的列表
  • 与客户一同探索并掌握未知 优于 以有限能力试图预知一切
  • 做出客户一直满意的、成长中的产品 优于 按规格书验收完却毫不满意的最终产品

Sunday, May 06, 2012

推特集 (2012/04) - 皇城綠意俏春寒

  1. 麥當勞小弟,主管沒教你客人吃飯時別掃地、別往客人剛邁過去的腳後跟掃垃圾嗎?
  2. #Design is all about using various elements to manipulate someone's mind into believing in what you believe.
  3. 還是愛聽八十年代的校園民謠:「青春」、「流浪歌手的情人」、「關於理想的課堂作文」、「你不在的北京還在下著雨」…現在還有同等理想、靈氣與詩性的作品嗎?
  4. 一首老歌就喚起一點懷舊的情緒;一次回眸便驚動一些塵封的記憶。
  5. Shifting focus to something you love is a good way to get your mood out of blue.
  6. To achieve the 1% happiness, you may have to do the 99% boring/painful/sweaty works. But it's still the love for the 1% that drives you.
  7. 沒記錯的話,自己是從 98 年的「黑馬文叢」裡讀到“林昭”這個名字,那是大腦發生翻天覆地變化的一段時光,年方十八。
  8. 為供養我和妹妹上大學,三十多年起早貪黑賣豬肉,始終不捨得買房的爸媽,近日開始對“自己的房子”迫切起來,一遍遍尋覓、查看、說起哪裡有間心儀的房子。爸爸一句:“要長命的話還能住上三十年。”頓覺歲月如刀。
  9. 我想,躺你懷裡,便讓這世界,與我了無關係。
  10. 春,是愈發地潮了;柴,卻變得更乾了。
  11. It feels so great to be alive, with so many desires yet to be fulfilled, so many things you still have the chance to worry about.
  12. 看著童車裡光光額頭扎著七彩頭花兒的小女孩,覺得將來還是生幾個女娃有趣!
  13. 淫民日爆,有爆天天日。
  14. Taste economy.
  15. iMissile - Designed by China, Assembled in N. Korea. RT @CBCNews: North Korean missiles dismissed as fakes http://bit.ly/KaFx0A
  16. 摁快捷鍵把郵件射出去的時候超有快感。
  17. 郵件打多了有手指會說話的幻覺。
  18. 國內一出毒膠囊,國外牌子也曝光——是不是都攢着稿,隨時備着輿論引導?
  19. 給客戶寫郵件就是一場智慧於耐力的戰爭,你寫得長,我寫得比你更長;你寫得細,我寫得比你更細!
  20. 聽了這麼久,彤彤確實能把文字演繹得聲色並茂勾魂奪魄,美中不足是她的語文基礎尚不紮實,常有敏感字詞唸半邊之口誤。不知伊人如今身在何處?若能上推敢情粉絲可比蒼老師?cc @yeqiantong
  21. You deliver a product, you deliver a set of decisions you made for your users, do you want to piss them off with your bad decision(s)?
  22. If you are not willing to open up, to take the risk, to be vulnerable, you are not likely to experience anything new.
  23. Life's meaning is feeling being needed by others, as simple as that.
  24. 嗅到夏天的味道,嗅到所有的記憶和慾望。
  25. 兲朝藥企通過小小膠囊直接讓 Chrome 市場佔有率劇增,太給谷歌面子了啊!
  26. 這是一個八零後終於熬過七零後的鄙視,可以開始盡情鄙視九零後的年代。
  27. 體會別人怎麼做,理解別人怎麼想,嘗試自己犯錯誤,有天就能做出好作品。
  28. 女性無處不在被 materialized,說明這還是一個男性(主導的)社會。
  29. 沒心沒肺地,其實活得更無憂無慮。
  30. 男生個矮,女生胸小是否從 visceral 層面就讓人覺得營養不良,不利繁衍?(我是在說三八線上面如鐵色的朝鮮衛兵,和黨趴廣場上瘦小羸弱的朝鮮姑娘)
  31. 看完這集“don't tell my mother…”平壤大冒險,感慨萬千!感謝 D,感謝 ZF,我們才享有不再平壤的今天!
  32. 女人着裝當如精緻 packaging:看着美麗,拆開驚喜。
  33. 見客戶,第一次去了家法國小餐廳,印象:1、吵;2、擠;3、老外們那種放鬆、人跟人少些警戒和距離感的調調,好像你和誰都能隨時親密肆意聊起來,聽我們唱起生日歌,就都和起來,讓生日的哥們樂得! http://pic.twitter.com/rBy4E9Kb
  34. 有天一定要學馬克童鞋,名片上印:I'm 不到一米七的 CXO, b*tch!
  35. 認識些身高和我差不多的老美 CEO/CTO,想想不到一米七也沒啥大不了的嘛,哼唧。
  36. 帝都人肉吸塵器。
  37. 要成事,耐心是王道。
  38. 有意思,博客來訪前五:兲朝,美帝,德國,臺灣,尼德蘭。
  39. 找對象之男女有別:三十五的男人會覺得二十五的很沒有威脅;二十五的女人會覺得三十五的很沒有威脅。
  40. iCloud enabled 的 Reminder 無敵啊,所有設備一起叫,總有一台在身邊!
  41. On this long hard road to success, you need extreme patience, and some luck to speed up a bit by encountering a shortcut.
  42. 想出來一個 idea 了不起嗎?做出來了的呢?執行了三五年的呢?堅持了十年的呢?做成了百年企業的呢?
  43. 今天拜訪了東直門一位客戶的 startup,小小的兩間,擠擠近十人,酷酷的 idea,追逐著夢想,很有些我們 06 年時的創業 feel,感動。
  44. 八卦劇透:同事今日告知,她曾把我這張大頭照「未經允許」發給一位芳齡三十的大妹紙,人家一看,說:“怎麼看起來這麼小嘛!看起來不成熟哇!哪像成功人士呀!”就把我拉黑了。
  45. 一聽說話的調調就大約能判斷受教育的程度。
  46. 我們生自潮暖之地,也便對那迷戀不已。
  47. 銷售的特質便是:一件自己覺得很好的東西,永遠不記得和誰說過、說過幾遍,撈個人就能自覺新鮮有趣地反覆分享,樂此不疲。
  48. 有讀書不好卻當了老闆的,但讀書好的大都佔著各行各業的主幹;那些讓人津津樂道、退學創業的成功例子,其實多是牛校 dropout;別光看退學創業,要學就全套:先讀上牛校,再退學創業。
  49. 數據表明,因重男輕女,大陸有三千萬男性沒有配對女性。換句話說,對妹紙而言,隨便一個男人就是三千萬里挑一;對男童鞋而言,隨便就有三千萬雄性跟你搶一個妹紙。所以,妹紙要自信,男人要努力!
  50. Growing awareness of pretty little details makes fine taste.
  51. 你說人美帝收容了這麼多流亡人士反動集團邪教組織,為毛還是世界第一強國涅?不解!
  52. 達官們,注意啊,和美帝搞好關係啊,有天人領館不定便是救你一命的擋箭牌啊!
  53. 越來越傾向於認為,一個產品的成功取決於 taste,而非 technology。
  54. 除了身高與外貌無法(非手術地)改變,你永遠可以讓自己一天天變得更加健康,更好體形,更有才識,更富涵養,更多財富,更受尊重——只要你願意,終生努力。
  55. 為何聽到那英這句我總會想歪——“你床邊的卷曲頭髮殘酷地說明…”
  56. You define your territory by saying "no" to certain things.
  57. It's always the minor details that are leaking important info of who you really are.
  58. 在一個不講規則的環境裏,沒有誰是安全的。所以,深諳此道的公僕們,都及時地代表我等移家海外,裸奔朝內。
  59. 企業無良,諸商黑心,與貴府苛捐雜稅不無瓜葛;苦幹不掙錢,漲價要約談,只得把良知底線一再後撤求 margin。
  60. 音律限制下寥寥數句便勾出意境幽深,萬般情緒,此乃古詩詞極簡之魅。
  61. 未經 @esperyong 同意,直接歸檔這小段討論了:)
    • 好設計就是無處不細膩,摳門級 detail oriented。
    • @xuyihua 你错了,大道至简
    • @esperyong 我們說的是兩個層面:1、detail oriented 是指執行層面;2、大道至簡可說是思想層面。這樣說會更清晰:蘋果的設計可謂至簡,同時實現的每個細節上都做到無處不摳門,精益求精。
  62. 看了位性工作者的 QQ 空間,太青春水靈了啊,何苦淪落。
  63. 沒個對細節無處不摳門的產品經理,看你能把產品做成啥鳥樣。
  64. 某童鞋親授頂級摳門、省錢秘技——電都在公司充滿,水都在公司喝足!
  65. 經濟發展是一定會倒逼政治改革的,試想身處循規則講透明環境的洋人,怎會願意一直跟喜歡暗箱操作的政府做生意呢?政府想在國際上玩得開,遲早得改好。
  66. I wish, there's a lock to prevent things from catching up, but does it make sense if we will all get locked up someday?
  67. 不可否認,小時候爸媽毫不回避的大聲吵架對自己有負面影響;成長至今,見過離婚、再婚、第三者,將就、隱忍、不快樂,愈發覺得感情的下場如此不堪,婚姻讓人如此地不知所措。這條路真是到了年紀就必須走嗎?你的婚姻真的幸福著嗎??
  68. 樓上的男女大聲吵,跺地板摔東西的,幸福過後婚姻都會變成這樣嗎?
  69. A product without love will die, think of a kid without love.
  70. If you are seeing the worst part of me, you are not performing the best of you. #management
  71. “做男人最重要的還要身體健康,這樣才能照顧家人。”任達華這句講得實在。
  72. 聽初中時喜歡的歌,心就好像回到小時候啊!
  73. 《你若安好,便是晴天》——看了個開頭,翻了幾頁,就被那矯揉造作的調調膩歪得不行,不好好說話,是個地方就要江南煙雨離愁別緒地縐縐一番,刪。
  74. 一個狠嚴肅的問題:找對象時,若政見相左,將導致鎮壓,分裂,還是兩黨輪流執政?
  75. Air is polluted, food is poisoned, system is corrupted, you are being f*cked.
  76. 為何越老越能欣賞複雜精密之物呢?因為越老對複雜度越有體會,對複雜之物能被精密安排出靈魂來越感迷人。
  77. Life has to move on, no matter how good/bad it was.
  78. 你恨美帝阻撓“統一臺灣”?那你是否恨我國阻撓“統一韓國”?還是仍舊恨美帝阻撓“統一朝鮮”?
  79. 《靈山》迷幻,《一個人的聖經》淫蕩,鑑定完畢。
  80. 兩手四指同時撫弄翻肚子賣萌(公)貓貓四粒小乳頭,結果把丫弄得呼呼睡去,是我技巧太差還是太好??( ̄Д ̄)ノ
  81. 像用 django 做留言板這種基礎面試題,最好就不要找網上的代碼用,你能搜到,別人也能,很容易“撞碼”的。#招聘
  82. 春天來了!滿大街行走著你的慾望。
  83. 坦白從寬,抗拒從嚴––典型人治思維。
  84. 年輕的公主們守著青春的資本,在城堡里待著高帥富夢幻的求婚;直至年華老去,推開城門,方才驚覺這世上並非楚河漢界的高帥富與矮矬窮,上帝向來喜歡 down to earth 的混搭風。
  85. My biggest strengths so far: building things, telling stories.
  86. 現象:女性擇偶條件中對男性的身高要求隨自身年齡增長而降低。
  87. 比較了一圈 iPad 上免費的視頻播放器:OPlayerHD/MoliPlayer/flex:player/yxplayer2/playable/PlayerXtreme,僅 OPlayerHD Lite 滿足:1、流暢 avi/wmv;2、密碼鎖定。不介意其小廣告的話,推薦。
  88. 舉啞鈴時必開窗帘,一看肌肉在玻璃上的反光,二讓玻璃外的看肌肉上的反光。( ̄^ ̄)ゞ
  89. 貓貓發呆時超級淡定,任你挑逗撩撥,雙目圓睜毫無反應;一旦想玩,又會突然自來瘋地在木地板上噠噠噠一陣跑,藏身鞋後縮成彈簧,“喵––”地一雙大眼朝你撲來,膩成毛球。
  90. 心太好,總想對每個人都好,自己便過得不太好。
  91. 愛拿/詩歌/當普通句斷行/打趣的傢伙//通常/是那會寫字/便以為/自己是文豪的/白丁
  92. 翻身農奴把歌唱,唱歌把奴農身翻。
  93. Life lesson: giving people false hope is irresponsible.
  94. 獨門祕技:聽聞牛排部分屏有漏光問題,如何現場檢測已拆封港行?設置里亮度調至最大,打開 camera app,以黑布或手捂緊鏡頭,查看透光均勻度即可。注:LED backlit 的 LCD 屏是不可能“全黑”的,確保屏幕周邊無不均勻光區域即可。
  95. 家輝哥明顯是因美帝朝廷爭鬥失勢被流放到兲朝這邊陲蠻荒之地受難來的。
  96. 小時候,總覺得《人之初》是本需要背著父母偷偷翻閱的淫書;長大了,才發現一眾門戶皆小盆友可堂皇品鑑的黃網。可謂:長江後浪推前浪,前浪死在不夠浪。
  97. 矮矬窮,沾一樣,終生是熊樣!T^T
  98. 努力能得到的,就努力得到吧! 努力得不到的,就努力放掉吧!
  99. 肢體語言隨時都在泄露關於你的種種細節,即使是張靜態的照片。
  100. 阿富汗在塔利班時期還禁止民眾製作風箏和玩傳統的“風箏大戰(kite fight)”,惡政權在破壞文化反傳統上如出一轍。 #natgeo
  101. 北極熊獵食後行走時一身潔白蓬鬆的毛上儘染鮮紅的神態真是飄逸又血腥。 #natgeo
  102. There are neither good nor bad clients, they are how you treat/train them. | 客戶本無所謂好壞,他們如何都是你對待出來的。 #management
  103. Steve Jobs 教會我們的重要一點:千萬愛惜身體,以免英年早逝淚沾襟。
  104. 剛學了句:天氣冷得 "my balls are touching my kidneys"!自:The life & times of Tim。
  105. 南方的陽光都藴著水樣的調調。
  106. 面了個 gmail 的孩紙,明顯和 126/qq 的不是一個檔次的。 #招聘
  107. 被美好慣壞了,便容不下瑕疵。
  108. 青春真好,張揚細膩又脆弱。
  109. Steve Jobs 聽聞 Linus 用起了MacBook Air,心裡一激靈:“壞!丫當年奏這樣把那死肥企鵝填 PC 裡撐傻微軟的!”於是趕緊遞橄欖枝意欲招安,怎知 Linus 哥不從,老喬便鬱悶死了。
  110. 這些姑娘們儀態翩躚得仿佛渾身都溢著香氣。
  111. 工程師,rock solid 比 smart 重要,再漂亮的石頭,頂不進大廈的柱子裏,也就一路邊的石頭。