关于软件工程的一些想法

 

这学期选了软件工程,也就是更快速而有效的进行协作。

人工智能课程做了一个军旗AI,说是AI,不过是用Alpha-Beta剪枝,然后做暴力搜索,再加上一些优化,其实到最后比的就是谁的算法优化的更好博弈树搜索的越深,以及更好的布局(军旗的布局影响挺大的)。当时我就想,如何我写好了一个框架,剩下的人在里面优化一些函数就好了,最后的结果其实并不好。一个同学STL,git都不太会,可能就无法上手了,另一个同学在原本的框架下,又重写了半个框架(这个问题我也不知道如何解决,不知道是不是我的注释写的不够清楚),因此大部分都被我删掉了。最后其实是相当于和室友两个人完成的,毕竟调参优化什么还是挺费时间的。不过感觉这种算法类的项目,的确挺难分工的,但最后拿了rank1还是挺能够开心的。

在做软件工程的项目也会遇到这个问题,原来想是PHP的,毕竟简单好用,结果发前后端比较难分工,之后开始用flask开发做前后端协作,最后好在做出了个还算不错的成品,我主要做的就是OJ的判题内核

总的来说,敏捷开发感觉太业务了,每一次的Sprint都是为了业务,为了新的功能点,如果说是想进行大规模的重构基本是不可能的。稍微有点深度的项目感觉很难开发,敏捷开发感觉还是适合外包开发业务的简单情形,比如做个选课网平台(学校请的外包公司似乎写的bug挺多),我觉得倒是适合的。

软件工程里的测试驱动开发倒是挺有道理的,毕竟我在写OJ判题内核的时候用的就是TTD,当时写的时候其实并没有想到这个概念,之后发现还是蛮有有效的的。TTD最简单的例子就是渣哥高程的某些作业,再者比如CS231n里的作业也是。最主要的特点就是目标清晰,只要考虑接口内部实现即可。其实这就挺适合分工的,先把接口和测试写好,每个人写各自的接口就好了。

不过,最重要的还是,组内的人水平差不多,这样无论是交流还是做Code Review都能方便很多。

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注