零星的小雨无法有效降低温度,最近的天气真的是江浙人民吹空调,广东人民吹空调外机。好在周六的一下午大雨送来了清爽,果然是热到顶点下大雨。
这种总体来说是比较常规的一周,虽然也有不少有意思的事情。时隔四年再次见到当年来 CMU 做招聘的 HR,世界真的很小。现在回想起来,可能缘分是按照频率算的,有每天见的缘分,也有每年见的缘分。当初因为没有拿到腾讯游戏的 offer 所以自然而然回归工程师的行列,现在想想其实都是冥冥之中,也许当时的不同选择,会通向完全不同的目的地吧。
之前沸沸扬扬的波音 737 MAX 事件到今天也还没有个最终结论(我本来是想等尘埃落定了再写写的),所以就根据自己肤浅的理解来聊一下。造飞机我不懂,但是从 737 MAX 事件看软件工程,倒也能学到一些东西。现代流水线生产让每个人专精于某一小部分技能,这种精细化会带来更加复杂的细节和更加优化的方案,这是第一个条件;而当一个工程大到超过个人能够掌控的细节数量时,这个人就不得不相信,那些他无力弄清楚的细节,是完全符合约定和设计的,这是第二个条件。表面看起来这样没有问题,但这俩条件一相加,那真是金风玉露一相逢,便引来 bug 无数。为什么会这样?因为最终不同细节(也就是模块)之间的交互并没有被完全设计,也就是说,细节间的广大设计空间基本上是自由的(仅有简单的 API 约定,也即解耦),而在一个大的系统中,这部分空间理论上不能侵入细节,但实际并非如此。再加上不可能完全测试各种黑天鹅的情况,很容易出现错一发而错全身的情况。于是问题就来了,软件工程的未来,要如何去解决这个问题,如果不能解决这个问题,所有的进步都需要付出代价,越往后代价越大,这个是不是我们可以承受的?从这个角度来看,软件工程的书和理论架构还是不太完善。开源也许是一个效率不太高的解决方案,有没有可能更高效搞定更大的项目呢,这个问题只能先留给五年后的自己了。
复杂度是难题,那么回到工作中,普通的技术难题要如何解决?其实很简单,要么拆分,要么绕开,在确定怎么做之前,最重要的是比较充分观察后,找到切入点。拆分无非就是分而治之那一套,这里不再赘述,唯一要强调的是如果确定要拆分,那么如果没有找到方案,就是还没拆分够,还没挖得足够深罢了。如果选择绕过,那就有意思了,迂回的路线有千百种,我们的目标是找到最省事最简单最不容易出错的那种,这种就要最终回归我们的需求本身,从需求出发,确定到底要走一条什么路线。但无论选择怎么做,都要为此负责,把它做好。
换工作以来,作为广告和推荐行业的新人,接触的是难度比较大的高质低频广告推荐,这里就有很多门道了,如何优化算法,如何压低成本,如何提高效果,这需要一段时间阅读数据培养感觉和积累经验。这里讲一个有意思的事情,目前我们在用主要分头条渠道和其他渠道,在一个装修网站的投放上,其他零散的剩余流量的表现要比头条渠道好很多,这可能意味着我最初对流量的认识和人群的习惯认知有偏差。转念一想,这其实就是流量意识的一个具体运用,至于各种 xx 意识,其实就是了解内在的分布规律,然后去利用的高大上说法,这样看来,政治书诚不我欺。在这里我还是一个小学生,还要继续努力才行。
日益感受到对生活和对工作的责任,成年人的世界里虽然没有容易二字,但是满满写着都是责任呀。
原文 http://wdxmzy.com/life/yanzi-11/2019/07/21/