这是关于饭团的第0篇文章。相当于饭团系列博客的预览版。欢迎关注饭团项目~ PS:作者水平有限,博客偏科普性质,P7+的大神还请赐教。
所谓“工欲善其事,必先利其器”。经过多次项目实践,对项目开发工具使用的一些工具有些心得,想和大家分享交流下。这里不讨论使用技巧,如何使用还请大家自行摸索。
因为园子里还有不少刚毕业的,没有机会进入一线的互联网公司。所以我先介绍下一个项目开发过程。从我到美团,我们组新成立了两个项目。一个是美团KTV,一个就是我们的小小项目:P。期间其它组成立了美团早餐和一个现在没有对外公开的项目。所以对项目开发有一定了解。
我就直接说我做的项目吧,比较熟悉。三个月前,领导找到我和其他五个人,“因为美团新上任的领导比较看重运营,所以需要搞一个活动运营平台。”我带一个实习生做后端,另一个后端同学做指导。前端有一个主力和一个替补。前端的领导对整个项目负责。我们花了大概一周就做出个简单的活动发布系统。这个相当于园子里新同学写的小程序。唯一的目标是跑起来。这当然是激动人心的阶段。工作内容包括产品设计、页面设计、前后端接口设计、数据库设计、后端逻辑设计、前后端编程实现和代码测试。
跑起来后大家一致感叹,以后不能在一个分支上开发。。。因为代码合并的时候经常冲突。因为以前没有相关经验。所以学习和制定了Git分支管理,代码开发、测试和部署的流程。为后续的功能添加,修复Bug省了不少事。学习API设计规范后,我重新设计和实现了API。
上面项目,实际上只是在线下环境跑起来了。成熟的项目至少需要三个运行环境。一个线下开发,一个线上测试,一个线上运行。所以需要修改程序,根据不同环境自动调整配置。这其实是一个比较复杂的工作。比如线上环境需要把前端静态文件加md5后辍,发到CDN服务器。
后面,美团的美周刊
活动开始入驻。我们开始考虑监控的问题。因为需要直接处理用户请求,还需要添加缓存。因为是分布式系统,缓存出现了个bug,挺尴尬。另外需要给美周刊PC端(另一个部门)的服务器提供服务调用,所以还需要实现RPC服务。(因为这些很多依赖美团基础服务,但是我努力在饭团项目中实现它们。期待:P )
再后来,开始搬移美团的上传系统和名店抢购等专题活动。为了适应这个需求,我对项目进行了一个大手术:把原来的单一项目拆分成多模块项目。(饭团项目开始就做成多模块吧 :P )
今天和小弟一起解决了日志文件的存放和自动删除的问题。
从上面项目进展可以看到,功能开发只是一小部分。在公司做项目,很多时候都是在定位Bug,修复Bug,改进,重构,调优以及和其它人沟通。
正因为如此,在开始代码前,选择合适的工具,对项目开发就显得很重要了。因为我们的项目不是开发一个简版QQ,有很长的路要走~
团队项目通常需要一个公开的网站来管理需求,分配任务,协调开发,总结经验,保存文档。
以前在微软实习,使用的是Visual Studio Team Suite Server。简直高大上。但是好像价格不菲。而且个人感觉更用来在大公司做软件开发。
在大美团,公司使用的是Atlassian系列开发套件:
可能因为历史原因,公司使用内部的发布系统,没有使用Bamboo和Jenkins。
我曾经私下搭建了Atlassian全套系统,用于工作外的项目开发。但是这套系统贵死了。所以做了越过授权需要完成的一些额外工作(你懂的)。使用起来感觉非常棒。有时间,写一番外篇详细介绍。
虽然一些新的开源系统也有采用Atlassian公司的项目管理工具(比如kafka wiki task ),但是对于一个小型的开源的项目如“饭团”,有点杀鸡用牛刀了。
基于天朝国情,代码管理可以选择OSChina或者CSDN的gitlab。但是为了避免不必要的麻烦,我们还是选择github吧。github自带的任务、缺陷管理系统很酸爽。测试和部署,暂定Bamboo。github自带的wiki也先用着,用来写一些项目技术文档。每周的总结和计划写在博客园上。所以我们的项目管理工具是:
Github的相关工具只要建一个项目就好了。参见 https://github.com/huizhong/fantuan
博客园就用这个账号了。我会把饭团相关的文章做成一个分类。并以饭团(xx):XXX
命名。剩下测试环境和部署环境,等我们的项目有个小Demo时再搭建不迟。
如果并非大神,IDE一般能节省不少时间。开发团队项目,需要IDE能很好地支持上面的Git、Task和Wiki系统。代码着色,语法提示自然不必多说。IDE还需要足够聪明来帮助我们解决一些繁琐的问题。
Web Server程序,主流还是用Java开发。所以我们的项目后端使用Java。Java的IDE很多。我用过Eclipse和Netbeans。但是更青睐来到美团后开始使用的IntelliJ IDEA
。Eclipse像Linux一样,什么都行,但感觉很机械,不够完美。IntelliJ IDEA就够聪明。这个很难比较,用多了就知道了。我已经说服了一个同学从Eclipse转投IDEA。所以还在用Eclipse开发Java程序的同学赶紧换吧。开发Web程序,需要使用IDEA的旗舰版。如何绕过授权环节,可能需要一些努力。
写文档虽然不如写代码直爽。但是文档就像是催化剂,用得好,能显著提升生产效率。所以在我看来,文档和代码其实是一回事。只是文档不需要编译,而代码不那么容易阅读罢了。
既然写代码有专门的IDE,写文档当然也需要相应的语言和工具。因为文档写在github的wiki上,所以我们也就用现在流行的Markdown
。
接下来的IDE,我推荐广受好评的马克飞象
。也就是我现在正在用的(感谢dudu,博客园现在支持markdown了)。左边是有颜色的Markdown,右边是渲染好的页面。更赞的是能自动保存,同步到印象笔记
。我现在有强迫症,有强烈的愿望把所有写过的文档都永久保存。马克飞象有各种客户端,用起来很方便。不过马克飞象是收费的,80RMB/年。为了避免推销的嫌疑,我就不给链接了。相对于省下的时间,我觉得这钱花得值。
原型设计在大公司一般由专业的UE来完成。但是现在不是越来越流行全栈工程师么:P
敏捷开发要求码农们拥抱变化。所以现实情况很可能,功能设计,页面设计都需要工程师参与。
所以在开始编码之前,设计一个原型,即“画版图”,来评估一下,通常能减少很多不必要的工作。画版图的工具人气最高的是Axure RP Pro。和前面一样,付费软件才把用户当上帝。
有时候为了理清想法,或者设计一个流程,画图是最好的选择。Axure有这个功能。但是各人感觉不是很不好用。连线什么的太麻烦了。面向程序员的逻辑设计还是用专业的软件比较好。很多人推荐使用 processon,也有人推荐 draw.io,但是我没法忍受网络延时。所以我找了个全平台能用的 yEd。虽然界面丑,但是基本能用。欢迎推荐:P
时间就是金钱。能用钱解决的问题,咱就不折腾了。而且折腾好的东西也没正版的好用。前端时间看了一篇文章《程序员效率指南》,深有感触。硬件上,我强烈建议,尽早换Mac本和大屏幕,添加第二、三块屏幕。
MBP的优势:
大屏显示器的优势:
第二块显示器的优势:
工作前,我总是找各种破解,也迷恋Linux,爱折腾。现在感觉很不值得。把这些折腾劲花在其它地方,比如研究JVM,学习设计模式,带来的收获远大于破解软件省下的金钱。在接触苹果的产品前,我也认为那是抢钱。但是龙芯公司年会中了一个iPhone 5,大美团又标配Macbook Pro,我感觉,水果公司的产品体验真好。如果下一家公司没有MBP,我自己一定买个。投资工具总没错。
但是人还是比较看重眼前。我现在也没说服老妈,去外面吃饭比自己做饭“省钱”。。。
下面总结下饭团的标准开发环境。
上面纯属个人观点。欢迎大家推荐自己使用的工具~
一个“教学”项目。我想把自己学到的知识应用在一个独立项目上,看看自己真正学到了什么。另一方面,希望饭团能成为巴别塔
一样的经典反面教材。