Being a (amateurish) team:团队开发体会
0x00 Being a (amateurish) team
This is the process of changing hydrogen into breathable oxygen, and are as neccesary here, as the air is on earth.
But I still say, they're flowers
If you like...
Do you sell them?
I'm afraid not.
But, maybe we could make a deal?
Thought we are still an amateurish team, WE CAN MAKE A DEAL!
0x01 软件工程
软件工程方法,这是大型软件开发不许使用到的工具。从软件工程一词出现开始,其方法经历了众多开发人员的不断总结改进,集结了多人的智慧,最终形成了如今百花齐放的盛况。说起不同的方法,有的着眼于快速开发出软件圆形,有的致力于开发出安全可靠的系统,还有的关注如何减少所有开发人员之间的耦合关系。不同的目的,不同的方法,无法评定谁好谁坏,唯一可以肯定的是,每一种方法都会在某一方面为开发带来极大的便利。
为什么我们需要软件工程?用一句话来讲,是因为现代的软件规模已经编的非常巨大,无法一个人完成。可以说,软件工程的出现,成为了大型软件开发过程中的Silver Bullet。现代的软件趋向于复杂化,并且往往还需要不断进行维护,因此想要开发一个完整的软件,往往需要非常多的人配合。如果仅仅使用诸如面向对象这样的开发层面的方法,想要得到一个完善的大型项目是具有非常大的挑战的,因为没有一套完整的方法来指导整个开发的流程,换言之,所有人都个干各的,不是形成一盘散沙,就是形成一个泥球。
软件工程的方法不是唯一的,而是呈现出多样化一面,并且这些方法各有千秋。在代码的公开方面,以GCC和Linux为例,二者在开发阶段中就使用了不同的策略。前者在开发过程中不公开代码,而是仅仅将代码维护在一个团队的手里;后者则在开发过程中全程公开代码,接受他人的审视。在流程的推进方面,以瀑布模式、敏捷模式、快速原型模式也有很大的区别,但是不论使用哪一种都能做出一个好的软件。不同之处在于,针对不同的需求和环境,我们应当选择一种适应我们的模式,这样便能有效的开发出一个软件。
0x02 软件开发体会
为期一个月的软件开发已经告一段落。在这一个月中,团队开发变成了每天的主要任务。经历过这样一段开发的时间,我也开始逐渐理解了软件工程中的方法。
本次开发的迭代周期为一个月,需要完成的工作是搭建起一个网站的前端。对于这样一个需求,很显然最适合我们的方法就是敏捷开发。敏捷开发致力于用最短的时间开发出一个可用的产品,我们也确实体会到了这一点。敏捷开发的敏捷体现在不断会有新的功能被发布,软件总是处于增加功能的状态。任务初期,我们把项目划分成了5个大部分,并对每个部分计划了预期的完成时间,因此每隔几天我们就会有新功能发布上线。使用这一中计划推进的方式极大促进了我们开发的效率。
对于源代码的管理,我们采用的是每完成一个功能就公开并并入master分支的模式。在开发每个模块的过程中,所有相关代码由相关开发组成员维护,每完成一个子任务就会进行复审,待当前任务的所有子任务均完成时,上推到github并传入服务器,进而进行测试。
令人感到十分高兴的地方是,敏捷模式对需求变更支持的非常好。我们的开发采用了SementicUI-django的框架,前后端的学习成本很高。在开发初期,我们的计划中低估了学习时间,定义了非常多的计划任务,但是当我们发现无法完成既定计划时,我们开始了需求变更。我们把很多模块的功能减少到可以正常使用的状态,删去了很多锦上添花的功能。与此同时,我们添加了我们认为非常有趣的功能——Phobia智能助手。
0x03 不足之处
说起本次开发的不足之处,大概就是敏捷开发的自由所带来的缺点,即文档的缺失和需求的经常性变动。在开发接近结束时,我们的文档数量依然很少,留下的都是git和osc上的记录,所以在后期花费了大量的时间补全各种文档。由于我们的开发进度与预期有所差距,于是我们会经常改动我们的需求,以求能够在有限的时间内完成更多的功能,这就导致了我们在前期设计中提及的某些次要功能并不能得以实现。
0x04 吐槽软工
敏捷开发是一种注重开发效率、把文档数量减小到极致的方法,而我们却花费了大量的时间在文档的撰写和排版上,尤其是发布前的冲刺期,这无疑耽误了我们的开发进度。其次,对于像我们全日制学生而言,每天坐在电脑前进行8小时工作制的开发是不切实际的,这就意味着我们不可能每天都能平均、高效的完成既定的任务。现实是,我们在完成每天繁重的理论课作业后,还要花费大量时间进行开发,导致每天熬夜到两三点已成为家常便饭,直接影响到后一天的学习。
0x05 总结
It was the best of times,it was the worst of times.在这一个月里,我们受尽了煎熬。然而劳累总是与收获并存的,经过这一段的训练,我们也真正体会到了团队开发与个人开发的差别。我想这大概是我们最能带进第二轮迭代的东西吧。虽然我们的网站还不完善,但是我们第二轮迭代一定会做的更好。WE CAN MAKE A DEAL.
Being a (amateurish) team:团队开发体会的更多相关文章
- 5分钟快速部署PESCMS TEAM 团队任务管理系统开发版
所在的公司也经历过小团队的发展,为了高效率,通常都是面对面交流,很多时候事情谈论过后不久就已经淡忘了.而且工作任务不能全局观察,成员之间基本上都要主动去询问,效率反而低下.所以今天就介绍一款中小团队的 ...
- 关于如何在github上创建团队开发环境
今天想写个如何在github上创建团队开发环境的博客.送给那些还不知道如何在github上创建团队开发环境的开发人员. 1.首先,当然你要有个github的账号.具体怎么注册我这里就不说了.可以上gi ...
- 从零开始,创建GitHub团队开发环境
从零开始,创建GitHub团队开发环境 GitHub提供免费的团队环境,不过免费仓库容量是300MB,请大家注意. 申请GitHub个人账号 1. 使用浏览器访问GitHub主页.如果使用IE,尽量不 ...
- 绝对精品推荐做前端的看下:Web前端开发体会十日谈
20151208感悟: 前端人的角度来看的话,感觉像是阅读一个大牛前端的全部武功的一个秘籍说明,里面的思想高价值蛋白真是太多太多,推荐看. Web前端开发体会十日谈 一直想写这篇“十日谈”,聊聊我对W ...
- Eclipse集成Git做团队开发:分支管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- Eclipse集成Git做团队开发:代码管理
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- Eclipse集成Git做团队开发
在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...
随机推荐
- parallels Desktop解决无法压缩硬盘的问题
使用pd12新建的win7虚拟机仅仅使用了四十个G,但在本地硬盘中的体现却是占用了一百左右:尝试压缩提示: 无法编辑硬盘属性,因为该硬盘有一个或多个快照. 该硬盘属于某一带有一个或多个快照的虚拟机.请 ...
- 支付宝alipay移动支付
通过支付宝提供的API实现移动支付功能 一:下载相关的依赖和工具 蚂蚁金服 https://open.alipay.com/platform/home.htm 移动支付开发文档 https://doc ...
- Shiro-Subject 分析
Subject反正就好像呈现的视图.所有Subject 都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager:可以把Subject认为是一个门面: ...
- 扑克牌游戏-华为OJ-C++实现
/*扑克牌游戏大家应该都比較熟悉了.一副牌由54张组成,含3~A.2各4张,小王1张.大王1张.牌面从小到大用例如以下字符和字符串表示(当中.小写joker表示小王,大写JOKER表示大王): 3 4 ...
- ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES)
windows下,以上两个错误的解决方法 工具/原料 windows 8 MySql 方法/步骤 找到配置文件my.ini ,然后将其打开,可以选择用记事本打开 打开后,搜索mysq ...
- Servlet的生命周期以及在Spring MVC中调用流程
接触Web时间比较久,虽然知道Servlet的生命周期但是理解却还是不够,今天刚好debug代码涉及这块就利用余下时间研究了一下. Servlet的生命周期以及处理浏览器请求的过程.Servlet接口 ...
- Discrete Logging ZOJ - 1898 (模板题大小步算法)
就是求Ax三B(mod C)当C为素数时 #include<cstdio> #include<cstring> #include<cmath> #include&l ...
- Z30云台PC控制问题
https://developer.dji.com/cn/onboard-sdk/ 我们的需求: 完成PC程序控制Z30相机云台 关键问题: 前提:遥控器控制飞机+图像观看+调焦 1 PC能够接收到图 ...
- 树莓派开启SSH
2017-04-10-raspbian-jessie默认SSH功能时关闭的 boot下新建一个ssh的空文件
- 《OKR工作法》读书笔记(转)
文章转自https://www.jianshu.com/p/c694363d5213