互动社区采访
一、前言
首先,很荣幸接到互动社区的采访邀请,感谢老师们的支持与鼓励。
在接受采访的同时,也正好也能借此机会让自己总结一下本学期《
软件工程》的收获与自己的不足。
二、采访内容
问:
学习软件工程这门课你有哪些收获?你认为通过这门课程学习到的知识、技能
或工具是将来走上工作岗位也有用的,请列举出来。
答:
在软件工程这门课的学习过程中,我的内心是复杂的,总觉得要做很多我们当
前所学知识还没涉及到的的领域,如app开发。然而,当一个学期过去后,蓦然回
首,才发现在这门课程中收获还是很多的,下面我简单地列举几点:
1. 敏捷开发模式。无可否认,这是一个非常好的开发模式,效率高、任务明
确、计划清晰、还有利于提高开发团队的士气,模式虽好,但要用好也不容易。
我下一步计划就是要把它运用到我们团队的实际开发中去,发挥它的实际作用,
说起来容易,做起来的话就必须得对这种开发模式有深入的了解,毕竟实际开
发讲的是效益,而非徒劳作秀。
2. Github代码资源同步开发。我们平时开发用的代码同步工具是SVN,虽然
久闻Github大名,但还是软件工程课程让我首次接触了与SVN截然不同的
Github,Github作为一种新兴的代码同步工具,有着一些SVN所没有的机制
,这在开发行业中倍受青睐。SVN和Github同时深度掌握,将会是职场上的
一大法宝。
3. 通过博客园等社区平台分享学习成果。毋庸置疑这是大家都掌握了的一项
技能了吧,在《软件工程》课程学习前,我偶尔也会在CSDN等平台发表一两
篇文章,但并没有分享学习成果的习惯,我自己也是一个比较喜欢写写东西的
人,以后会保持这种习惯下去。
4. 通过学习进度条记录学习进度。在更新进度条的时候,往往能总结最近所
学,这也是一个很好的习惯,由于最近有点忙,我的进度都没能更新上去,是
时候注意一下了。
5. 团队合作、管理作与沟通能力。这是软件工程思想一直强调的东西吧,一
个大的项目离不开团队的努力,如果一个程序员连如何在团队中发挥最大价值
都不会,那一定不是一个合格的程序员。
问:
你们曾经总结了阅读《构建之法》的第8章需求分析的一些体会,你们获得
成功的作业项目,当时是如何进行需求分析的?
答:
我们的选题是自主创业类型的项目,与服务外包不一样的地方在于其没有繁
杂而正式的需求文档,一切需求得我们自己去挖掘,可以说市场就是我们的需求
发布者。而我们要做的就是去分析市场需要的是怎样的一个产品,如何定义我们
的产品才能受到更多用户的青睐。而如何去分析,就要去参考一下《构建之法》
中的专业方法了。《构建之法》给我的印象就是有很多生动的小例子,还是很好
理解的。
问:
从个人开发”、“结对开发”到“团队开发”,感觉有什么不同?对于PM这个角
色,你们有什么样的理解?
答:
从个人开发”、“结对开发”到“团队开发”,给我感觉就是一个愈发体现软件工
程价值的过程。随着团队成员的增加,如何规范、科学高效地开发开始变得越来
越重要,这对个人能力也是一个进阶式的考验,从最初的散漫自由的个人开发到
最后为团队利益发光发热,不知不觉中,自己的团队协作能力就已得到大大的提
升。
对于PM(项目经理)这个角色,我感触良多,因为除了无论是在软件工程小
组还是学校创客中心的开发团队中,我都充当着PM的角色,如何做一名合格的PM
,是我夜里辗转反侧思考的问题,我觉得一名出色的PM,要有以下技能:
(1)有够硬的技术支持。PM,虽然被定义为负责代码开发以外的工作,
但那是大公司团队的PM,因为他们还有架构师等职位人员。而我们的PM
,除了要负责代码开发外的的工作,也要有全面的知识覆盖,能在设计的
时候就分析出实现难点,从而避免一些可避免的问题。
(2)能敏锐地发现团队中的沟通问题。我一直认为,队员之间沟通不
好,是PM的责任。PM需要鼓励队员们沟通合作,实时地观察团队中的
异常,从而达到亡羊补牢的作用,这一点,我就觉得我做得还不够好。
(3)懂得捍卫团队的利益。在软件工程小组中可能涉及不到这一点,
因为小组做的项目偏向于作业的提交,而不需要太过考虑开发成本、版
权等问题。一个老谋深算的PM,往往需要让团队开发花最少的时间获取
最大的利益,需要在需求与开发成本中做成一些取舍。例如,某PM接了
一个十万块的外包项目,项目
有一个功能模块可能要耗去团队成员价值八万块的劳动力,PM可能
就需要跟客户那边沟通要不要舍弃这一个模块了,而不是单纯地考虑怎
样让产品最完美。
(4)有一定的魄力。 这一点也非常重要,因为在漫长的开发工作中,
往往会遇到很多分歧问题,而这些问题也往往没有绝对的对于错。也有
些时候团队成员会因为工作氛围过于自由而散漫放松,这些时候一个能
hold住场面的PM就是关键了,他需要拿出略为强硬的一面作出一些抉
择与规定,以利于重整团队的风气,提高开发效率。
(5)能得民心。古人有云:小成于勤,中成于智,大成于德。由此可
见没有良好的品德者是无法成大事的,PM有良好的品德,在工作中讲
究客观务实,才会深得团队成员的心,别人才会真心实意地给你干活。
这一点,我怕是学一辈子都学不完啊。
(6)有良好的抗压能力。作为PM,总会承受各种各样的压力,客户催
进度、老板挤成本、队员闹矛盾、需求改了又改等等,但这些都是无
可厚非的,人在职场,连一点心理承受能力都没有就很难生存下去了,
学会自我减压吧。
问:
在你们的团队开发工作中,有哪些经验是值得分享的?有哪些不足之处是需要改
进的?
答:
我觉得我们做得较好值得分享的地方有:
1.敢于与其他班同学组队开发。团队开发的出发点本就是为了做好项目,不
应该只看谁关系好就跟谁组队,尝试把目光放出班外,也许你会发现更多适
合你队伍的人才。
2.选题迎合市场。我们选的鲜花外卖平台,是分析过市场需求才定的,建议
多选这样的题材,那样能更接地气,更多地去了解市场的规律。
3.利用更多的工具与平台。为了提高开发效率,我们应掌握更多实用的工具
与平台,如我们项目设计中用的Axure原型设计工具、PowerDesigner数
据库模型设计工具,项目开发中的SSH框架、Bootstrap框架等。
当然,我们也有很多不足的地方,如:
1.没能很好地动员每个成员,让每个成员都投入到开发工作中去。
2.没能很好地考虑实现性问题,前期想b/s版和安卓版产品都做,后期才发
现是我们太不现实了,只把精力放在b/s版的开发中,效果会更好。
3.没能一鼓作气,善始善终。前期进度还是挺快的,后期由于一些原因就使
项目进度耽搁下来了,这些原因包括我个人的身体问题、课程项目开发中还
参与了其他的项目开发及比赛,但我觉得最大的问题在于我们不懂得协调时
间,这个问题需要好好反省一下。
问:
面对自己不熟悉的技术,你们是如何快速熟悉并完成老师布置的任务的。
答:
不熟悉又要用的技术,我们都是现学现用的,看文档、看别人的Demo,在短
时间能先做到会用,以后有时间再做到理解也不怕。现学现用,谁都知道这是一个
比较痛苦的过程,总能让人在奔溃的边缘徘徊,但现学现用却是培养自我学习能力
的最佳途径。依据行业前辈所说,学习能力往往比已掌握知识更重要,进公司往往
要学习这个公司自己的开发框架,或者某开发方向做不来要能调方向时,又得学很
多很多的东西。人掌握的知识是有限的,遇到的问题却往往是多方面的,所以一名
优秀的程序员就要有良好的学习能力,学会“吸星大法”,能轻易地把别人的东西学
以致用。