个人博客作业

个人博客作业

项目 内容
课程链接 2020春季计算机学院软件工程(罗杰、任健)
作业要求 个人博客作业
课程目标 创造“足够好”的软件
本博客的收获 了解了软件、软件工程等相关方面的知识及一些常用工具

阅读教材并列出仍然不懂的问题

在这一部分,我着重阅读了教材的第十六章,并针对其中的内容提出了一些自己的思考。

关于先发优势和后发优势

在教材16.1.4章节中,作者提到了先发优势后发优势这两个概念,并举例说明了先发和后发都有机会获得成功,但并未对此展开详细的说明。通过进一步的查阅,我了解到所谓的先发优势和后发优势包括但不限于以下方面。

先发优势

(1)先行者有机会探索网络效应和正反馈回路,封杀竞争对手的技术。
(2)先行者可以建立重要的品牌忠诚度,后来者很难打破。
(3)先行者可能有机会限于竞争对手实现销售,通过规模经济和学习效应实现成本优势。
(4)先行者为使用它的顾客创造了转换成本,后来者很难从先行者手中夺取。
(5)先行者可能积累起关于顾客需求、分销渠道、产品技术、工艺技术等等的有价值的知识。

后发优势

(1)后动者的“免费搭乘”效应:后动者可能会在产品和工艺研究与开发、顾客教育、员工培训、政府审批、基础投资等很多方面比先动者节省大量的投资,却可以从中获益。
(2)先动者锁定了错误的技术或营销战略:由于市场初期,技术和顾客需求的不确定性和“非连续性”(discontinuities)往往导致先动者的错误决策,而后动者可以从先动者的错误中吸取这些教训,不再犯先动者曾经犯过的错误。
(3)在位者惯性:由于沉没成本的存在,组织僵化,企业不愿引进新产品或改进产品,不愿改革,而后动者作为一个追赶者,时刻都想抓住机遇从而取代先动者的地位,因而对企业的组织结构、技术、产品等都进行大量的革新,从而在与先动者的竞争中占有优势。

既然先发和后发都有其优势和劣势,那么,在创新中,如何选择先发和后发呢?如果此时有一个“看起来不错”的点子摆在面前,是该选择大胆的尝试,还是选择稳一稳,观望一下呢?

关于内行和外行

在16.1.1中,作者关于创新,发表了以下观点:

以我们手里的手机为例,它继承了几代理论的发现、发明和技术工程上的创新——通信技术(无线的和有线的),集成电路技术,显示技术,计算机系统技术,应用程序开发技术……

在我们熟悉的计算机和IT领域,所有我们看到的“酷”的东西,都是几代人、许多团队前赴后继持续创新的结果。就像拼图一样,很多聪明人都模糊地看到了最终图像,都在一块一块地拼接,往往拼好最后一块的人得到了最大的荣誉。但是没有前人的积累,没有自身扎实的功力,就没有“最后一块”等着大家去拼。

意在指出创新需要良好的基础扎实的专业技能。但在16.1.5中,作者又提出了以下观点:

但是统计数据表明,70%的创新者说,他们最成功的创新,是在他们的拿手领域之外发现的。

……(关于HTTP、阿里巴巴、诺基亚、“单放机”(Walkman)的例子)

为什么领域的专家有时候没有领域外的创新者那么有创意?这也是一个很有意思的话题。

意在说明“外行”更容易提出天马行空的创意

那么内行与外行在创新的过程中各有什么优势呢?由于时间关系,我没有来得及去完整阅读作业提到的《像外行一样思考,像专家一样时间》这本书的全文,仅仅是查阅了一些关于此书的摘要和读后感,并阅读了一些相关的文章。其中一篇文章外部视角作出了如下解释:

外部视角,也就是我们常常谈到的“用户思维”。

但是在16.1.7.1中,作者又举了福特的例子:

