饭团(0):提升效率的开发工具

这是关于饭团的第0篇文章。相当于饭团系列博客的预览版。欢迎关注饭团项目~ PS:作者水平有限,博客偏科普性质,P7+的大神还请赐教。

所谓“工欲善其事,必先利其器”。经过多次项目实践,对项目开发工具使用的一些工具有些心得,想和大家分享交流下。这里不讨论使用技巧,如何使用还请大家自行摸索。

项目开发流程

因为园子里还有不少刚毕业的,没有机会进入一线的互联网公司。所以我先介绍下一个项目开发过程。从我到美团,我们组新成立了两个项目。一个是美团KTV,一个就是我们的小小项目:P。期间其它组成立了美团早餐和一个现在没有对外公开的项目。所以对项目开发有一定了解。

我就直接说我做的项目吧,比较熟悉。三个月前,领导找到我和其他五个人,“因为美团新上任的领导比较看重运营,所以需要搞一个活动运营平台。”我带一个实习生做后端,另一个后端同学做指导。前端有一个主力和一个替补。前端的领导对整个项目负责。我们花了大概一周就做出个简单的活动发布系统。这个相当于园子里新同学写的小程序。唯一的目标是跑起来。这当然是激动人心的阶段。工作内容包括产品设计、页面设计、前后端接口设计、数据库设计、后端逻辑设计、前后端编程实现和代码测试。

跑起来后大家一致感叹,以后不能在一个分支上开发。。。因为代码合并的时候经常冲突。因为以前没有相关经验。所以学习和制定了Git分支管理,代码开发、测试和部署的流程。为后续的功能添加,修复Bug省了不少事。学习API设计规范后,我重新设计和实现了API。

上面项目,实际上只是在线下环境跑起来了。成熟的项目至少需要三个运行环境。一个线下开发,一个线上测试,一个线上运行。所以需要修改程序,根据不同环境自动调整配置。这其实是一个比较复杂的工作。比如线上环境需要把前端静态文件加md5后辍,发到CDN服务器。

后面,美团的美周刊活动开始入驻。我们开始考虑监控的问题。因为需要直接处理用户请求,还需要添加缓存。因为是分布式系统,缓存出现了个bug,挺尴尬。另外需要给美周刊PC端(另一个部门)的服务器提供服务调用,所以还需要实现RPC服务。(因为这些很多依赖美团基础服务,但是我努力在饭团项目中实现它们。期待:P )

再后来,开始搬移美团的上传系统和名店抢购等专题活动。为了适应这个需求,我对项目进行了一个大手术:把原来的单一项目拆分成多模块项目。(饭团项目开始就做成多模块吧 😛 )

今天和小弟一起解决了日志文件的存放和自动删除的问题。

从上面项目进展可以看到,功能开发只是一小部分。在公司做项目,很多时候都是在定位Bug,修复Bug,改进,重构,调优以及和其它人沟通。

正因为如此,在开始代码前,选择合适的工具,对项目开发就显得很重要了。因为我们的项目不是开发一个简版QQ,有很长的路要走~

软件工具

项目管理工具

团队项目通常需要一个公开的网站来管理需求,分配任务,协调开发,总结经验,保存文档。

以前在微软实习,使用的是Visual Studio Team Suite Server。简直高大上。但是好像价格不菲。而且个人感觉更用来在大公司做软件开发。

在大美团,公司使用的是Atlassian系列开发套件:

  • Confluence:文档管理系统。类似维基百科。但是支持各种文档的在线显示,添加附件,画图,丰富的页面布局等功能。
  • Stash:代码管理系统。类似github的代码管理系统。可以很方便的管理分支权限,代码review。
  • Bamboo:代码测试和部署系统。类似Jenkins。但是可以直接在测试完后部署到服务器。可以绑定到其它系统,实现诸如“代码合并前必须通过测试”的功能。
  • Jira:任务、问题管理系统。类似github的issue系统。但远比它强大。实际上,它是Atlassian套件的核心。Confluence、Stash、Stash都可以在这里自动创建链接。所以,假如有一个需求。在Jira创建一个任务。然后关于这个需求的所有文档、代码变更、产品测试和部署都将自动链接到这个任务。非常方便和直观。

