经过这一段时间项目的洗礼后,我明白很多时候项目的技术要求是跟项目的阶段挂钩,不要第一眼看到别人项目代码不好看就说不行,可能我到人家项目当时的阶段做的还不如人家,当然事实也正是如此。项目的阶段深深的影响到你的技术成本和技术的层次,这也要多感谢@文斌,这时候我已经深深明白境界就是境界的意思。

项目的阶段

ps: 针对中小型项目,我的理解

项目初期

在项目刚上线,初运营时,因为产品流程可能会调整,这就会造成会一直迭代,其实技术的的侧重点不在多么牛x,而在可以快速的迭代以来跟上产品脚步。并且其实代码在这时候是不需要什么优化的,因为可能会面临:发现bug->修改bug->上线 这一频繁的阶段,并且这个阶段的周期可能会在1天,乃至一会。

代码应该劲量的放低技术点,技术没必要多么花哨,其实可以实现功能就ok,你写一堆很牛b的代码,如果明天这个功能就会被替换你能忍受么?

代码合并,压缩? 其实也没什么必要了,这样倒是更好的发布上线。什么?你在担心速度慢?在日UV没达到5K的时候我想cdn可以搞定这些。当然也不贵。

你做的最多的应该是用户反馈问题,你修复她。总而言之,你所有的技术应该围绕产品走,应该只有挣钱才可以进入下一关,如果不挣钱即使你技术再好请问有用么?

项目稳定期

这时候通常就是项目的流程大体定了,且有一定的用户群体,这时候你会考虑以下:

  • 前端代码结构的梳理
  • 是否考虑模块化,当然可以全异步,cdn不是吃干饭的
  • 用户体验,比如用户在点击按钮频率达到4次/s总不能报错吧?

项目升华期

到这时候通常项目已经可以很稳定的盈利和运行了,且你的团队也会有可观的人数支撑,那么你可能会考虑:

  • 代码规范
  • 接口规范
  • 文档的完善
  • 代码压缩,合并
  • 是否考虑单元测试
  • 整个前端项目编译过程,是用命令行呢,还是做成可视化界面

项目牛B期

其实我没有经历这步,这步也通常是指牛x型公司吧,比如美团,百度,阿里之类的吧,以下是我想象的:

  • 专用VIP CDN服务
  • 为了提高速度常常把样式合到当前文件
  • 有一套成熟的开发模式和上线流程
  • 各种压力测试
  • 开发的分工更明确

以下专为FED原创,其他地方绝无翻版

使用什么框架?

现在前端模板一直在快速的发展,且应用的库相当多,比如prototype.js,jquery,kissy等,还有很多框架,如:angularjs,jqm等,包括很多前端脚手架,如coolie,fis,fekit等,其实这些很牛但不一定适合你,你应该根据自己项目阶段和团队人员能力来整体的寻找一个平衡点~

要考虑的是:

  • 项目阶段是否需要这么做
  • 这么做带来了什么硬性的好处
  • 这么做给团队带来了什么困难
  • 团队成员流失是否会造成影响
  • 新员工对模式的接受能力
  • 快速迭代的能力

不要出现的

  • 员工离职后模式无人维护
  • 团队很抵触或者成员不配合
  • 不适合项目现阶段

如何推广应用新的模式

说这里前,我先说下我的经历:

我曾(2012)就职于北京美天,面试时跟ceo聊的很来,然后我入职,给我的title是新版负责人,于是我入职后就先拿一个频道改版试点,然后成立了以下的功能:

  • Api接口文档,把所有的接口说明都记录下来,并严格按照文档来码字
  • 公用js说明文档,公用js注释必须规范,使用jsdoc生成文档
  • 页面规范文档,页面统一的结构优化,加载优化,各种前端规范性的文档
  • 前端模式,使用的namespace方式,以模块化思想存放文件,使用nginx concat合并请求,分公用,频道,私有三大块

然后经我独立应用一个频道试点后项目挺好,然后让所有的开发者应用,但接着问题就来了,因为团队可能遇到形形色色的人,经验尚欠的我遇到致命的错误,这种模式别人并不关注,很多人只想安逸,于是半年多后我离开了,这也使我明白了许多~

一次必然的机会,我与@昌老师聊起此事,他分享了下他推广新模式的经历:

他以一个后端主管进到A公司,发现整个php的架构渣的要命,然后他并没有说什么,他默默的工作了近2个月,他把现有框架熟悉了一遍,并把几大致命的遗留问题记了下来,然后他召集组内所有的phper开会,就现有代码说了几点:

  • 现有代码好维护吗?
  • 现有代码开发新功能痛苦吗?
  • 你们愿意改变现状吗?

很明显得到了大家的共鸣,看来大家也是一致认为现在的代码不怎么帅,然后他并没有急着去改,他去找技术总监聊了聊现在模式问题,比如现模式对新项目的接受能力,维护的成本,然后说了也重构,重构之后的提升,头听到后感觉挺不错让其放手去整了,然后还是没有急着去改,他把从进公司以来写的改版方案拿了出来,比如规范,然后在技术团队分享,并互动,然后经过几次分享后得到一个大家都认同的开发模式,然后分任务的逐步去改版,大家很开心,领导很开发,他也很开心,现在整体早已经改版完成,大家只需要按照规范做事,当然这个规范不一定是语言上的规范,这是以公司立场上的规范,大家都以这种规范做事后可以相互的修复代码~

我总结了他的推进的特点:

  • 没有太着急
  • 没有锋芒毕露
  • 得到下属的认可
  • 得到上司的认可
  • 分阶段进行应用

整个与昌老师的谈话使我茅塞顿开,感谢昌老师~