提问回顾与个人总结
项目 | 内容 |
---|---|
课程链接 | 2020春季计算机学院软件工程(罗杰、任健) |
作业要求 | 提问回顾与个人总结 |
课程目标 | 创造“足够好”的软件 |
提问博客链接 | 个人博客作业 |
问题解答
关于先发优势和后发优势
在创新中,如何选择先发和后发呢?如果此时有一个“看起来不错”的点子摆在面前,是该选择大胆的尝试,还是选择稳一稳,观望一下呢?
关于先发优势和后发优势具体都有些什么,在提问博客中我已经进行了查阅并说明。在如何选择先发和后发的问题上,经过一学期的学习和实践,我也有了更多的思考。我觉得在时间和资本等条件比较充足的情况下,也就是容错率比较高的情况下,选择先发可能会比较合适;反之,可能观望一下,选择后发会比较合适。比如对于一些领域的龙头企业,他们拥有充足的人力物力,同时,他们也需要更新更好的产品去开拓市场。而对于一些中小型企业,在生存问题都没有彻底解决之前,冒险地选择开辟新的道路可能不是一种最好的方法。
关于内行和外行
所谓的“外部视角“、“像外行一行思考”的具体含义究竟是什么?外行与内行之间有什么联系,又各自有什么优势?
在这篇博客中作者说道,所谓的内部视角,本质上也是一种优势视角,它是建立在我们过去的优势和资源上去思考的一种直觉性逻辑。那么反之,外部视角就是要跳脱出以往的惯性思维,在假设自己对此方面一无所知的情况下去思考问题。
在对Textmarking项目的开发过程中,我也深刻的感受到了像外行一样思考这件事情的重要性。在alpha阶段我们的开发过程结束后,我们组内对于项目的功能都可以熟练使用。但是在发布后,得到的反馈却不是很好,很多用户反馈说不知道如何去使用我们的项目。我们在思考和讨论后发现,我们组内的人知道我们的项目是如何设计和架构的,所以明白怎样才能正确地去使用。但是其他的用户并不知道这些,他们只会凭对软件的直观印象去进行操作。因此,我们在beta阶段对于这个问题重点进行了改善,最终也是得到了不错的反馈。
在我看来,从内行的角度去看问题,可以发现很多更专业的问题,从而去科学地规划和改善我们的工作,或者发现更新的机遇。而从外行的角度去看问题,则可以帮助我们去发现一些视野的盲点,从而去优化用户的体验。
关于创新的时机
既然大家知道在G-number进行创新可以获得最大的收益,那么一个新的领域又该如何起步呢?这里面是否会有一些矛盾?我们难道要期盼着那些”先行者“们凭借一腔热血去开辟新的道路吗,还是应该为他们提供适当的保护呢?
在之前对于这个问题的思考中,我可能弄错了这里的“创新”的概念。最开始我理解的创新就是去进行前沿的研究,去开拓新的领域,但是经过之后的思考,我觉得这里的创新应该指的是在市场中去推出新的产品。做前沿研究的人一直都是存在的,不论是在国家的科研单位,或者是企业的科研部门,他们都有得到相应的保障。
关于科技产品的市场鸿沟
在面对这个鸿沟时,我们应该注意些什么呢?又该做些什么让自己的产品更好地跨越鸿沟呢?
在具体的实现中,还有什么其他的注意事项,以及还有什么细节需要注意呢?
在本学期的软件开发中,由于时间比较短,在软件开发出来后并没有达到所谓的“鸿沟”,所以对于这个问题并没有更深的理解,目前依然存在这方面的问题。
关于产品的四象限
我认为在第一象限的产品中,不仅应该做到差异化,还应该做到优化,将我们的优势持续不断地扩大,使其成为我们的核心优势。同时,在第四象限产品的策略上,我认为应该采用差异化的策略,既然我们有办法去做得更好,就应该去做,形成我们独特的价值,而不仅仅是维持甚至不做,等待他人逐步赶上来或者超过我们。
在经历了实际的软件开发过程之后,我更加深刻地明白了一个团队的时间和精力是有限的,而软件的开发维护等都需要成本。所以对于四个象限的功能,不可避免地要进行一些取舍,要把有限的成本用来实现产品的核心功能。对于第四象限的产品,我们仅仅需要维持就足够了。而对于第一象限的产品,创造一个数量级以上的优势,或者独特的价值才是我们应该重点去投入的地方。
新知识
需求
使用NABCD法进行需求分析,找准典型用户,从而更好地定位项目的功能。
设计
要将产品的功能分为四象限,对每个功能安排好轻重缓急,然后逐步实现。同时,在设计阶段要做好接口和规格的初步设计,这样能够大大减少实现阶段的工作量。
实现
由于前后端以及各个模块的实现基本都是由不同的人负责的,所以维护好一份接口文档是很有必要的。
测试
测试要针对接口去进行,保证测试数据的完备和对代码的覆盖率。
发布
要做好对产品的宣传工作,找准目标用户。
维护
要认真分析用户的反馈,及时对修复项目中的bug以及对项目的功能进行微调。
理解及心得
个人项目
这次的个人项目难度并不是很大,主要是对于单元测试以及性能测试的学习及使用。通过个人项目,我更深刻地理解了如何设计单元测试去保证代码的覆盖率以及数据的完备性。
结对项目
这次的结对项目是我第一次接触UI的设计。通过结对项目,我学习了UI的开发以及前后端分离的架构,对如何设计接口和代码的封装也有了更深的理解。
团队项目
这次团队项目的周期比较长,也是我第一次参与团队开发。作为团队后端开发的一员,在开发过程中,我学习了django的基本开发,对http请求的知识也有了一定的了解。在团队开发的过程中,写好代码只是工作的一部分,维护好文档,与团队成员的沟通也是非常重要的部分。