
# 暑假到入学
- 本科毕业准备入学
- 本科学术背景
- 兴趣爱好
- 为什么要读博士
	- 读博的目标，期许？

# 第一阶段 - 上课，实现简单项目，听讲座，积累
- 新同学，美本同学，从国内名校来的，博士研究生，感觉周围的人都很聪明
- 新课程，比本科更加有趣，也更有挑战性
	- 学习任务也重，还经常熬夜
		- 上机器学习课，连续好几天从早写代码写到晚上，连续十几个小时
		- 任务太多，强迫自己只睡五个小时，不过只能坚持一个星期
- 新博士学习内容
	- 找自己的兴趣的领域
	- 找导师
	- 导师下达第一个项目，导师叫我上他的课
		- 自动改分项目
			- 还去顶级大会作了海报演讲
				- 刚开始还没有主动去申请专门给新博士生的海报演讲的资金，导师很不高兴，还好系里面新博士生都有2000块
			- 特别紧张
			- 没有跟chris还有导师沟通好谁去演讲，导致惹恼了chris，最后说清楚了就没事了
	- 助教
- 新生活
	- 一个人住，自由
	- 朋友也不多，专注学习
- peer eval项目，跟joe合作，第二年，同时在上机器学习课
	- 在google web app上面搭建了给几千人用的网页，用来收集数据
		- 基本上没有出什么大问题
		- 有一个bug，不过因为logging足够，一个小时内就把问题解决了
	- 数据收集的不错
		- chris也指导我如何分析数据
		- 我们发现如果有同行评分的话，打分的质量也会提高
		- 投了KDD，没中，因为方法太简单
		- 接着投www，中了，2015年5月份演讲
			- 这是我第一次演讲，导师让我先给各个老师演讲一遍
				- 准备的时候自我感觉良好，因为大学的时候上过演讲课
				- present给老师的时候一团糟，因为都10多分钟了，都不知道我在做的是啥，说的太抽象
				- 重新回去准备，导师给了大概的演讲模版，回去根据模版重新调整内容，给chris练习了一遍，基本上就没问题了
			- 后来去了意大利演讲
- 代码补充项目，第三年
	- 导师帮忙想出来的一个算法，效果还不错
	- 自我感觉良好，问了一下导师博士的进度，导师回复说不错。当时在惠水

# 第二阶段 - 研究项目困难，停滞，不感兴趣
- 继续做代码补充项目
	- 自己想了一下，目的就是要输出一个正确的能运行的程序
	- 然后自己还想了一些能让算法更快的小技巧
	- 可是之后很快就遇到了瓶颈，不知道下一步如何走
	- 开始考虑要不要从python换到C，因为这样会有更多的类型去让算法更快
- 导师开始提出我的不足之处
	- 不主动去听别人的演讲
		- 自己反思，主要是对别人演讲的内容不感兴趣
	- 不主动去各种关于研究的活动，社交
		- 不喜欢社交，不喜欢跟别人聊我的研究，主要是对自己研究的东西热情不高
	- 开始给自己接下来的博士生经历蒙上一层阴影
- 导师突然拿到了darpa的筹款，数额很多，然后还有很多其他好学校一起合作
	- 我突然读到了关于游戏研究的论文，很兴奋，给导师发了邮件说想换方向
		- 导师没有马上反对，叫我开始读关于逻辑AI的书还有论文
		- 导师开始把darpa的项目交给一个刚进组的同学XR做
			- XR是从研究生转的博士，开始问了我好多导师还有博士的问题
		- 导师其实没有问我接下来到底想做什么东西，感觉就让我开始积累知识
		- 我也开始读相关论文，找找有什么问题可以做
		- 同时也开始上逻辑课，很难
		- 花了大概两三个月时间去思考项目
			- 本来还想做围棋AI，被导师拒绝，
			- 没想到过了大半年alphago就出来了
		- 后来实在想不到项目，导师也问我能不能换回原来的项目，XR进展也不是特别好，他打算换导师，于是我又重新接手代码补充项目
	- 导师提供的指导有点少了，darpa那边也需要一些项目来证明成果
	- 拿到grammatech的实习机会，其实就是去把代码补充项目重新做一遍，目标程序语言从python换成c。这是第三年结束暑假，2015年
		- 跟小橘子开三天车去cornell，然后开去纽约
		- 花了一个多月的时间在grammatech做一个特别小的项目，同时做代码补充项目，给darpa交差
		- 实习也很累，白天上班，晚上回到家还要接着做代码补充项目，但是还是给自己留一个多小时的时间休息
		- 最终实习结束，跟小橘子开车回德州
	- 回去接着做darpa的作业，做了几个月，顺利交差
