项目的阶段和技术模式
经过这一段时间项目的洗礼后,我明白很多时候项目的技术要求是跟项目的阶段挂钩,不要第一眼看到别人项目代码不好看就说不行,可能我到人家项目当时的阶段做的还不如人家,当然事实也正是如此。项目的阶段深深的影响到你的技术成本和技术的层次,这也要多感谢@文斌,这时候我已经深深明白境界就是境界的意思。
项目的阶段
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
开会,就现有代码说了几点:
- 现有代码好维护吗?
- 现有代码开发新功能痛苦吗?
- 你们愿意改变现状吗?
很明显得到了大家的共鸣,看来大家也是一致认为现在的代码不怎么帅,然后他并没有急着去改,他去找技术总监聊了聊现在模式问题,比如现模式对新项目的接受能力,维护的成本,然后说了也重构,重构之后的提升,头听到后感觉挺不错让其放手去整了,然后还是没有急着去改,他把从进公司以来写的改版方案拿了出来,比如规范,然后在技术团队分享,并互动,然后经过几次分享后得到一个大家都认同的开发模式,然后分任务的逐步去改版,大家很开心,领导很开发,他也很开心,现在整体早已经改版完成,大家只需要按照规范做事,当然这个规范不一定是语言上的规范,这是以公司立场上的规范,大家都以这种规范做事后可以相互的修复代码~
我总结了他的推进的特点:
- 没有太着急
- 没有锋芒毕露
- 得到下属的认可
- 得到上司的认可
- 分阶段进行应用
整个与昌老师的谈话使我茅塞顿开,感谢昌老师~