在汽车工业发展的早起,亨利·福特去做市场调查,他问马车夫们有什么需求,马车夫们会跟他描述“哦,福特先生,我觉得如果有一个四个轮子的,烧汽油的,还有一个方向盘的就好了……”吗?我想这一幕不会出现,马车夫们会说——我需要更快的马!

乔布斯也曾经说过,“用户根本不知道他们需要什么”。那么,所谓的“外部视角“、“像外行一行思考”的具体含义究竟是什么?外行内行之间有什么联系,又各自有什么优势?我对此仍有些疑惑。

关于创新的时机

在16.2中,作者提到了创新的时机:

那些成功的企业只是比大众的平均值先走了一小步(平均值×0.618),就是这一小步,让部分人看到了产品的“相对优势”,从而接受产品。

做前沿研究的人,可以早于其他人很多年提出新想法,但是这些想法一般都是在“创新者”(Innovator)那个圈子有影响,这些想法要等若干年后才能由一个或多个企业看准时机推向大众市场。

如作者所说,大家都是聪明人,那么,既然大家知道在G-number进行创新可以获得最大的收益,那么一个新的领域又该如何起步呢?这里面是否会有一些矛盾?我们难道要期盼着那些”先行者“们凭借一腔热血去开辟新的道路吗,还是应该为他们提供适当的保护呢?

关于科技产品的市场鸿沟

在16.3.3中,作者提到了技术产品的发展时间收入之间的关系,大致如下图所示(这里没有找到书中的原图,故用相似的网图代替)。

如上图所示,在早期采纳者和早期大众之间,会有一个鸿沟。这个鸿沟如此之大,不容忽视。早期采纳者是梦想家,而早期大众是实用主义者,他们需要的尽管是同一个技术,但很可能是不同的产品。那么,在面对这个鸿沟时,我们应该注意些什么呢?又该做些什么让自己的产品更好地跨越鸿沟呢?

对《跨越鸿沟》一书的解读中,我了解到消除鸿沟的三大原则四个步骤

三大原则

1.保证给用户提供完整的产品;

2.形成良好的口碑;

3.成为市场领先者。

四个步骤

1.寻找切入点;

2.汇聚火力;

3.定义该市场的战争;

4.发动入侵。

那么,在具体的实现中,还有什么其他的注意事项,以及还有什么细节需要注意呢?

关于产品的四象限

在16.3.6中,作者讲了如何通过四象限对一个团队的多个产品进行分类:

外围功能 杀手产品
必要需求 第二象限 第一象限
辅助需求 第三象限 第四象限

并且解释了一些开发各种产品的常规手段:

  • 维持,用最低的成本保持功能,不至于落后太多
  • 抵消,填补自身产品的短板,用最短的时间做到“足够好”
  • 优化,花大力气,长时间优化产品最核心的、竞争最激烈的功能
  • 差异化,创造一个数量级以上的优势,或者独特的价值

但是在各个象限应该采取的策略上,我与作者的观点又一些分歧。作者认为应该采取以下策略:

  • 第一象限(解决用户的刚需,同时又是自身的杀手功能)

    建议采取“差异化”的办法,全力以赴投资在这个领域。

  • 第二象限(解决用户的刚需,但提供的是外围功能,大家都能做到)

    建议采取“抵消”的办法,快速地达到“和别人差不多”,对于大家都特别看重的功能,采取“优化”的办法,达到行业最佳。

  • 第三象限(不是用户的刚需,而是辅助功能,而且是大家都能做到的)

    建议采取“维持”的办法,以最低代价维持此功能。

  • 第四象限(不是用户的刚需,而是辅助功能,但是我们有独特的办法做得更好)

    建议采取“维持”的办法,或者现在“不做”。等待好的时机。

我认为在第一象限的产品中,不仅应该做到差异化,还应该做到优化,将我们的优势持续不断地扩大,使其成为我们的核心优势。同时,在第四象限产品的策略上,我认为应该采用差异化的策略,既然我们有办法去做得更好,就应该去做,形成我们独特的价值,而不仅仅是维持甚至不做,等待他人逐步赶上来或者超过我们。

