Higher order functions

What? Functions you can pass as arguments to other functions. Such as map, filter, reduce, flatMap.

  • map – operate on each element in the collection (then return a new collection).
  • filter – return a subset of the collection that satisfies some condition. 
  • reduce – combine and return a single value. 
  • flatMap – flatten a collection of collections into a collection. 

lazy var

What? The vars that are marked lazy won’t be initialized until it’s used the first time.
When to use, if the var is a view? 

  • When the view has a good chance of never needed based on the condition. e.g., views in a collapsible panel. 
  • When the view isn’t needed before user interaction starts. Such as off-screen views, or views can be shown with delay. 

35岁,记录一下。

一眨眼就两个儿子,很充实,老大很粘我,有点过分粘,老二很省心,有点过分省心,呵呵。理应觉得很累,但似乎还可以,应付得来,有赖老婆老人家们和各路亲朋好友的通力合作无私奉献。或许还有余力拼拼老三。

事业上有一个契机,但还是家庭为重,现在不是时候,自己也放心不下,对孩子们,对自己,对家人。机会总是有,各种不同的机会而已,要背水一战的机会,未必就是最好的。

另外从三月就开始搞一个项目,用的是工余时间,进度缓慢,意料之中,但缓慢的程度,还是意料之外。接下来需要更多的投入。人渐渐成熟,理想空想梦想幻想分得清点,看得透点。可以坚持的不妨多坚持,总是要一步一个脚印。

公司被Pearson收购之后,变得无奈。以前再黑暗的日子,总明白只要多撑一阵子,老板迟早给撤,换血之后就是一片明媚。事实也证明如此。但现在拥有懂技术的老板,超有能力的管理层,本应再无所求,然而却套在一个老旧母公司的框架下,动惮不得。Pearson也在重组中,但与其等待大象跳舞,不如及早散场。离开只是时间问题。

身体没有明显变化,运动少了,但带孩子也是体力活,人明显的耐操了。

上下班三个小时的车程加上喂奶哄睡等时间,这几年听了不少有声书籍,也是一种不错的充电方法,特适合现阶段。老婆送的新旧Kindle,实在没时间,没机会,拿起没几分钟就打瞌睡了。

技术还是不断充实,公司走agile还算中规中矩,所以开会比以前少,练手的机会比以前多,至少没有被发展所淘汰,也不算追的辛苦,毕竟这年头,再也没有人敢说自己是通才。

理财方面还行,这几年买股票都是走长线,基本就是买啥啥涨,例如AMZN, TSLA, 连MSFT也涨。当然超长线用来对冲的黄金也跌不少。自己所在的PSO,连自己都不确定明年的涨跌。所以,所谓的买啥啥涨,也是可以理解为简单的好运。

在KDP出的两本书,算是增加一丁点被动收入。其实写书的感觉不错,以后还会继续写。于人于己都有好处。在这个赶赶赶的时代,用心写写书,是一种很高质量的沉淀。

人很奇怪,过来三十就总是记不清自己是三十几?现在过三十五,估计又要糊涂几年,直到四十。

工作小结(5年)

不知不觉,在这个公司工作了五年了。五年,如果是读小学,今年就是最后一年了;如果是中学,今年就要高考了;如果是大学,该开始考虑继续读博还是出来工作了。

 

行业

  • 所有人都在走HTML5,越来越少Flex,但Flash Builder依然在不断追赶VisualStudio,但同时很多人在MS技术阵营迈向OpenSource(包括我),这种感觉有点像当年,Borland C代替Turbo C,但又很快被VS代替。
  • Android在赶超iPhone的同时,iPhone的设计元素逐渐成为新一代移动平台标准(例如Sencha Touch,jQuery Mobile等用的都是iPhone UI设计),这种感觉有点像当年,JavaScript烂烂的一直用到现在竟然成了一块跨平台的宝,而Java还是半死不活的。
  • 各种企业明知道写了自己的APP也不会有多少人去下载安装坚持使用,但仍然不能阻挡越来越多的IT成本花在移动平台软件设计上,这种感觉有点像当年,是个店都要弄个.com,好印在名片上,宣传单张上。
  • Facebook红了一阵子,大家还在上面你戳我一下,我戳你一下,接着大家就在Facebook上面散播G+的邀请,这种感觉有点像当年,IE成为下载Firefox和Chrome的最有效途径。
  • Apple曾经是一家并不是那么耀眼的公司,却慢慢成为IT宗教领袖,俨然有了灵魂似的,然后霸气起来,这种感觉有点像当年,MS就是要在Windows上绑IE。
  • 一个卖书的网站,Amazon竟然做了最大的云,还准备做移动设备,这种感觉有点像当年,一个搜索引擎,Google竟然做了最大的广告提供商,还做email。

