刘海阳--
敏捷中国 http://www.agilechina.net 邮件列表
如果想发起讨论,请发送邮件到 agile...@googlegroups.com
如欲退订请发送邮件到 agilechina-...@googlegroups.com
更多选项,请访问 http://groups.google.com/group/agilechina
sh 腳本的 TDD 我未試過,shunit2 可以試試看: http://code.google.com/p/shunit2/
如果覺得每周作單位太長的話,每天可以吧?
On Mar 20, 12:10 pm, 刘海阳 <liuhaiy...@gmail.com> wrote:
> 摘要:
> 我想利用敏捷的最佳实践提升所在Tools Team的开发质量,但是Tools开发的特点是:*短周期*,*多项目*,*多语言*,*多环境*,*
> 多需求来源,还有support类工作*。所以做起来不太得心应手。
>
> Team背景:
>
> - 某互联网公司运维部门的Tools Team。
> -
> 主要职责是给通过开发工具支持运维部门。现在阶段的主要工作:Zabbix监控/CMDB建模和实现/SSO部署/生产日志分析/Release&Build自动化等。
> - 5人团队,我是新加入的,Java开发背景,其他同事是SA背景的开发。
> - 开发语言主要是Python,但是为了完成需求,会用到各种语言实现的开源产品。大部分开源产品我们需要自己fix bug以及二次开发。
>
> 一些显而易见的问题:
>
> 1. 代码管理混乱
> - 没有版本控制
> - 历史原因:Java开发中Eclipse
> IDE搞定一切。现在面对不同的需求要用不同的语言在不同的OS和不同的工具上开发,例如Zabbix的bug
> fix就在linux上用VIM开发,CMDB前端的JS又是在window上开发的,每个人的开发习惯也不同,有人喜欢IDE,有人只用VIM。代码很难随时/方便的check
> in。
> 2. 上线代码没有review
> - 没有版本控制的支持,想review也困难。
> 3. 没有质量管理
> - Tools独立于PD,没有QA资源。代码质量只能自己保证。
> 4. 没有持续集成
> - 其实这是一个伪问题,虽然这里没人认为CI是必须的,但是我实在是觉得没有CI真的是个问题。
>
> 每个问题或多或少和开发周期紧张有关系,其实每家公司情况都相同,这里就不提了。
>
> 所以,我希望和同学们讨论一下:
>
> 1. 在*非IDE*开发中怎么做版本控制最方便?
> 1. 强大的IDE+Plugin可以搞定一切,但是用VIM的同事怎么办?CLI自己搞定?
> 2. 用SVN/GIT简单,但是设计一个适用于*多语言*的code repository*目录结构*就麻烦了,有经验的同学共享一下。
> 2. *有没有必要推广TDD或者对单元测试有所要求吗?*
> 1. 个人TDD观点:我个人是TDD的拥护者和实践者。但是,*我认为TDD是无法强制推广的,*因为TDD是程序员的个人思考方式和习惯。
> 2. 很多团队对代码有测试覆盖率要求,我认为这样是幼稚的。*但是,我找不到其他更好的办法。*所以,我纠结。
> 3. *Shell脚本能单元测试吗?需要单元测试吗?*
> - 这方面不我不熟悉,刚才问了一下写Shell脚本的同事:Shell脚本能单元测试吗?同事乐了,Shell需要单元测试吗?
> 4. 同在Tools Team的同学分享点*开发管理*经验吧
> - 在了解了自己Team的环境后,我觉得*Scrum*的一套在这里*行不通*。
> - 我不可能为了某一个大点的项目组建一个Scrum Team。 大家都是跨项目工作的,干扰太大。
> - 想过把所有来路的需求都放入backlog维护,但是我最终放弃了这个想法。我们要频繁交付,Scrum以周为单位的周期太漫长了。
> - 我想借鉴敏捷开发的最佳实践,但是我又不想直接照搬几个best practice了事。
> - 最终目的是:通过改进过程管理来达到提升Team整体开发能力的目的。
>
> 写邮件的同时也review了一遍自己的问题,似乎一切罪恶的根源都在于Tools Team这种*零散式*
> 的开发。以前一直做Java项目/产品开发,整齐习惯了。
> 怎样在现在的环境下保持开发和代码的低熵有序,开始改进之前,真需要认真思考规划一下。
>
> *面向开发细节*,大家有经验就分享下,high level的东西就别扯了,看着累。
>
> 谢谢
> 刘海阳
>
> 谢谢
> 刘海阳
版本控制:干嘛非得统一呢,不同类型的代码,结构本来就是不同的,只要团队内部认可就行了
tdd:这个问题太......shell就不能tdd了?当初junit也只不过用了几个小时就完成了第一个版本,shell更灵活,即使没有框架,搞一个简单的,我觉得用不了多长时间.我觉得这东西不用追求多么强大和完整,简单灵活就足够了.
持续集成:这个太重要了,这个建设也不是一步完成了,慢慢来吧
迭代:这个具体如何进行,就看项目规模了,周期本来就应该是灵活控制的,也许2个小时就是一次迭代,但是迭代的各个过程应该是比较全面和完整的(这里的完整并不是绝对的).
刘海阳
--
敏捷中国 http://www.agilechina.net 邮件列表
如果想发起讨论,请发送邮件到 agile...@googlegroups.com
如欲退订请发送邮件到 agilechina-...@googlegroups.com
更多选项,请访问 http://groups.google.com/group/agilechina
另外,克强同学说的tdd的"痛苦",我不是很理解.
我觉得完全没有必要这样做!
> Shell脚本能单元测试吗?需要单元测试吗?(代码不多,复杂度不高,我们这边黑盒测试足够了)
黒盒也是白盒的一种
摘要:我想利用敏捷的最佳实践提升所在Tools Team的开发质量,但是Tools开发的特点是:短周期,多项目,多语言,多环境,多需求来源,还有support类工作。所以做起来不太得心应手。Team背景:
- 某互联网公司运维部门的Tools Team。
- 主要职责是给通过开发工具支持运维部门。现在阶段的主要工作:Zabbix监控/CMDB建模和实现/SSO部署/生产日志分析/Release&Build自动化等。
- 5人团队,我是新加入的,Java开发背景,其他同事是SA背景的开发。
- 开发语言主要是Python,但是为了完成需求,会用到各种语言实现的开源产品。大部分开源产品我们需要自己fix bug以及二次开发。
一些显而易见的问题:
- 代码管理混乱
- 没有版本控制
- 历史原因:Java开发中Eclipse IDE搞定一切。现在面对不同的需求要用不同的语言在不同的OS和不同的工具上开发,例如Zabbix的bug fix就在linux上用VIM开发,CMDB前端的JS又是在window上开发的,每个人的开发习惯也不同,有人喜欢IDE,有人只用VIM。代码很难随时/方便的check in。
- 上线代码没有review
- 没有版本控制的支持,想review也困难。
- 没有质量管理
- Tools独立于PD,没有QA资源。代码质量只能自己保证。
- 没有持续集成
- 其实这是一个伪问题,虽然这里没人认为CI是必须的,但是我实在是觉得没有CI真的是个问题。
每个问题或多或少和开发周期紧张有关系,其实每家公司情况都相同,这里就不提了。所以,我希望和同学们讨论一下:
- 在非IDE开发中怎么做版本控制最方便?
- 强大的IDE+Plugin可以搞定一切,但是用VIM的同事怎么办?CLI自己搞定?
- 用SVN/GIT简单,但是设计一个适用于多语言的code repository目录结构就麻烦了,有经验的同学共享一下。
- 有没有必要推广TDD或者对单元测试有所要求吗?
- 个人TDD观点:我个人是TDD的拥护者和实践者。但是,我认为TDD是无法强制推广的,因为TDD是程序员的个人思考方式和习惯。
- 很多团队对代码有测试覆盖率要求,我认为这样是幼稚的。但是,我找不到其他更好的办法。所以,我纠结。
- Shell脚本能单元测试吗?需要单元测试吗?
- 这方面不我不熟悉,刚才问了一下写Shell脚本的同事:Shell脚本能单元测试吗?同事乐了,Shell需要单元测试吗?
- 同在Tools Team的同学分享点开发管理经验吧
- 在了解了自己Team的环境后,我觉得Scrum的一套在这里行不通。
- 我不可能为了某一个大点的项目组建一个Scrum Team。 大家都是跨项目工作的,干扰太大。
- 想过把所有来路的需求都放入backlog维护,但是我最终放弃了这个想法。我们要频繁交付,Scrum以周为单位的周期太漫长了。
- 我想借鉴敏捷开发的最佳实践,但是我又不想直接照搬几个best practice了事。
- 最终目的是:通过改进过程管理来达到提升Team整体开发能力的目的。
写邮件的同时也review了一遍自己的问题,似乎一切罪恶的根源都在于Tools Team这种零散式的开发。以前一直做Java项目/产品开发,整齐习惯了。怎样在现在的环境下保持开发和代码的低熵有序,开始改进之前,真需要认真思考规划一下。
面向开发细节,大家有经验就分享下,high level的东西就别扯了,看着累。谢谢
刘海阳
--
敏捷中国 http://www.agilechina.net 邮件列表
如果想发起讨论,请发送邮件到 agile...@googlegroups.com
如欲退订请发送邮件到 agilechina-...@googlegroups.com
更多选项,请访问 http://groups.google.com/group/agilechina
> 在非IDE开发中怎么做版本控制最方便?(把目标文件夹放到SVN目录,做个自动脚本,监控文件夹,定时识别,一旦发现文件有变化,就自动submit一下,无论用啥工具编辑的,都可以如此做)我觉得完全没有必要这样做!
说的有道理,不过我所说的是过程改进的一些小工具,和产品代码完全不是一回事,举个例子,windows下的应用程序要做数字签名,我们做个小工具自动,使得autobuild出来的dll和exe文件签名,这是通用的,和产品本身没有关系。
之前说的自动检查文件改动的主要使用在服务器上一些自动脚本的变化和运行情况记录,这样日志文件不会因为故障而丢失。
另外,把工具和产品开发混为一谈这个我觉得很奇怪啊,要么T eng说漏了,简单的例子,hu dson算一个自动构建工具吧,哪个产品团队会在自己产品中自己接一套自动build框架?
资源永远是短缺的,轻重缓急当自行斟酌。
想问我下交叉测试基于daily build,每天都进行?
有在用QTP自动化测试的么?
同感,存储过程多了重构、优化、管理真是头疼