27届 在字节实习有感!!!
1. 实习有什么作用
看到漫天的帖子都说实习是为了找工作,进大厂,但是这是建立在你已经确定好要工作的情况下,其实这个时候实习就是你必须要经历的一部分了,但我想说的是实习对于还没确定方向的同学来说有什么作用。
1.1. 对大厂祛魅
经历过实习之后,你就知道工作到底是在干什么,做一个需求需要经历什么,每天的工作强度是怎么样,不是说你进了大厂就能接触到多么厉害厉害的技术,相比于华丽的代码,线上的稳定性更加重要,再好的设计模式也比不上0bug的舒服。但是这不是你写屎山代码的理由,在保证稳定性的基础上,去优化自己的代码。
上班之后你就知道双休是多么舒服,在上学的时候不觉得,上班之后周末的两天超级爽,尤其是周五的晚上,又可以早下班又可以熬夜玩,不用担心第二天会晚起。而且上班上一天和上学上一天完全是不一样的感受,上班你会有各种事情的插入,你必须随时保持精力去完成布置的任务,突然拉你一个会让你排期你也得马上拍板,上课想上就上,不想上就不上,无所谓都。
1.2. 确定你的方向
实习后,你就能大致了解工作是一个什么情况,你可以想象之后如果你入职了会是什么一个情况,你能否接受这种强度的工作,对比在学校读研,哪个你更喜欢,(这里还是建议去稍微规模大一点的公司实习,在小公司实习会更加打消你对工作的热情)。经过这样一对比,你应该能确定你到底想走哪个大的方向了。
对于已经明确有目标的同学,做业务可以让你体会到各种业务的不同,组内的氛围,强度,还有晋升的方式,可以为你之后选择一份合适的工作起到很大的作用。举个简单的例子:tob和toc的业务就有很大的不同,tob业务需要你有很深的业务理解,各种概念,元数据、同步链路等等在toc 可能都不常见。
2. 实习学到了什么
2.1 如何沟通
沟通是一种非常重要的能力,可能在学校的时候,你能跟你的老师聊的很好,但是在职场中,沟通能力完全不一样,怎么样以非常简短的语言让别人知道你在做的需求并且你希望别人能帮你什么,这个能力非常非常重要。不能是你啪啦啪啦说一堆,然后别人再挨着挨着回来问你,这样沟通效率非常低,本来10分钟可以解决的事情,非聊到了半小时,甚至还要拉上你的mentor来交涉,这就非常的没有必要,在离职之前跟mentor one one 的时候就提到了这一点,虽然是实习生的通病,但是非常重要,对职业发展来说都是很重要的事。鼠鼠这方面还需要多锻炼。
2.2 写代码不是最重要的事
甚至可以说写代码是最轻松的事情了,做一个需求有比写代码需要花费精力更多的说,比如前期的调研,比如跟qa聊冒烟case的时候,一个好的技术方案,可以让你的代码写起来更轻松,bug更少。我甚至觉得技术方案的设计是最需要花时间的地方。所以,如果做好调研,如何考虑全面,怎么样减少复工,做一个靠谱的开发工程师,这些是必备的技能,字节的1-2的要求就是做一个靠谱的开发工程师。这种做事的方式,虽然不会让你之后的职业发展锦上添花,但是没有养成好的习惯,会在很大程度上影响你之后的发展。
2.3 多问哪个好而不是怎么做
作为一个实习生,多问是必须的,但是怎么问,就有讲究了,如果遇到问题就问你的mentor,可能一时间也没法给你一个明确的方案,非常浪费大家的时间。你要怎么做呢,你应该是给出自己的思考过程,给出两、三套方案,让你的mentor去评估哪个更好,这样一方面可以减少帮助你的人的理解上下文的时间,一方面能更容易讨论出思考过程的问题,甚至讨论出更好的方案。一个好的方案永远是讨论出来的,不是谁一下就想出来的,不要做一个没有思想的木偶人,学习优秀的人的思考过程,之后你看待问题的角度才会多元化。
2.4 对不合理的需求说不
一方面是对接PM,不是他们说什么我们就做什么,有的需求很不合理,会把现在的代码搞的一团糟,之后难以维护,对于这种需求,我们要坚决说不,让他们给出第二套方案,或者我们给出一套方案,让他们去问客户能不能接受。所以在tob的业务中,业务理解很重要,因为研发就是半个业务方,对于toc的业务,你自己本来就是用户,对于PM提的需求,天然就能理解。
一方面是安排给你的任务,不是说让你这样做,你就这样做,你可以有自己的想法,虽然有可能你这样的设计是错误的,但是这就是你提升的地方,之后怎么不提出这种错误的设计。还有就是上游的不支持,比如说你本来就只需要部分数据,但是上游只提供了一个查询全量数据的接口,那么你能不能让他们提供一个这种接口,而不是让你拉全量你就拉全量,然后自己在内存中解析。对于实习生来说,你可能很难推动这种横向的事情,但是有这样的思考,就能不做一个“傀儡”。
这只是鼠鼠的一点点理解,鼠鼠对业务的理解和对职场的理解还非常浅显,有说错的地方,看个笑话即可。