# 2017.07-09京东实习心得

2017年7月，结束了学校的考试，开始了人生中第一份实习，可以说是开始了一个新的起点吧。在公司的实习基本上是朝九晚九，每天上下班25分钟路程，北京天气比长沙好太多，所以生活方面还是蛮舒服的。٩(๑❛ᴗ❛๑)۶下面就用几个印象深刻的点来写写这次实习的收获与体会吧~

## 新人学习经验

入职后加入了用户接入部，我们部门主要是负责用户接入，也就是把所有请求接入进来，是很重要的部门，毕竟京东大部分业务的接入都在我们部门。工作上接触了很多新的东西，很多我以前没有考虑过的制度和规范。刚入职的两周，基本就是白天看各种CF上的文档，晚上春雷哥给我们培训，随着了解得越来越多，不了解的也越来越多了，所以需要不断去思考，去请教，去总结。新人学习方面，个人觉得没什么捷径，我的经验就是多看、多讨论、多请教，多总结。

**多看：**多看自然不必多说，到了一个新环境，最快熟悉的办法，一定是看知识库，那里有部门的整体介绍和各种需要遵守的规章制度，尤其是制度，这是最最最重要的。制度可以让你少走很多弯路，少犯很多错误，也可以让你在以后出错的时候更容易的发现错误。还有一点就是多看看周围的人是怎么学习和工作的，在学校接触的牛人太少，在公司天天都能见着大佬们，他们的工作态度和作风都很值得学习的。

**多讨论：**新人之间多讨论，多个人的力量加在一起，学习起来也快。特别是在自己遇到一些可能很低级但是半天都想不明白的问题的时候，最快办法的一定把问题说出来，然后和一起实习的小伙伴们一起讨论。因为自己在学习原理的时候，经常会对某些名词的含义不是很清楚，这种东西网上也根本查不到，所以基本都是问问小伙伴们是怎么理解的，听听他们的理解，自己也会豁然开朗。

**多请教：**公司为每个人安排一个导师，有问题应该主动向导师请教，但前提是自己已经尽力去解决。因为军哥平时很忙（运维的前辈们每天工作都挺忙），所以遇到什么和线上操作或者是产品有关的疑问，一定要自己先去思考，实在不清楚的时候，一定要毫不犹豫及时主动的去问！千万不能拖着，很多事情拖着拖着最后可能就忘了问了。请教的话，不清楚的地方要及时提出来，尽量不要一个问题当时弄明白了，后面琢磨的时候发现还有不明白的点，然后反复去问，要珍惜别人的时间，当然，做到这一点的前提就是在提问前对问题有一定的思考，这样才能在别人的讲解中发现自己存疑的点。