可能因为历史原因,公司使用内部的发布系统,没有使用Bamboo和Jenkins。

我曾经私下搭建了Atlassian全套系统,用于工作外的项目开发。但是这套系统贵死了。所以做了越过授权需要完成的一些额外工作(你懂的)。使用起来感觉非常棒。有时间,写一番外篇详细介绍。

虽然一些新的开源系统也有采用Atlassian公司的项目管理工具(比如kafka wiki task ),但是对于一个小型的开源的项目如“饭团”,有点杀鸡用牛刀了。

基于天朝国情,代码管理可以选择OSChina或者CSDN的gitlab。但是为了避免不必要的麻烦,我们还是选择github吧。github自带的任务、缺陷管理系统很酸爽。测试和部署,暂定Bamboo。github自带的wiki也先用着,用来写一些项目技术文档。每周的总结和计划写在博客园上。所以我们的项目管理工具是:

  • Github Issues:任务、问题管理系统。
  • Github wiki:项目文档管理系统。
  • Github Code:项目代码管理系统。
  • Bamboo:测试和部署。
  • 博客园:项目计划、总结和分享。

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本和大屏幕,添加第二、三块屏幕。

Macbook Pro

MBP的优势:

  • 操作系统是Mac OS X,源于Free BSD,是纯正的Unix操作系统。本机上能跑的程序,在服务器(基本是Linux)基本没有问题。
  • OS X人性化设计,用户界面稳定好用。不会出现莫名其妙的问题。
  • 常用软件基本都有OS X版本,或者更好的替代品,比如QQ,微信。
  • OS X是唯一可以开发iOS应用的操作系统。
  • MBP可以支持三个外置显示器。
  • MBP的触屏版足够大,基本可以不用鼠标。
  • MBP电源能支持6个小时,可以摆脱电源的束缚,够自由。
  • SSD,文件读写不再是瓶颈,显著加快程序编译和启动时间。

大屏显示器

大屏显示器的优势:

  • 几乎不需要横向滚动条了。
  • 竖向滚动条使用频率显著减少。
  • 不用频繁开关窗口。
  • 代码字体可以放大点。
  • 错误日志阅读方便。
  • 文件切换方便。

第二、三块显示器

第二块显示器的优势:

  • 一屏写代码,一屏查资料[,一屏和外界沟通]。
  • 基本不用切换窗口了。
  • 思路连贯,不会因为窗口切换带来影响。

工具总结

工作前,我总是找各种破解,也迷恋Linux,爱折腾。现在感觉很不值得。把这些折腾劲花在其它地方,比如研究JVM,学习设计模式,带来的收获远大于破解软件省下的金钱。在接触苹果的产品前,我也认为那是抢钱。但是龙芯公司年会中了一个iPhone 5,大美团又标配Macbook Pro,我感觉,水果公司的产品体验真好。如果下一家公司没有MBP,我自己一定买个。投资工具总没错。

但是人还是比较看重眼前。我现在也没说服老妈,去外面吃饭比自己做饭“省钱”。。。

下面总结下饭团的标准开发环境。

硬件

  • 电脑/操作系统:Macbook Pro, OS X 10.9.5, 4C8G,250G SSD。
  • 显示器: 内置15” + 2X外置27"

软件

关于

关于开发工具

上面纯属个人观点。欢迎大家推荐自己使用的工具~

关于饭团

一个“教学”项目。我想把自己学到的知识应用在一个独立项目上,看看自己真正学到了什么。另一方面,希望饭团能成为巴别塔一样的经典反面教材。

posted on 2015-04-09 00:36  MicroTeam  阅读(5568)  评论(30编辑  收藏  举报