- 可是代码补充项目依然没有大的进展
	- 算法没有什么改进
	- 目标就是选一些经典的算法代码来进行补充，然后算时间
	- 跟导师一起写了一篇论文
		- 投了顶会，popl好像是，可是没有中，原因是算法太简单，文章没有新颖的地方
		- 跟导师聊到底怎么改进
			- 我一点想法都没有，对于我来说这个项目根本就做不下去了
			- 导师也没有什么特别好的想法，他就一直问问题，估计想看看两个人能不能想出来什么好点子
			- 最后决定做做human study，看看这个工具是不是到底能够增加编程效率
- 第四年下半年，开始准备博士资格考试，2015年12月中拿到reading list
	- 导师问了其他老师，然后给了一堆论文还有书籍，让我学习2个月左右
	- 我也跟同学打听，同学就说你就拼命学，有的同学就说其实到时候不会很难
	- 我学的很慢，知识很难，而且系里面就我一个人在准备这个领域，没有同学问，没有任何反馈
		- 第一次考试，完全不知道老师们想问啥，我也只能很抽象的在那比划，希望能够大致上描述出来问题的答案。
			- 看着老师的表情，很明显能看出来这个不是他们想要的答案，每一题都是这样。
			- 毫无疑问，第一次考试完全考砸，导师当时也没有说什么，说之后找个时间聊聊
		- 跟导师一起吃了个饭，说我看论文根本就注意里面的细节逻辑，重点都找不到，之后每个星期都要跟我检查我学习的进度
			- 每个星期都会跟导师讨论，有反馈了就知道自己的进度
			- 可是内容还是有点多，时间有限，总是有学习不到的地方
				- 问了chris应该学啥，他说了几个经典的问题，可是我自己根本没时间去学，后来考试他问了同样的问题，我回答不上来
		- 第二次考试多加了一些内容，多加了一个大佬
			- 问了一些问题之前因为跟导师沟通过，回答上来了
			- 可是还有70%的问题答不上来，或者根本不知道他们问的是什么
		- 小橘子在门外等着我考完
		- 最后过了，可是导师把我叫到他办公室，说学习内容不要死记，要从论文里面把内容抽象出来，达到更深的理解。
			- 不就是透过现象看本质吗
		- 考完试，终于可以回到代码补完项目了

# 第三阶段 - 决定入业界，准备毕业
- 资格考试结束，再加上darpa的折腾，决定入业界
	- 导师说毕业最低要求是要有三篇一作，master之前的都不算。
	- 现在已经是第五年了，第一篇一作还没有发，还在改，第二篇还都没有开始想
	- 看到周围去学术界的同学，他们毕业的时候都至少有4-5篇一作，而且去的地方还不一定是最好的学校
	- 自己并不喜欢做研究
		- 不聪明
		- 不喜欢社交
		- 不喜欢旅行
		- 对自己研究的东西不热情
		- 回想之前的经历，最开心的时候还是写代码
	- 决定入业界，开始找实习
- 接着修改代码补全项目，第五年
	- 开始加入human study到论文里面
	- 特别讨厌做human study，因为要招人，给补偿，而且不一定还会有人愿意
	- 只能搭建一个特别简单的界面，一个一个办公室敲门，找同学去做
		- 最后大概找到10几个，结果的确是有工具更快
		- 也是当然，因为我已经规定好了输入输出的格式，在这个框架之下，我的工具一定会让效率提高
		- 可是这个框架并不一定反应真实编程的环境，当然，这个我没有写到论文里面
	- human study在第五年下半年做完
		- 投到了ICSE，软件工程顶会
- 第五年下半年开始准备第二个项目， API refactoring
	- 一开始完全不知道如何找下一个项目
	- 导师指导说，第一个项目能改进的地方在哪儿
	- 我想了想第一个项目的缺点，找了一些可以改进的地方
		- 代码补全如果遇到了API不一样的话，那就不能用
		- 如果能够给代码从一个API refactor到第二个API的话，这个问题就会解决
		- 于是可以做api refactoring
		- 可以从一堆代码库里面学习不同api的映射
		- 然后通过映射可以做api转换
		- 于是开始分析代码库