“软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?

软件:1958 年Turkey在论文The Teaching of Concrete Mathematics中提出。

软件工程:在对Margaret Hamilton的专访中,我们可以了解到,Margaret Hamilton在阿波罗计划期间提出了“软件工程”一词。

软件工程发展的过程中有什么你觉得有趣的冷知识和故事?

Dijkstra在它的文章”关于真正教计算机科学的残酷"一文中,曾对“软件工程”提出过批评:

A number of these phenomena have been bundled under the name "Software Engineering". As economics is known as "The Miserable Science", software engineering should be known as "The Doomed Discipline", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash [sic]: if you carefully read its literature and analyze what its devotees actually do, you will discover that software engineering has accepted as its charter "How to program if you cannot".

目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

目前各版本管理和项目管理软件使用人数

下表来自wikipedia:

Name Users Projects Alexa rank (lower = more popular)
Assembla Unknown 526,581+[45] 23,052 as of 9 September 2019[46]
Bitbucket 5,000,000[47] Unknown 989 as of 9 September 2019[48]
Buddy Unknown Unknown 73,518 as of 9 September 2019[49]
CloudForge Unknown Unknown 339,271 as of 9 September 2019[50]
Gitea Unknown Unknown 209,697 as of 9 September 2019[51]
GitHub 31,000,000[52] 100,000,000[52] 65 as of 9 September 2019[53]
GitLab 100,000[54] 546,000[55][k] 2,146 as of 9 September 2019[56]
GNU Savannah 93,346[57] 3,848[57] 100,244 as of 9 September 2019[58]
Launchpad 3,965,288[59] 40,881[60] 12,344 as of 9 September 2019[61]
OSDN 54,826[62] 6,294[62] 8,529 as of 9 September 2019[63]
Ourproject.org 6,353[64] 1,846[64] 1,191,954 as of 9 September 2019[65]
OW2 Consortium Unknown Unknown 610,052 as of 9 September 2019[66]
Rosetta code Unknown Unknown 62,045 as of 9 September 2019[67]
SEUL Unknown Unknown 1,268,571 as of 9 September 2019[68]
SourceForge 3,700,000[69] 500,000[69] 407 as of 9 September 2019[70]

一些软件的优缺点比较

  • Microsoft TFS
    • 优点:任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM能与 VS 无缝接合。
    • 缺点:搭建、维护比较复杂,硬件要求也比较高。
  • Github
    • 优点:可以作为一个版本控制系统和协作工具,用来发布工作;支持多人共同完成一个项目;代码不需要保存在本地或者服务器;能够跟踪错误。
    • 缺点:学习周期相对较长;不符合常规思维;代码保密性差
  • Trac
    • 优点:有良好的扩充性;权限体系设计比较完备;非常灵活,可以随心所欲地定制,可以和TortoiseSVN集成。
    • 缺点:不支持多项目;需求和缺陷没有分离;门槛太高;核心功能很少,需要安装插件。
  • BUGZILLA
    • 优点:免费;支持汉化。
    • 缺点:只能管理缺陷。
  • Apple XCode
    • 可以自动创建分类图标;自动提供撤销、重做和保存功能,无需编写任何编码。
    • 缺点:更新版本后,某个插件可能会失效。

参考自:

https://www.cnblogs.com/cp168168/p/8734043.html

https://www.cnblogs.com/qianzui/p/5399525.html

动手实践

Git

使用Git进行简单的readme文件的添加:

使用感想:虽然Git的学习需要一定的时间成本,且需要通过CLI进行操作,但使用起来确实十分的灵活便捷。

GitHub

使用Github创建自己的项目:

使用感想:Github可以很便捷地创建自己的项目并对其进行管理。

posted @ 2020-03-08 12:16  SpookyDreamer  阅读(268)  评论(4编辑  收藏  举报