实习月报(上)

大暑已至,实习的日子也过去了一半。在短短的四周中,接触了不少新技术,也总结出了许多经验。

  1. 思想理论对于编码实践有着极其重要的指导作用。

    月初逛论坛时看到一条回复:

    标题:前端的技术更新换代速度是不是有点快? - V2EX
    作者:@xuanbg
    回复:MVC 模式还是 76 年提出来的呢,前端的同学用上才几年。。。

    大概十多年前,互联网还没有前端开发者这个概念。由于当时网站基本使用表格布局或 Flash,而不是如今的 DIV + CSS 的布局,前端开发工作基本由后端完成。许多站点通过将前端代码硬编码于后端代码,配合 iframe 和后端语言的 include 语句,构造标准的表格式单页。

    Web 2.0 技术之后,UGC 内容逐渐成为主流,前端技术也不再局限于简单的表格布局,各种技术栈百花齐放,诞生了 jQuery、Dojo 等一系列开源 JavaScript 框架。CSS3 与 HTML5 标准的出现也极大地推动了前端技术栈的发展,人们开发出各种炫酷的交互动画,甚至可以通过 WebGL 实时渲染 3D 模型。Bootstrap 等前端 UI Kit 的出现则将前段开发者们从手写代码中拯救了出来,模块化的响应式布局成为主流,Web 前端页面的基本构建逐渐变得简易上手,由此也催生了一大批前端培训班。

    在我看来,一个优秀的前端工程师除了掌握各种 Web 技术与开发框架之外,还需要具有一定的审美能力与设计理念。对于 to B 的产品可能不需要考虑太多用户体验上的需求,但是如果是面向普通用户,用户体验很大程度上影响了用户留存与活跃时间。

  2. 慢下来,提高代码质量。

    没经验没能力的软件开发团队一开始就冲刺/加班加点地加新功能,几个月后就慢下来了,所有时间都在修 bug,没精力去加新功能。

    —— 软件开发过程中,先慢下来,才能将来跑得更快

    前期开发过程中缺少 Code Review 及自测等评估环节,加上一些不合理的产品设计,我们耗费了大量的时间在变更需求和寻找代码缺陷上。和一位曾在某一线手机厂商工作的朋友聊起工作流,其公司生产环境代码小版本一月一更,大版本甚至一年才发布一次。当然,处于开发期的项目迭代本就应该比维护期的项目快许多,但是如果不使用 CI/CD 以及自动化测试等解决方案,后期推进将变得非常困难。

  3. 预留数据审查中间件,做好安全措施。

    如果发现一个产品在安全(包括但不限于权限管理)方便不讲究了,说明他们内部在为 KPI 赶进度了。因为安全领域是花费最大却看不到成果的地方。

    —— [email protected]老毒师

    2018 年是区块链的风口,但不知有多少交易所和私链因为代码缺陷所致的安全问题而崩盘,无论是运营者还是用户都损失惨重。但就目前看来,各个项目(除了互联网金融方向)的开发过程中仍然是业务线优先,安全、风控最后。在我们的项目初期,前端未考虑对用户做防呆设计以及数据预过滤,后端也基本未对接口数据做鉴权或合法性校验。作为一个暴露在公网的在线服务,是非常危险的。

  4. 产品需求一定要明确,做好任务进度可视化。

    在前段时间的课设中,我们尝试应用了 Github Kanban 作为敏捷开发管理工具,对项目进度进行把控。作为一个辅助工具,它并不具有什么魔幻能力,但却能直观地掌控项目的功能粒度上的开发进度,优化需求下发流程。使用 IM(如微信、蓝信等即时聊天工具)及电子邮件作为需求下发方式的形式是一个没有缓冲区的 [生产者-消费者] 问题。通过引入看板作为缓冲区,开发者完成手头任务后即可查看后续需求,产品经理也无须为此在群里 at 全体成员,打断所有人正在处理的事情。这不仅可以避免开发人员工作时间不饱和,还有助于提升开发效率。