**多总结：**对遇到的问题、学到的东西要勤于总结。很多新学会的东西，如果一时半会儿用不上，那么过不了多久就一定会忘了(；′⌒`) 我在一开始的时候就有这个问题，觉得每天晚上培训的时候都有“海量”的信息涌入我的大脑，如果笔记做得不及时，或者事后因为回家太晚没有总结，要不了几天，雷哥提问的时候就大脑一片空白了- -，所以，及时总结真的很重要！总结的过程其实就是给大脑建立线索、把已掌握的知识结合成体系的过程，很多知识看起来是零碎的，但是可能两两之间是会有联系的，梳理线索的过程中可能会对全局看得比较清楚，知识点也串起来了。

## 不要轻视简单的事情

入职第四周开始跟着雷哥做机器梳理的活儿，初步了解雷哥的需求，觉得这个事情很简单，然后就开始了一堆无脑的操作，其实就是需求没对明白，大目标不明确，所以每做好一步，就要去找雷哥问下一步该做什么，而且因为目标不明确，所以每一步其实我们是不太懂为什么要去做的，后来晚上雷哥大概也发现了这么做不行，于是和我们详细的说明了一下情况，背景是京东有几个存放机器信息的数据库由于信息更新不及时（新机器上线没来得及注册、旧机器下线或者不再使用也没移除等），导致机器数目可能和实际机器数目有差异，所以需要我们梳理统计机器的信息。细节我也不多说了，大概就是求几个机器集合的交集、并集、差集等。明确了需求之后，才发现其实很简单，而且也渐渐能理清思路明确这个事情要怎么去做，每一步做什么。

还有一次，因为要处理的数据比较复杂，而且雷哥下了deadline，因为一开始没有想好代码逻辑，没有信心在deadline之前把脚本写出来，所以我们竟然蠢到要人工去完成任务，结果就是不但到了deadline还没完成。。。而且长时间人工操作简直让人头昏脑涨，数据的准确性也没法保证，并且，做到一半的时候发现其实即使是人工操作也有很简单的办法，哎，吃了不用脑子的亏，以后工作中一定一定要避免这样的事情再发生。

这次的事情也让我明白不能轻视简单的事情，即使是做再简单的事，首先都要明白终极目标，然后在终极目标下制定小目标，在完成小目标之前花足够的时间去思考怎么去做，最好能够制定详细的计划，第一步干什么，第二步干什么...不能做一步看一步。不要害怕deadline，方向错误的时候，有时候停下来，其实就是前进。要记住努力去达成目标，而不仅仅是做事。

## 对线上操作保持敬畏

可以说，从我来京东的第一天，就对服务器有种莫名的好奇，一直希望能够登上机器，看看线上情况，执行线上操作，￣ω￣= 可能是因为之前都只是在虚拟机上搭建服务器，没有操作过真的服务器，所以服务器对我一直有一种神秘的吸引力。在第八周的时候，终于军哥说手上有一批新的服务器了，需要我完成一些初始化，落实到操作就是修改IP，配置bond，可以说是很激动了，在得知需求的第一时间，我就去学了bond的配置，然后参照军哥给的脚本写了个脚本。因为bond脚本执行之后，最好还是人工去验证一下，而且机器数量很少，只有12台，军哥就建议我每一台都去执行下脚本，然后验证是不是执行成功了。在执行到第10台机器的时候，跑完脚本因为要重启network，我当时手误就写了 start，结果网络一直没启动，就卡在那个环节，然后我按Ctrl+C 也没用，卡了好久什么也动不了，我也有点慌，想着先退出登录，再重新ssh一次，结果我网络压根儿没启动，我这一退出，就登不上去了。。。最后还是军哥通过lo口地址登上服务器解决了这个问题的。虽然说没造成什么影响，但是确实也是吓得一身冷汗啊。之前听别人犯过的错，觉得线上操作有风险，但是是可以避免的，没想到自己操作的时候，觉得机器数量少，就手工现敲命令重启服务，还是掉以轻心了。我的这次小事故，如果把操作都写下来，到时候复制粘贴，或者把重启的操作也写进脚本里，确实是完全可以避免的。

这次之后，我好好反思了一下，觉得可能有时候不是心细不细的问题，人毕竟不是机器，在重复劳动时就是会有可能犯错误，有些危险的操作还是应该做安全措施。在堡垒机操作的时候，也应该有些安全措施，首先我想到的就是`rm`和`rm -f`命令，于是写了个脚本，更改了家目录下的 .bashrc 配置，把危险的 `rm -f`和 `rm`命令起了个别名，在执行这个操作的时候，会把我删除的文件移动到trash文件夹里，不过随着时间越来越长，删除的文件很多的话，可能我的trash文件夹会越来越大，所以还可以设置一个定时任务，每个月或者每周定时清理下trash文件夹。安全意识一定要从每一件小事去培养，即使是再小的操作，都有做安全措施的必要！

线上的数据真的很“脆弱”，最好及时做好备份，多处备份是最好的，而且必须对线上操作保持敬畏之心，如果要执行线上操作，必须想好可能出现的问题及解决方案，想好失败如何回滚，把每一步操作提前写好，不要打无准备的仗。

## 培养团队意识

我比较喜欢小团队，因为即使是在很大的团队里，可能每天经常有沟通交流的也就那几个人，在团队里通常每个人有不同的分工，但由于同属一个项目，相互之间肯定也会有很多交集，而团队间沟通的最好的方式一定是面对面，很多问题如果在邮件、电话或者视频，很可能会说不清楚，或者说你以为你说清楚了，但是对方理解的和你想说的不一致。能当面坐到一起沟通，做到心里有数，一起解决问题一定是最好的。之前和刘莹一起整理表格的时候，我就坐到她和孟冉那边去了，在整理的过程中需要分工的地方，需要对需求的时候，还有互相check对方数据的时候，坐到一起当时就可以解决问题，即节省了时间，又能迅速的把要解决的事说清楚。还有一点，当同事找你有事情时，态度一定要好，即使自己很忙也要先把事情说清楚；去找同事帮忙的时候，态度要谦虚，要提前准备好要说的事情，明确需求后再跟对方沟通，这其实也是节省大家的时间，而且尽量直接去找你需要寻求帮助的人，不要借助他人来传递信息，因为信息在传递过程中，有效信息是会丢失的，可能消息传到最后那个人的时候，有效的信息也不剩多少了。
 
除了完成份内的工作，团队内部的分享也是合作的一种形式，通过分享，能加深自己对某个内容的理解，同时让听众也都有所收获。我们小伙伴之间，在吃饭的时候就经常会讨论大家学的东西，分享一下，孟冉经常给我一些很有效的建议，很多时候也都能很快的教我怎么用最简单的方法去解决问题。总之，团队分享精神是很重要的，通过分享知道自己的不足，peer pressure也能让自己更快的去成长，去进步。

再有就是，即使在小团队里，也要保持与外界的互动，个人对于自我的认知通常是在和社会互动的过程中形成的，与外界的互动可以让人不至于目光短浅和封闭。一方面来说，运维这个工作涉及到的层面很多，有很多工作都需要和不同部门的人去合作和沟通，所以只有了解对方的业务，沟通起来才更有效；从另一方面来说，运维需要不断的探索新领域，学习新知识，并且运用到自己的工作中，而达到这一目标的最快路径就是与周围的一切保持互动，从他人那里学习，然后自己深入去研究和应用。

## 不要过于完美主义

我是个完美主义者，可能是源于对偏离或失败的担心，在完成目标的过程中，可能不完美此起彼伏，会让我产生一种焦虑，感觉手中有太多太多的计划要实施，反而忽略了一些真正重要的事情。

在接受一个新的任务或制定一个新的计划时，往往会花很大的精力作大量的准备工作，收集各方面的信息以便自己把工作做得更好，总是在心里默默地构思自己的计划以及实现计划的方法，以做到万无一失，认为只有自己完全准备好了，才能开始去做一件事。但是当其他人或者环境因素不允许我以自己喜爱的方式去构思和完成计划的时候，可能会感到沮丧；而且如果工作结束，其结果如果跟预想的差得有点远的话，可能会陷入自责和愧疚当中。就像如果每次饭前拿到一个新任务，在吃完饭后，我一定会马上开始构思和计划，总觉得应该规划好一切，然后睡完起来才能按部就班的把事情做完，如果没有弄完，甚至可能牺牲自己的午睡时间，其实这样很不好，这种疲劳和紧张状态下的工作可能会让我效率变低，甚至犯错。

我已经在试图改变这一点了，需要做的就是接受自己，接受失败，还有就是要敢于去面对未知的东西，接受这个世界上不存在万事俱备，然而事情的解决方法，总会比问题更多。不要去害怕deadline，努力完成目标的同时，享受实现目标的过程。


## 不要过于理想主义


理想主义要有“度”，罒ω罒，很多事情都被我想得很理想。我想只要在事情开始前做好充足的准备，就能everything going according to plan；在估算工作进度时，一个任务一周完成到大概一半，那2周就应该能够完成，而实际上，行百里者半九十，进度安排和估算是很有学问的。

在达成目标的过程中，初期设计很重要，但过度设计就很可能起到副作用，在实现的过程中不断迭代、不断根据效果优化可能是个更好的方案；还有就是在估算项目进度时，要适当的考虑项目性质：越来越难、或是越来越容易、或者是事情可能没有想象得那么简单，就像之前弄表格，可能初期体力或者精神状态比较好，效率比较高，但是到了后期，速度就可能会慢下来，还有写代码的时候，一开始觉得是很简单处理逻辑，到最后可能会因为格式编码等原因需要解决额外的问题。最后就是要考虑项目中间可能被其他事情打断，比如来自他人的求助，或者是一次会议等，总之要适当的留有buffer，不至于到最后太赶。

## 激情与学习能力

之前看到过一句话，觉得挺有意思，说的是人的一生最重要的两个东西，喜欢的工作和喜欢的人，这样白天就能开心的工作，晚上回家就能见到最爱的人。不知道是不是另一个乌托邦，但是仔细一想，确实是有道理的，所以，保持激情最重要的一点，就是保持兴趣，而保持兴趣最重要的一点，就是保持好奇，毫无疑问，一份充满挑战的工作是能让人随时都像打了鸡血的，但是不管强度多大的刺激物，随着时间的增长，作用都是会消退的，所以需要不断的去寻找类似的刺激，可以是一个有趣的项目，可以是不断成长和学习的机会，也有可能，仅仅只是通过工作获得的成就感那么简单。

学习能力的重要性不必多说，但是这里面涉及到的，可能不仅仅是领域能力，还有通用能力，比如沟通能力、分析和解决问题的能力、阅读能力、写作能力、时间管理能力、思考能力，创造力等。

简而言之，就是 Stay hungry,stay foolish.

## 技术和思想提升

一开始来京东，就是奔着提高技术来的，时间只有两个月，但是接触到了很多新的技术，花在学习技术的时间也比在学校的时候多了很多，细节的我也不列了，主要就是一些工具的使用，原理性东西的了解，实战方面自己也有试着搭建各种环境实验，还有就是我的脚本能力比起之前有很大的提升，之前军哥告诉我要带着需求去写代码，于是自己在工作中有意识的去思考能用脚本解决的问题，也写了一些实用脚本，和技术有关的一些分享都在我的博客里 [Yuki](princess.top)，博客排版和功能有点不人性化，不要再吐槽了(๑＞︶＜)و回学校我就开始优化

最后我想谈谈自己这两个月思想上的变化。运维这个工作，比我想象中的累多了，7*24小时待命，面临其他岗位没有的压力，从容量规划、上线部署、日常排障、应急演练、服务升级、监控、运维工具开发等都需要涉及，在实习的这两个月里，我也很多次的问自己，是不是真的要做这个行业，我得到的结果都是肯定的，为什么呢？一方面我想是因为我喜欢那种解决问题的感觉，不管是日常工作中的一次小故障，还是系统服务的一次新升级，都能给我带来成就感，这种成就感让我觉得我的工作是有意义的，我的人生是有意义的。另一方面，运维这个工作，要学习的东西很多，涉及的知识领域很广，能让我不断地去接触新知识，触碰新领域，带给我新鲜感，不至于让我在20多岁的年龄就“死”了，以后的人生都只是在重复20多岁的自己，这一点对于我来说，太重要了。

接触运维有一年多了，但是感觉自己不懂的依然还有很多，可以去深入的也依然还有很多，这是个发展更新较快的行业，也是个能量井喷的行业，希望自己能压制住浮躁的内心，来学习快速发展的新技术。