- 第五年也同时开始找实习
	- 投了各种大厂，google，facebook，mozilla，ibm，jetbrain
		- 同时一直在刷题
		- google电面问了binary search，没有回答好，几天之后被通知没有过
		- mozilla面的是研究员的职位，过了电面，第二面的时候问了一些博士经历
			- “你在博士的时候，最有挑战性的经历是什么”
			- “我在搭建代码补完项目的系统的时候，系统需要马上跑程序来判断生成的程序是不是正确的。然后我网上找了好多资料，试了很多的库，最后我还是写出来了一个很快的系统。
			- 后来就被通知没有过，后来回想了一下，估计我的答案一点都不想是做研究的，反而像是做程序员
		- jetbrain回了邮件，给了一个面试项目，目的是考核编程能力还有沟通能力
			- 我花了一个星期去准备，文档也写的很完备
			- 过了第一面，然后第二面是视频面试
				- 编程问题很简单，面试的时候面试官还不知道为什么离开了一会，让我自己在写，面试官也很放松，给我的感觉就是他很慢，感觉不是很sharp，像个老头
		- 同时facebook一直都没有消息，小橘子劝我应该找找系里面的同学内推
			- 于是硬着头皮找了一个不熟的同学内推
			- 很快简历就过了，赶紧安排电面
			- 第一面的面试官是个中国人，能听得出来，问的问题也中规中矩，基本上都答得上来
				- 第一题之前刷题也刷到过，为了不暴露，稍微多花了点时间
			- 第二面也是中国人
				- 第一题跟第一面的第一题一摸一样，我心里面高兴了一下，很快就答完，赶紧开始之后的题目，
				- 最后结果也是中规中矩
				- 面完之后半个小时，面试官给我打电话，说第一题是不是之前问过。
					- 我说是的，他说为什么不提，我说我不知道是不是你们故意的，然后他说以后这种事情要说
					- 挂完电话我就分析了一下，如果他们不算第一题，那之后我也打对了之后的题，应该不会影响太多，但是还是稍微有点担心
			- 到最后还是拿到了实习机会
				- 看到包裹，一个月五六千的工资，还有免费食宿，包机票。瞬间很期待去facebook实习
				- 一开始分配的实习组是做机器学习的，不是很感兴趣，后来跟导师打听，正好他有个认识的同事做编程语言的也在facebook，可以去找他
				- 跟导师的同事聊了聊，发现挺适合，然后他帮忙把我调到了flow组，这下更加期待了
			- 最后我也拿到了jetbrain的实习机会，可是facebook的包裹实在是太好，于是婉拒了jetbrain
- 开始在facebook实习
	- 刚开始遇到实习导师很紧张，介绍的项目也有趣，也有挑战性
	- 碰到了大学的同学chiam，他来接机，还帮我开了公寓的门
	- 代码质量不错，跟组员也有一些沟通，但是不多，因为自己的作息习惯跟大家不一样，经常自己吃饭
	- 中期评估，一切都不错，就是需要加强跟组的沟通，要跟大家吃饭，只有委屈自己跟大家多吃饭了
		- 周围的一些实习同学稍微有点压力，我还好，因为我最后不是很想来湾区，拿不到转正机会也没关系
	- 到最后，项目实验不是很成功，不过导师还是很给力的让我写了一个工具出来，给组里的人演讲了一下
	- 拿到了转正机会，可是不是很开心
		- 因为转正的地点是在湾区，austin没有程序员的职位
		- 一开始不想去，还投了austin本地的公司
			- 最后小橘子说服了我接了offer，入职时间是19年初
			- 哭了一场，因为毕业了就要跟小橘子相隔更远了
- 实习完，第六年
	- 代码补全项目终于中了ICSE的会议，18年暑假演讲
	- 接着做第二个项目，抓紧时间写第二篇论文
	- 9-10月份要做博士毕业论文的proposal
		- 导师说基本上就是把毕业论文演讲一遍
		- 我就把slides都整理好，加上第二篇api refactoring一起演讲了
		- 演讲完，chris说，那你的timeline呢？
		- 我当时就愣了，什么timeline？
		- chris说propose的时候需要给timeline，说下一个项目什么时候结束，什么时候做毕业答辩
		- 因为我要准备毕业了，所以给了一个不是很现实的timeline，大概是18年初把第二个项目做完，然后准备答辩

# 毕业，工作


