专访《构建之法》黄衫获得同学梁植淋
本文为互动社区采访,原文链接:http://www.cnblogs.com/liangzhilin/p/5685419.html
问:学习软件工程这门课你有哪些收获?你认为通过这门课程学习到的知识、技能或工具是将来走上工作岗位也有用的,请列举出来。
答:在软件工程这门课的学习过程中,我的内心是复杂的,总觉得要做很多我们当前所学知识还没涉及到的的领域,如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,在短时间能先做到会用,以后有时间再做到理解也不怕。现学现用,谁都知道这是一个比较痛苦的过程,总能让人在奔溃的边缘徘徊,但现学现用却是培养自我学习能力的最佳途径。依据行业前辈所说,学习能力往往比已掌握知识更重要,进公司往往要学习这个公司自己的开发框架,或者某开发方向做不来要能调方向时,又得学很多很多的东西。人掌握的知识是有限的,遇到的问题却往往是多方面的,所以一名优秀的程序员就要有良好的学习能力,学会“吸星***”,能轻易地把别人的东西学以致用。
本文转载自异步社区
原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF90FCC00001A52816F01A168550
- 点赞
- 收藏
- 关注作者
评论(0)