“拥抱变化”暨阿里巴巴暑期实习小结

2,027 阅读6分钟

我想谈谈自己学生时代最后一个暑期的实习经历,对于实习,我收到了一些邀请,最终选择了去阿里。在本文 我会谈谈这段实习经历的工作、学习、收获,最后也会谈谈我对“拥抱变化”的理解。

谈谈实习内容

其实很高兴能够进入阿里实习,不仅仅是感受公司的实际开发环境,更多的在于遇到了一群可爱的同事们。主管和带我 的师傅对我都非常的好,此外,主管还根据我的兴趣给我安排了新技术研究的实习内容,与一般的业务开发不同, 我能够更自由的去接触新技术,足够自由的在内部系统开发中使用新技术,探索新技术在业务场景下的可能性。

模块化构建

模块化构建是我在阿里实习期间的第一个任务。大致的需求是为了满足JavaScript前后端代码开发的一致性,使 浏览器端代码保持和Node端代码一致的编写方式,即都遵循CommonJS风格的书写方式。该需求是国际站内部Node 框架模块化方案的需求之一。

通过构建,能够让代码同时运行在服务端和客户端,并且解析代码中的模块依赖关系,输出模块的依赖字典,并 格式化模块的命名。为了配合构建器的工作,在浏览器端还需要实现一个模块Loader,使其能够运行构建后的 模块代码。你可以理解为实现一个轻量级的browserify.js[1]。大致的过程可以用 下图来表示:

收到这个需求时,除了Loader的实现有点思路,对构建思路几乎不知道如何着手。师傅推荐我从JavaScript的 的语法解析入手,分析源代码的语法树,从而去实现这个需求。于是花了一天的时间理解JavaScript抽象语法树 的基本原理、方法、工具,感兴趣的可以参考我之前的一篇博文 JavaScript的抽象语法树与语法解析[2]。 大致原理就是将代码转换为一棵树,然后通过对树的遍历操作完成CRUD操作。这样,你可以完成代码结构的调整, 模块依赖的输出,模块名称的标准化命名等。

对于模块Loader的实现,其实也更为简单些,因为有很多可供参考的思想,例如AMD的RequireJS[3] 方案,CMD的Sea.js[4]方案,还包括百度的ESL[5]。 对模块化构建感兴趣的,也可以参考我之前写的一篇博文 从零开始构建JavaScript模块化加载器[6]。 这里我想感谢百度前端学院[7],因为在这里我才形成了统一的前端体系知识,也是我从一名Java使用者转为Node.js 使用者的起点,可以参考我写的一份知识点总结[8]

这是我在实习期间的第一个需求,从零开始,时长大概一周。

全栈WebApp开发

起了一个花哨的小标题,其实很多人不屑全栈这个词。Node.js的出现让前端向全栈开发迈出了坚实的一步,但要想 真正的承接后端工作,还有很长的路要走。对我个人而言,Node.js的出现让前端出现了更多可能,例如构建测试环境、 构建数据可视化应用、DEMO构建、以及开发上的协作分工都走向了一个良性的方向。新技术的出现,不应该是惧怕和怀疑, 而是应该在拥抱中学习与融入。

话题扯回来,实习期间的第二个需求是一个人完成一个内部系统的构建,大致的需求是:尝试使用React生态体系技术, 尝试接入集团一系列服务(例如统一认证、权限审核、数据库),尝试对接一些集团中间件。对我而言,挑战是什么? 一个人做PD、开发、测试?从未接触过React?或许都算吧,更多的在于我们部门没有React开发的先例,一切的困难 可能都要自己去趟,感谢师傅给我这个挑战吧。

关于React其实可以讨论内容很多,但是局限于篇幅,可以参考我最近一直在整理的React系列的分享,因为这块可以找到 的中文资料很少,所以在CSDN某编辑的邀请下,我也参与翻译了一些React的优秀资料, 可以在CSDN的研发频道[9]或我的博客找到这些文章。链接如下:

这个项目是我在剩余的将近两个月的时间里一直在做的,由于主管的新人,这完全成了我自由发挥的舞台,遇到了很多 问题,也试图用不同的方式去解决这些困难,例如Flux架构,例如组件间通信,例如同构方案……

除了这些外部技术,另一个挑战在于与集团技术的对接,这涉及到与集团内非常多的开发者打交道,可喜的是,集团内 丰富的技术体系你能学到很多知识,你也能轻松的与代码的作者联系到,遗憾的是,大家有时也很忙,没有太多的时间 促足回首,团队合作,是我学到的另一课,开发者与数据库,开发者与服务提供方,开发者与PD\SCM等。

谈完了实习内容,可能遗憾的是我并不能讲述太多关于真实的业务开发中的实际过程,因为我接触的并不多。作为一家 互联网公司,阿里内部的技术体系非常丰富,并且研发氛围也非常的活跃,除了业务开发,还有足够多的时间参与到你 感兴趣的方向上,例如工程化产品、可视化产品。我所在的部门位于滨江园区,相比淘宝、天猫、支付宝,国际站的业务 是阿里最早开始做的,技术上受其历史的影响,发展相对慢一些,也因此,可以借鉴集团其他BU技术也非常多,在其他 BU不断试错的过程中,国际站的技术体系来的相对稳定。

对于阿里,在实习期间谈不上为公司贡献了多少,更多的是自己在其中学到的成长。无论在技术上,还是在团队合作上。 我是8月31号办理的离职,9月1日回到南京后便听说了 拥抱变化[10] 的消息,而不得不面临的也是口头offer丢失的情况。于是知乎成了很多人口诛笔伐的战场。

对于这些事,我一直不想表达自己的态度,发了两条微博,最后都觉得不妥也都删掉了。工作而已,在于的是双向选择, 做好你该做的事,坚定自己的方向,世界很大,很多地方都是你没看过的,为什么不去看看?

感谢一些人

感谢致嵩、宗羽、雪卒、夜沉、天意,感谢基础产品团队,也感谢整个ICBU国际前端技术部。

最后的最后

最后的最后,因为众所周知的原因,我在求职,欢迎联系我。作为应届毕业生, 我喜欢杭州、上海,我想在技术较为成熟的公司工作与学习。