2015暑期阿里巴巴实习心得

by 夏枯
实习转眼就过去了仅两月,在这两个月中学到了很多东西,无论从专业技能,还是团队沟通,都有了较大的进步,对未来个人发展的规划也有了更清晰的了解和规划。而且体验了非常棒的团队氛围,经常会有各种下午茶,还有聚餐。大家在工作之余也有时间进行交流,在实习的两个月中,认识了很多热情能干的同学和同事。
从校园走向职场,这是一个艰难而富有挑战性的转变。在这个过程中每天都会有新的心得体会,总结有下面几点:

  • 做事需要依靠团队的力量,我们不是一个人在战斗!

    以往在校园中,大多时间都在单打独斗,但是在公司中,一个项目往往由很多人组成,每个人的特长和经验都不同,有时候自己苦思冥想很久,其实问一下同事就能够被一语点醒。

  • 站在更高的视角上思考解决问题的方案。

    在我们数据团队,一个项目一般由数据层(实时、离线)、JAVA层、前端共同构建,这时候需要我们能够在更高的角度审视问题,一个问题的解决是放在哪个层次解决最合理是需要我们来思考的。做到这一步需要我们能够走出自己的狭小领域,去不断了解其他领域。

  • 不要为了技术而使用技术,最终目标是解决问题。

    技术人最容易犯的错误就是为了使用技术而使用技术,往往喜欢追求最新的最炫酷的技术。但是有时候这会适得其反。写代码归根结底是个工程问题,而工程是应问题而生的,一个能够非常准确击中问题的方案才是一个好方案,技术为解决问题服务,而不是相反。这就需要我们能够更多去了解业务场景,更深地理解问题,不站在用户痛点上的码农不是一个好的工程师。

  • 学会沟通,高效定位问题、解决问题。

    项目再也不是单人作坊式的,人一多,就需要每个人都有良好的沟通技巧,这样才不会导致人多效率下降的窘境,遇到问题,先追踪自己的问题,如果不是自己的问题,迅速向下游或者上游反应沟通,定位问题并解决,每个人都应该是项目的驱动,这样整个团队的效率就会提高很多。

  • 代码规范、要可维护

    团队中往往都是铁打的项目,流水的程序员。不然别人接手的一个烂摊子是一个程序员的良好修养的体现,所以代码规范极为重要,在前端团队中有专门介绍代码规范的新人文档,让来自不同地方,不同喜好的新同学迅速在代码规范上达成一致。

成果

在这段实习期间,参与了两个项目开发,编写了一篇文档:

个人规划与发展

优势和劣势

通过两个月实习,也了解到自身的一些优势和不足,总结如下:

优势

  • 由于之前在学校里喜欢折腾新鲜技术,所以对团队内部的开发技术上手比较快。
  • 对任务的完成时间把控比较好,能够在一定压力下顺利完成需求。
  • 沟通能力还不错,在团队开发中能够很好地沟通,一起完成任务。

劣势

  • 在编码过程中,对于一些高层次的设计模式理解不够深入,有时解决问题的方案不够优雅,总是会绕一些弯路。在这方面还需要加强学习。

专业技术

git

以往自己只是用到了git的存储代码和版本控制功能,对于团队协作功能用的比较少。这次实习让我对git工具有了更深一步的了解和运用。

分支

  • master: 线上分支,一般不轻易修改
  • daily: 预发分支
  • develop: 开发分支,大家的代码一起提交在这个分支上进行整合
  • feature: 每个人的单独分支,用于开发个人的相关模块或者修改某个bug

CSS

CSS代码的规范一直是我比较疏忽的,通过两个月的实习,在这方面学到不少好的规范,提高很多。

  • src/css
    • global:global目录存放reset.css和layout.css等对网站全局进行样式重置和布局的css文件。
    • module:module存放的是构成页面的各个组件的css文件,如果某个组件需要在页面间公用,就放到module/common下;如果只在页面内使用,就放到module/index之类的页面命名的文件夹下。
    • pages:pages目录下放置各种页面命名的css文件,这些文件里不包含任何css样式定义,只存放构成页面的所有小css模块的import代码,这样会方便我们之后对css进行合并压缩。

JS

实习中两个项目分别用了不同的架构

  • 知识中心改版:jQuery requirejs
    知识中心原有代码比较老,所以在选择改版框架时候没有激进地选择大跨度的Angular,只是用jQuery进行实现。这其中引用了requirejs进行依赖管理,并且采用了团队内部面向对象编程的代码规范,使用ngClass进行构造伪类的创建。由于没有Angular的双向绑定,所以开发效率比较低,这两个页面虽然并不复杂,但是还是花费了较长时间。

  • 天猫直播厅:Angular requirejs
    天猫直播厅采用了Angular框架进行数据驱动式开发,也是用了requirejs进行依赖管理,ngClass实现面向对象编程范式。由于之前有一个类似的项目淘宝直播厅,大部分的页面模板和业务逻辑都能够复用,因此开发比较快。只是在与后端联调的时候比较费时,这一阶段主要是接口设定没有预先讨论,并且JAVA和ETL方面沟通数据也花费较长时间。这个项目中完全遵循了现在团队的开发规范,代码比较规范。

致谢

感谢@王静姐、@小芃师兄、@文烛师兄给我这次实习的机会。
感谢@文烛师兄在实习期间的耐心指导,让我在技术方面有了更深的认识。
感谢各位热情认真的同事同学在我遇到问题时的指点。
希望你们在今后的工作生活中事事如意,BUG不再出现!