Blog | Phodal - A Growth Engineerhttp://www.phodal.com/blog/2014-05-13T17:36:32.622765+00:00BlogThoughtWorks实习两周——我所理解的敏捷开发2014-01-12T16:10:28+00:002014-05-13T17:36:32.622765+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/apprentice-in-thoughtworks-two-weeks-what-is-agile/我所理解的敏捷开发应该是快速的,而后我发现所谓的敏捷并不仅仅只是在开发上面,还包括其他很多东西。或许是之前对于软件开发没有一个系统的认识,敏捷应该是一个过程。
##开发流程##
这样一个开发流程我们可能在不同的书上看到过这样的一个过程,如之前推荐的 Robert,C,Martin的《敏捷软件开发 原则、模式与实践》,英文名《Agile Software Development—Principles,Patterns,and Practices》,似乎这本身将我们之前上过的内容都很好地体现了出来,一本不错的好书,虽然包含了很多书的内容。在有些方面可能不是很具体,但是是个不错的融合性书籍。
###开发流程###
传统的开发流程
设计->编码->测试
TDD的开发流程
测试->编码->重构
两周的时间里和两个前辈(暂且这么说,找不到别的合适的词)pair,也就是结对编程,似乎是两个不同的过程。只是TDD在有时候并不是很重要,从理论上来说TDD可能会导致效率降低,但是可以保证程序的功能是正确的。做个小的总结吧,TDD有下面的优点:
- 可以保证程序是正确的
- 是重构的基础保证
- 及时交付,即使现有的程序很ugly
敏捷开发很重要的一点就是持续交付,而TDD正是这样一个不错的保证。
TDD的过程就是:红->绿->重构
- 编写测试
- 写出符合功能要求的程序,虽然是臭的
- 通过测试
- 重构代码
###设计模式###
之所以在这里提到这个是因为感觉这方面很重要,不过如果一开始以设计模式为出发点,可能就变成传统的开发流程,而不是TDD。也就是先设计,再编程 ,这个和TDD有点距离。两者间的好与坏,可能没有办法那么快区分,没有哪一个是完全正确的,都只是相对的。
设计模式是在设计的过程中一点点累积起来的,这些会体现在过程中。
还有很重要的点是,**代码是写给人看的**。ThoughtWorks 实习记——第一天2013-12-30T16:15:45+00:002014-05-13T13:59:25.616087+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/apprentice-in-thoughtworks-first-day/似乎实习的日子才刚开始,不过有些事情很有趣,有些东西相当不错,比如说手上的这台电脑。足够大的屏幕让我们可以让思维有更大的空间,这也是这些空间对于我们的好处,不过这也有一个缺点就是写东西的时候,似乎会感觉有一点点。我们想要的不就是这些么,那就足够了,那么我们去想象这一片空间吧。
##上班路上##
原本预计能早点到公司的,但是既然用原本预计的话,那么结果就是迟到了。我不是故意的,似乎没有预料到公交车会变得那么长,没有预料到上个电梯也会排队。总之,结果就是迟到了十几分钟,没想过这就是迟到的第一天。好在我们公司并不打卡什么的,因为那些东西没有一点实质性的用处,除了限制员工。
所以,迟到的人有很多,只是一开始没注意到,但是发现背后的背包都是ThoughtWorks的时候,我意料到了。所以,似乎也没有那么多担心了。而且我去的时候HR还没到。我们都不是睡懒觉的,只是公交让我们无奈了,所以不得不感慨明天背着个电脑去挤公交的时候会是怎么样的。所以,还是计划着明天还是早点去看看新闻吧。
##MacBook##
这部分只所以用这个作标题的原因是,剩下的时间都在折腾这个,所以也就用这个标题了。虽然用过一段时间的mac os,但是很久没有用之后,还是把这些东西都忘了。只是似乎有足够的时候来学习,也不算是足够,不过光配置密码就让我郁闷了很久。到底是改不了密码,到底还写的都是英语。只是因为没有安排任务,所以也就过得很轻松。
MacBook Pro的屏幕足够的大,2880x1800,至少比我原来的屏幕大上了一倍,因为原来的是1440x768这些参数可能没有那么有用。但是屏幕大了,也就觉得简单了,看的东西也就多了。
配置了一个早上没有什么明显的结果之后,下午就按照自己的意思来搭建自己的开始环境。如emacs,homebrew等等,毕竟这些东西都是会用到的。当然还有用于搭建ThoughtWorks BBS的环境,gradle,mysql等等。似乎又烧了一天脑细胞,然后自己似乎应该好好看书。
Mac的触摸板就是一个有趣的东西,至少要花点时间去学习这个,似乎手势在这上面用得很多,只是都是不熟悉的。可能这些东西原本就存在于自己的电脑上,而没有去使用他们。等等忘了说一点了,公司给配电脑的时候没有配鼠标,所以不得不去用这个来熟悉这些。我们所知道的那么东西又得重新开始了,不同于openSUSE或者是Ubuntu上面可以直接用命运来安装软件。brew install虽然也很强大,但是还是没有apt-get强大不是么,然后我们又要继续一些东西的学习。
##LBS##
let's build something。
这个也不算是一个题外话,只是有些东西,一个团队来做会比一个人有激情。