• 采访~


    采访对象:

      由于北航上过软件工程,邹欣老师开课的。所以我选择了两个北航的同学进行采访。谭传奇做的是一个手机的游戏,殷鹏程做的是一个Web的网站。两组均在去年获得非常好的成绩,于是我便学习了一下这些组的成功经验与不足。

     1、谭传奇的采访

    今天采访了谭传奇,他是上届在北航上了微软开发者邹欣老师开设的软件工程课程。他们组去年的team project 是一个安卓的游戏。

    我:你们去年软件工程做的是什么?

    谭 我们Shine小组的团队项目是自选项目,我们选择了一个跨平台的移动游戏应用,名叫AbsoluteDefense。

    我:你们的人员安排是什么?

    谭:

    经过我们的讨论和对各自特点的探讨,我们决定了如下的人员安排:

    王安然:对游戏架构的设计及Android部分编码工作;

    黄杨:对游戏本身逻辑的设计、部分美工及IOS部分编码工作;

    谭传奇:基础架构编码工作,阅读代码并与编码人员沟通;

    韩佳胤:美工及测试工作;

    林璐:美工及文档工作;

    谢伯炎:Cocos2d架构方面的编码工作及测试工作;

    刘俊伟:测试工作;

    我:你们如何做到小组内成员很好沟通的?

    谭:拟定在每节软件工程课后开会,十分钟左右,说明各个成员该星期所完成的任务和遇到的问题;在QQ群里也可以进行讨论或者私下讨论,大家不要屏蔽群消息。

    我:你们项目的采用了什么样的开发方式?

    谭:开发方式多种多样,如果一个人也算团队的话,那一窝蜂模式挺好的

    在学生团队中,最普遍的就是“明星模式”,其实会继续退化为只有明星干活

    当然上面都是对团队分工的方式,下面就说对于工程本身的方式

    瀑布模型就是“听上去很美”的一个方式

    为什么说是“听上去很美”,其实这在于我们的能力有限

    最简单的瀑布,就是水顺着流下来了,也没法再回流上去

    显然,软件工程肯定不是一次性的,这个模型要改

    那我们就加上回溯

    加上回溯还不行,因为瀑布是顺着流的,最后一点肯定得最后流到

    那我们总不能等水都流干净了才发现出问题了吧

    这是一个多维的改进方式,很难面面俱到

    作者提出了很多改进意见,其实是很多不同方向上的改进方法

    对了我们的项目而言,可以近似的认为,使用了这样一种方法DO IT TWICE

    我们只设计了一种机型,和一个场景,玩家也只有一个武器

    然后我们就可以开始玩了,大家每个玩几遍,然后讨论讨论,还应该有什么飞机,场景应该怎么样,武器应该怎么办,等等

    然后吸取经验,再来一遍,把要加的东西都得加上

    不过我觉得,瀑布模型好像并不适合我们,接口不成熟,技术不成熟,反而是有时间多交流

    这样实际上敏捷比较适合我们,关于敏捷,下面再说

    我:团队分应该怎么给?

    谭:团队也分很多种,如果是公司里大家都上班拿着工资,我觉得评价方法很简单,谁做的多谁做的好谁能力强

    就理应拿的多,相信也没有人有意见

    但对于我们这样的团队,这种评价体系就不可行了

    在目前的条件下,学生团队可能有退化为一人工作多人酱油的分工

    这正是因为有人能力强

    而如果在团队建立之初就已经确定了能力强的人拿的分高

    那其他人的工作热情就会受到很大的影响

    当然也可以有人说因为要拿高分,我要努力,我要把我的能力变强,然后拿高分,这个就不讨论了

    所以我认为,团队的分应该这样给 

    分数=完成情况*工作量+积极程度

    2、对殷鹏程的采访

    今天采访了殷鹏程,他是上届在北航上了微软开发者邹欣老师开设的软件工程课程。他们组去年的team project 是一个叫做学霸的网站。

    我:你们去年做的是什么项目,你担任了什么角色。

    殷鹏程:

    在M1阶段,我们负责UI展示的设计,作为团队的PM,我在很早的时候就给各个Dev分配了任务,由于M1阶段学业压力较轻,我们可以拿出很充裕的时间来做这个项目。当时,我大概每天能够拿出3个小时来做项目,当初,在第一个星期里,我们围绕如何在线展示PDF文档进行了技术攻关,用了大概4-5天的时间,最终敲定了FlexPaper的开源解决方案,这次的攻关是我的一大收获:不仅提升了我个人的技术能力,也锻炼了自己分析问题,解决问题的能力。

            做网站,架构很重要,我们在项目中使用了贫血模型,这也是我个人在网站架构设计上的一大心得,这种模式的使用使得美工与DEV能够在完全解耦的情况下进行开发,提高了整个团队的效率。

             但是,在M1阶段,我作为PM,遇到了许多问题:TFS不会使用(没有修改剩余时间、完成时间等),导致好多天的燃尽图都不对;学霸网站在代码上存在相当大的冗余,没有得到很好的处理(传说中的big ball of mud);再者,3个UI团队之间协调不力,UI团队与上层团队(crawler&pipeline)之间没有达成统一的接口,导致最后整合存在相当大的问题(犹记得那天的整合,从晚7点干到凌晨2点,导致我差点被锁在新主楼。)

             在M2阶段,M1阶段的很多setback都得到了很好的解决,比如我们的燃尽图,得力于前期的任务规划,hidden tasks变得很少,加之我本人使用TFS已熟练,整个项目的10天Scrum变得很平稳。其次,在M1结束的第一次课上,我们PMs用了大半节课的时间来讨论接口的规范化问题,并对很多存在歧义的地方达成了共识。这使得在M2阶段各个组之间的配合更加紧密。

    我:你们去年在开发中有没有遇到什么困难。

    殷鹏程:

    我们和其他两个UI组一起做这个项目,对于我们3个UI组而言,问题还是蛮多的:

    1. 3个组的代码托管在tfs的不同项目下,硬生生的把一个统一的网站拆成三份,导致编码与整合的困难。
    2. 由于我们组在M2阶段跟DOOM团队交换项目,M2对于我们而言也是个M1,我们又遇到了许多新的问题。
    3. 我们交付给DOOM的代码(M1阶段的)有很多Bugs,DOOM团队由于种种原因没有很好的修复。

    在M2阶段,我们组由UI转向了搜索,在这一个阶段,虽然面对新的问题,新的挑战,但我想,相较于M1,我们继承了如下的优点、达到了如下的提高:

    1. 代码复用:UI代码大量复用M1阶段的设计,UI本身工作量较少;
    2. 架构设计:彻底放弃了DOOM团队的方案,采用Lucene.net+SqlServer Full Text Search的开源解决方案,开发效率高,开发周期可控。
    3. 继续使用贫血模型

    3、从中所学以及我还会做什么以改进

    经过阅读他们的博客,我获得了很多很多经验。一开始大家都信心满满的描绘了宏图,但是随着项目的进展,以及其他杂事的加入,事情往往会进展的没有想象的那么顺利。有很多很多瑕疵。于是开始的进度就被一拖再拖。

    并且,一开始可能会考虑不全很多事情,每次编大的工程,如果经验不足的管理员会在之后遇到很大的之前意想不到的麻烦。所以要把困难估计的大一些,并且组长必须熟悉每个人的战斗力是什么,要尽量利用好组里面的每个人。

    而且在真正的开发过程中,只有PM能够学到足够多的知识,其他角色可能任务量不是很大,学不到什么知识。而且真正给分的时候人情因素有很多,所以给分的分数与实际他们的付出是不成正比的。

    还有就是建立模型的问题,殷鹏程在采访中向我们介绍了贫血模型,虽然现在还不是很了解,但以后一定多多学习。因为一个工程良好的架构才会让开发事半功倍。并且我们需要一个TFS的代码管理平台,让该工程进行的更加顺利。

    其次就是要经常向他人请教问题,很多设计模型与开源软件都能对你的工程有很大的帮助。

    如果我当初和他们一起做,我一定多和技术大牛交流,他们两组基本都是埋头写程序,只在组内讨论,没有和其他人交流。我觉得好的点子都是交流出来的。并且关于组内会有人水的问题我相信在MSRA会好一些,因为每个人都很优秀,但也需要PM的协调调度。还有就是软件工程最重要的就是过程,你在过程中可以学到很多很多知识,所以真正动手实践才是我们获得知识的唯一路径。

  • 相关阅读:
    python 函数的参数
    python 函数
    python set
    python 字典
    python 条件判断和循环
    OSMC Vs. OpenELEC Vs. LibreELEC – Kodi Operating System Comparison
    深度学习中噪声标签的影响和识别
    Open images from USB camera on linux using V4L2 with OpenCV
    球面镜成像原理,焦距推导
    动画演示10个有趣但毫无用处的Linux命令
  • 原文地址:https://www.cnblogs.com/sanqueyi/p/3341387.html
Copyright © 2020-2023  润新知