这种乱世,谁敢说IT是夕阳工业?!IT行业每天都在不遗余力的革命,革自己的命。以新的形式不断重复着历史,只是速度越来越快。

 

公司
IT公司管理者角色大致分四种:管人,管技术,管项目,管产品。能够做好一项已经不错了,所以公司大了就要分工。

  • 管人:处理员工之间显性或者隐性的纠纷和情绪问题,激励团队斗志,一般就是各部门经理。
  • 管技术:兼顾长期和中短期利益,不能over-engineering,也不能under,不能一味求好,也不能一味求快,有所让步,但不能牺牲以后的发展。所以需要一个全职Architect,他/她必须1)超过一半时候在写code(才能服众);2)不隶属任何单一项目,不负责任何单一产品(才能纵观全局);3)上司就是CEO,没有下属(才能让技术不受行政干扰)
  • 管项目:观察项目进展,及时了解路障,防止迟迟不做出决策,减少内耗,严格控制项目范围,以免好的产品想法不断推延产品发布。
  • 管产品:每天至少一半时间花在玩自己和对手公司的产品上,产品构思要跟Architect沟通,让Architect去平衡技术难度和投入回报,安排开发的时间和范围。

当然了,还有很多部门,例如设计,质检,内容,网管,财务,法律,人事,公关,市场,销售,内外支持等。然而像我们这种公司,产品开发部门人数占公司将近一半的,这个部门管理不好,其他再好也是在玩火。

 

Agile

  • 公司water-gile了四年,终于在年初下狠决心真agile。真了那么一个半sprint,就彻底崩溃了。
  • 我以前一直怀疑agile的可行性,因为我实在想不到在我们公司怎么可能。但最近观摩了公司的另一个比较独立的团队如何agile,然后去了公司投资人创办的另一家公司看了他们怎么agile,我明白了:是人的问题。
  • 总结如下:两个团队都没有管人的人(除了CEO);管技术的都参与开发,而且每次都写最关键的那部分code;管项目的只是半个人,另一半时间还是写code;管产品的很利索,懂得失知轻重敢取舍,不脱离现实,不逆技术而行,有相当设计水平也具备一定技术。一句话:完全没有一个不用动手干的思想者。

 

个人发展

  • 感觉失去了以前写code的冲动,越来越不享受,主要原因应该是越来越没有耐性,急于求成。
  • IT行业的加速发展让过去十年磨一剑的做法显得不太实际,但一万小时成就一个专长的人类极限并没有因时代的加速而降低。这种冲突带来更多的是无奈,或者是一种集体的无奈。
  • 个人来说,除了IT,其他有浓厚兴趣的事不多,但也有。例如我喜欢新能源,但化学物理都不太好,不知道如何入手;我从小有个做发明家的梦,或者发明新型猫砂盆或者设计猫树是我的兴趣所在。

接下来,尝试更多不同的路,走出了IT再看IT,应该能重新感受写code的乐趣。

Single family or town house?

住house的人说,后院难打理,尤其是有果树,果实熟了掉满地,惹来各种蛇虫鼠蚁,不堪其烦。

住town house的人说,地方浅窄,没有活动空间,院子总嫌小。

所以,1) grass is always greener on the other side of the fence. 2) 做人要知足 3) 有钱多买几套房子

眨眼又一年

感谢朋友们的生日问候,还有荩子精心策划的一个生日聚会!

一年过去了,也不知道忙了些什么,反正忙这忙那的,但是收获却不少。明年也没有什么特别的宏伟愿望,希望日子过得更精彩,随心而行,家人朋友身体健康!

 

DSC_0019

至娱乐于在线学习

在一个在线教学公司四年多,愈来愈觉得在线学习犹如去健身房,客户多数是一曝十寒。无论提供服务的愿望多么美好,带给用户的热度也只是昙花一现。

 

与之形成鲜明对比的是,在线游戏却经久未衰。那为何不至娱乐于在线学习?

 

这个TED演讲说到,游戏7大要素:

  1. Experience bar measuring progress: 在线学习也需要HP, MP, 金币和等级。
  2. Multiple long and short-term aims: 在线学习要补血,复活,打小兵,打大王,通关。
  3. Rewards for effort: 在线学习要添命,升级,换武器等。
  4. Rapid, frequent, clear feedback: 在线学习要知道敌我实时状况,通关目标等。
  5. An element of uncertainty: 在线学习要等待新的武器,新的技能,新的故事情节。
  6. Windows of enhanced attention: 在线学习要提供用户机会去用更熟练的手段,重复已学会的技能,从而变得更“勇敢”。
  7. Other people: 在线学习要众包,攀比,对杀,互助。

很难想象一个这样的在线学习会没有“粘度”。