提问回顾

以前提问题的博客

http://www.cnblogs.com/yaoling1997/p/7588537.html

对自己曾经提出的问题进行解答

1.如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?

做为一个软件开发者,既要有用于探索先进技术的进取心,保证自己跟上软件工程发展的潮流,也要掌握前辈们发明创造出来的技术,站在巨人的肩膀上眺望远方。至于哪一方面需要花更多的时间完全取决于软件开发者自身的处境。通过实践,我了解到如果是给学生授课为主的话就要多花时间掌握以前的软工技术原理,如果是接受客户需求开发新产品的话就要花更多的时间学习最新的软工科技。

2.如何正确地取舍用户提出的需求呢?

大多数提需求的用户都没有学过软工,无法站在我们的角度来审视问题,所以提出来的需求也就千奇百怪,有的轻而易举就能实现,有的则比登天还难。所以在分析用户需求的时候,我们要理智对待,既不能敷衍,也不能浪费自己大量的精力在不合理的需求上。通过实践,我觉得既然用户不能一开始准确地描述自己的需求,那么我们需要采用与用户交互的方式不断完善产品,先满足用户的简单需求,再获得用户的反馈,从而不断改进自己的产品,这样既能让用户逐步明确自己的真实需求,又能节省软件开发者的精力,真是一个一举两得的好方法。

3.如何才能让团队成员的代码结合得更顺呢?

通过实践,我了解到大家在一起开发软件,一开始肯定是各有各的编程习惯,很难融入到一块。通过网上搜集资料以及对教材的阅读,我明白了团队变成最好是统一编程IDE并制造统一的代码规范,这样大家就可以更好地互帮互助了,一个程序员写的代码也能更快地被另一个程序员看懂。当然前期大家还是得花一定的时间来适应新的规则,摒弃部分自己的编程习惯,但我们要相信有舍就有得,为了让代码更好地结合,这样做是值得的。

4.我们应该如何正确地对待人工智能呢?

众所周知,人工智能飞速发展,就连沙特阿拉伯都有机器人公民了,所以未来说不定你都可以拥有自己的机器人伴侣了。但是人工智能发展得这么快真的是件好事吗?就如霍金所言人工智能科技如果不加控制地发展,将超越人类智能,并控制或灭绝人类。所以说对待人工智能还是得理性对待,不能一味地追捧,要让人工智能科技的发展与道德和法律相结合,让人类与人工智能和谐相处。

5.每个软件要开发到什么程度才能使自己单位时间内获益最大呢?

当你花时间完善一个软件的时候,你是不是会考虑该不该拿这些时间去开发一个新的软件呢?同样是为了获得更多的收益,究竟是完善之前的软件还是应该开发新的软件呢?网上说开发一个软件要开发到极致,这样才有竞争力,但是我觉得这说法真是大错特错。就拿游戏来说,当一款游戏刚发布的时候,往往以简洁的界面和简单的功能吸引玩家。之后,程序员们会不断丰富它的功能,但这也会使得这款游戏变得复杂化,从而让玩家无所适从,效果会适得其反。开发软件也是如此,我们开发出来后完成了自己的预期功能,让它变得稳定后没必要再费尽周折增添新功能让他复杂化,而是应该开发其它软件,这样才能使自己在单位时间内获益最大。

6.想从事软件开发的大学生是去企业实习成长更快还是在学校实验室实习成长更快呢?

根据调查,企业实习有助于更快进入社会,而学校实验室实习可以获得更多的知识。但是最终我们都还是要走向社会的(除非你打算在学校待一辈子),所以我觉得去企业实习能够更好地助我们成长,然而那些黑心企业是不在其中的。所以说如果你有很大把握确定这个企业是个值得信赖的企业那就去企业实习吧,不然你还是待在实验室实习更为保险,总比堕入传销组织的深渊好吧。

7.项目经理如何调动团队的开发积极性,增强团队凝聚力,使团队创作出更好的软件呢?

虽然我不是PM,但我还是得站在PM的角度来思考这个问题。如果我是PM,我应该如何调动团队开发积极性呢?首先,做为一个PM,得在团队中树立自己的威信(要是没人听你的,你还不如早点辞职)。树立威信不仅是对团队成员要求严格,也要对自己要求严格。当团队成员都听从你的安排时,你需要给每个团队成员分配工作,并设立deadline增强他们的紧迫感。增强团队凝聚力,日常会议是少不了的,大家聚在一起讨论问题,交换意见,可以加快软件开发进度。如果遇到那些调皮捣蛋或是不思进取的成员,先礼后兵,先跟他摆事实讲道理,如果他仍旧不思悔改就报告老师,让他拍屁股走人,不能让他影响其它团队成员的积极性。当然,还可以实时公布各个成员的贡献排名,让他们更加积极地进行软件开发。

是否原来的问题还不明白?

至此,原来提出的问题都已解决。

是否产生了新的问题?

如何才能更好地推广自己的软件呢?

请问你们在项目的 需求/设计/实现/测试/发布/维护阶段(一共6 个阶段)中都学到了什么“知识点”,每个阶段只要说明一个知识点就可以。

1.需求

一个软件或者服务要有人买,就得找到顾客,顾客有各种需求,有的靠谱,有的不靠谱;有些容易做到,有些难以做到。

2.设计

写完设计文档需要邀请团队成员进行设计文档复审。

3.实现

先解决已有功能的bug再实现新功能。

4.测试

在软件开发的一定阶段,我们要对一个软件进行全面和系统的测试,以保证软件的各个模块都能共同工作,各方面均能满足用户的要求。

5.发布

发布前需要解决原有BUG,实现新增功能。发布后需要收集用户反馈,对产品进行完善,为下一次发布做准备。	

6.维护阶段

软件产品发布后需要修正错误、提升性能。
posted @ 2018-01-08 10:38  菜鸟少侠  阅读(418)  评论(2编辑  收藏  举报