工作差不多也一年了。回首一年前的自己，感觉学到了太多东西。总结一下。

* 以前的自己有种得过且过的思想。虽然很擅长做一个快糙猛的demo出来，但面对其中稳定性等等问题，往往就不太想去修补完善。或者在工作中看到了一个可疑的现象，自己提了一个解释，好像可以说得通，就放在那里了。也没有积极地多想想或者做实验去验证。这有两个原因，一个是能力不足，因为修补完善或者仔细分析在当时的自己看来是一件相对比较难的事情，所以不会去做。如果能够像搭demo一样熟练地打出来的话，也不会拖拉。第二个原因是没有养成[追问的习惯](/tong-guo-prompt-engineeringti-sheng-dui-ren-lei-qiu-zhu-de-xiao-guo.html)。现在看这样的问题已经改善很多了，一方面能力变强，即使做相对复杂的系统也不会觉得无处下手，一方面也有了发现问题和追问的习惯和能力，做东西能深入的探究本质原因了。
* 关于工程能力，还有一个变化是现在更有韧性。以前业余项目卡住了，就往往扔在那里，一扔扔半年。究其原因是不太知道怎么继续进行，虽然理性上知道啊可以上网搜索，可以看书设计实验，但在感性上还是觉得这是个很遥远的东西（就是不熟练），所以潜意识里面就不愿意去做。但现在在直觉上就会很自然地，"啊，卡住了？去搜索好了"。
* 还有一个类似的东西是工程上的人际。以前一旦涉及到要跟人讨论什么东西，就觉得啊，好烦，压力好大。在工作的时候不知不觉也会做一些低效率的事情。比如明明去问一下两分钟就可以解决的东西，非要写一个email，不仅耽误写邮件的时间还要等。现在就会更雷厉风行一点，想到什么东西会比较舒适地去问，对熟人和不熟的同事都这样。在开会/讲座的时候也可以比较舒适的提问题，当场就把弄懂。

总的来说，一年前的自己处于"道理我都懂，但做不出来"的程度，现在到了一个不仅懂道理，而且能很快的做出来的境界。虽然很多时候还是能感觉到比较稚嫩，但在执行力上面有了很多进步。在此之外，还有一些小的感悟：

* 做任何事情，不仅是科研还是工程，第一件事都是要定义一个量化的指标。然后再去优化这个量化指标。否则很容易陷入一个怪圈，就是一拍脑袋觉得这个地方要改进，哐哐改好了，结果发现按下葫芦起了瓢，别的地方又出了新的问题。所以一定要用一个代表性的量化指标，来综合衡量项目的质量，这样才能始终保持全局的意识（situational awareness）。
* 能自动化的东西要把它自动化。很多人有一个误区，觉得自动化只是为了省时间，所以一些跑个三五次的东西就没必要自动化了。这是对的也是不对的。自动化的确是为了省时间，但它不仅是省了做事的时间，更重要的是省去了人手工做，做错了复查的时间。如果一个东西要做第三遍，不要犹豫把它搞成一个自动化，至少是半自动的东西。

要改进的地方也挺不少的，主要是以下几个方面。

* 一个是毛躁。东西做快了就容易出错。解决方法是cross check，从不同的角度算几个数看能不能对的上。类似工程上的测试驱动开发（test-driven development），在做一件事情之前先想好这件事可能的结果是什么，怎么去确定它对不对。这样看到结果的时候心里会有个数。最近能看到这方面的改善，但还需要再加强一下。
* 还有一个是paper读的有点少。和业界进展有点脱节。未来得把业余项目往比如深度学习上面靠一靠。

也许有同学对我在公司里做什么比较感兴趣。我的角色主要是三个：

* 第一，全栈开发。从相对底层的c++服务，load balancing, cloud management，到中层的infra，上层的机器学习训练数据爬虫，训练，调参，甚至离用户很近的iOS开发都有涉足。
* 第二，上面这点给了我对Bing以图搜图一个相当综合的认识。在这个基础上，我总体负责搜索质量的维护和改进。有什么以图搜图很奇怪的结果，会先送到我这里来进行分析，看可能是哪个组件出了问题，然后再分给其他组进行具体调查。
* 第三，作为搜索质量的owner，我参与以图搜图各种量化指标的设计和评估，保证这些指标能反映用户对于搜索质量的期待。并且和同事们一起把这个指标的自动化测量系统和相关的调试设施做出来。

我们组最近也在招人。如果你对以图搜图感兴趣，并且有能在美国合法工作的身份的话，欢迎在下面留言，我会和你进一步联系。
