这是关于饭团的第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系列开发套件:

  • 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"

软件

  • Git + Task + Wiki: https://github.com/huizhong/fantuan
  • 团队博客:http://www.cnblogs.com/MicroTeam/category/676085.html
  • 测试和部署: Atlassian Bamboo(待建)
  • 程序开发:IntelliJ IDEA
  • 文档编辑:Markdown + 马克飞象
  • 原型设计:Axure RP Pro
  • 流程图:yEd

关于

关于开发工具

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

关于饭团

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

转载于:https://www.cnblogs.com/MicroTeam/p/effective-tools-for-teamwork.html

饭团(0):提升效率的开发工具相关推荐

  1. 开发提高工作效率的开发工具和办公软件

    最近一段时间比较迷恋好工具,俗话说,磨刀不误砍柴工,下面是浏览到的工具,其中百分之80都用过,而且经常用,自己没有时间整理,首先感谢原创的整理,下面中也有我做的些简单补充: eclipse(集成开发环 ...

  2. GitHub 热点速览 Vol.30:那些提升效率的小工具们

    作者:HelloGitHub-小鱼干 摘要:虽然 GitHub 是一个学习技术的好去处,但是除了学习,它还集提高"搬砖"效率于一身.GitHub 上散落着各式各样的小工具,比如本周 ...

  3. pycharm显示全部数据_必备 | 提升效率的数据分析工具,吴恩达都在用

    Python语言是一种强大而简洁的编程语言.据IEEE Spectrum消息,Python在2020年继续蝉联最受欢迎的编程语言第一名.对于刚接触Python的新手来说,配置一个容易上手又适合自己的开 ...

  4. python自动修图软件_带走!20 个提升效率的神器工具

    加个"星标",每天一起快乐的学习 windows软件工具类 0x00 Mr.Otter--搜索神器 单个搜索引擎的结果不能令人满意?搜索结果干扰太多?无法一键找到想要的内容? 现在 ...

  5. 分享一些提升效率的小工具

    1. IObit Uninstaller  IObit Uninstaller是一款简单专业的卸载工具,可以帮我们卸载电脑中顽固难卸的软件和浏览器插件,支持强制一键卸载和文件粉碎功能. 除了卸载软件, ...

  6. HTML1.0 - html 环境搭建 开发工具

    1. mac  电脑 2. Hbuilder 开发软件 3. 学习基础 HTML 语法 网站  http://www.w3school.com.cn 转载于:https://www.cnblogs.c ...

  7. 小而美 | Mac上鲜为人知,但极大提升效率的小工具

    2019独角兽企业重金招聘Python工程师标准>>> 一.Noizio -自然而然的白噪声,专注工作 Noizio是一款OS X 下的白噪音应用,可以让自己觉着是坐在一个壁炉前.咖 ...

  8. 「软件」2.0时代已经到来,你需要这样的开发工具

    互联网催生了软件的繁荣,而在AI浪潮的推动下,软件正在朝着更「智能」的方向发展,也就是「软件2.0」时代.「软件2.0」其实就是神经网络,也就是这一波AI浪潮的基石. 在「软件1.0」时代,程序员用J ...

  9. 在 Win7 下运行 TC 2.0 / TC3.0 / BC 3.1 / QB 4.5 等 DOS 开发工具

    虽然这几个工具都已经淘汰了,但仍是初学编程的优秀工具. 相信不少人都遇到过,在 Win7 / Vista 下运行这些工具编写的图形程序时会出错:(16 bit MS-DOS Subsystem) Th ...

最新文章

  1. cs通信查询mysql数据库_C#访问和操作MYSQL数据库
  2. C++——运算符重载operator
  3. css之其它技巧和经验列表
  4. myeclipse中配置spring xml自己主动提示
  5. windows下安装服务注册Consul
  6. window.onload与$(document).ready()的区别
  7. python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文
  8. React和Vue的Chrome扩展工具安装
  9. docker初级操作
  10. AT1219 歴史の研究 解题报告
  11. 爱奇艺动态化框架Qigsaw开源!带来极速原生开发体验和更低crash率
  12. 网站后台操作手册(模板)
  13. 禁用word公式编辑器
  14. java 内部类的实例化_如何在Java中实例化成员内部类?
  15. Python基于Django会议室预约系统设计
  16. html5制作颜色的诗句,带有颜色的诗句(精选60句)
  17. 为什么会用到浅拷贝和深拷贝
  18. linux网关设置方法是什么?五个步骤帮你搞定
  19. c语言程序设计第一次月考考试重点,月考小技巧,助你得高分
  20. 【无标题】python从入门到实践练习12-2,游戏角色,找一副你喜欢的角色游戏位图..............

热门文章

  1. 我觉得我们看到的所谓“善良人”
  2. 负债人有尊严吗?我觉得真的没有
  3. 很多人花一大笔钱做APP、小程序
  4. 自媒体人本质是互联网公司内容运营的角色
  5. React的学习曲线
  6. Qt——P12 信号连接信号
  7. azure_面向初学者的Azure Data Explorer
  8. 如何在SQL Server Reporting Services中自动创建KPI
  9. MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析
  10. TortoiseSVN文件夹及文件图标不显示的解决办法