2017年秋季学期软件工程第一次作业

第1次作业

第一部分 结缘计算机

1,计算机是你喜欢的领域吗?是你擅长的领域吗?

计算机是我一直向往的领域,但我可能不太擅长它。我是在小学信息课上第一次接触计算机,上课就是在机房的电脑上用金山打字通练习打字。当时对计算机产生了浓厚的兴趣,可小镇的老师和我的家长不足以引导我学习计算机,自己也没有足够大的毅力克服种种困难开始自学,因此直到大一才接触第一门编程课《C语言程序基础》。第一节课,老师提问,有C语言基础的同学请举手。约一半同学举起了手,我慌张地坐在教室里,感觉差距很大。在之后的学习中,我发现我和他们的差距,可能不是体现在对编程语言的熟悉程度上,而是在思维方式上。思维方式的转变,可能不是一朝一夕能够完成的。

2,你对计算机的热爱是怎样的?仅仅是口头的吗?

我对计算机的感情应该停留在“兴趣浓厚”上,还达不到热爱。本科学习中,会在课程要求内完成相关的工作,但是出于“热爱”进行的探索学习比较少。大一时辅导员不让自己配电脑,为了学习C语言,要经常骑车去学校的机房,后来自己买了电脑,反而不太有兴趣每天去捣鼓程序了。在一些数学课上,比如数值分析,老师会要求利用差值的原理,来编程实现图像的旋转缩放之类的目标,觉得很有意思,但是课程外的竞赛就没有参加。

第二部分 学习生活

1,你对你的大学生活有什么想吐槽的吗?你理想的大学生活应该是什么样子的?跟学校给你的有什么区别?

比较自豪的是,我本科就读与清华大学。正如博客【B】的博主所描述的那样,相对而言,清华的教学水平是值得信任的:”震撼:在清华听朱仲涛老师的“数据结构”课“。但也不是没有想吐槽的点。做为国内一流的大学,清华所培养的学生应该具有更广阔的视野,要成长为大国重器。可是在四年的学习生活中,不论是自己还是身边的朋友,似乎更像一个”精致的利己主义者“。我理想的大学生活,是相当忙碌的。我应该在四年的时间里逐渐地认识自己,形成对未来的比较清晰的规划并为之努力。相当幸运,清华无愧为国内顶尖大学,它始终坚持培养四种人:学术大师、兴业之士、治国栋梁、强军之将。学校非常有担当,为学生明确了长远的方向、提供了充裕的机会。不过更多的,还是得靠学生自身的努力。

2,迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。

我本科的专业是自动化,培养计划中安排了C语言、数据结构、计算机原理和C++等课程。本科林林总总的课程作业加起来,我编写的代码大约在4000行左右?编程课程会有十余次小作业和一次大作业,诸如模式识别、数值分析等课程会安排一至两次大作业要求编程实现。目前印象最深的一次作业是要求编写程序找到一副彩色图像中有多少个荔枝并标出其重心。

3,科班出身和北大青鸟有什么区别?

也就是心态上的区别吧?北大青鸟比科班出身应该会更在意这个问题。我遇见的朋友对于出身大多数都是包容的,特别是大佬们,往往谦虚有礼,不会有成分歧视。毕竟在处理一个问题的时候,能力是摆在第一位的。正如博客【H】的博主,文科出身的他,已然成为了一位合格的软件行业工作者。他说:“我们想当然的填了一个专业,然后发现,完全不是那么一回事。但各种机缘巧合,我们发现我们可以相守一生的挚爱。”科班出身者甚,成大佬者少。此外国内大学水平参差不齐,教学理念也相去甚远。不过大学的职能,恐怕在教会学生技能之外,还包含了对个人价值观潜移默化的影响。

4,速成的培训班和打基础的大学教育还有mooc之间有区别吗?

当然有区别了!速成的培训班能够让人快速的进入某一领域,但是绝对无法让人养成让人受益终身的好习惯。囫囵地吞了一个果子就上路了,该不该走这条路,果子有没有营养就稀里糊涂地出发了。大学教育有很多打基础的课程,他不一定能让人在四年后就能熟练的掌握某种让人赖以生存的技能,但是大学里养成的好习惯是足以收益终身的。总的来说,培训班速成虽快,但是收益很肤浅,而把握好了大学,足以受益终身。至于mooc,大部分内容书本上都有,老师的讲述也比不上课堂互动时的生动,就当给所有人提供一个圆大学梦的机会吧。

5,学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学。这和我们的专业有关系吗?”你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那其他学科呢?

在大一学年,培养计划安排了线性代数、微积分等等数学课以及大学物理等公共基础课。当时我心里确实充满了疑惑:需要学这么多数学吗?大一学年居然没有安排专业课程?大家的课表似乎都是一样的?等到大三大四,才深刻的明白当初的想法有多么幼稚。在大三大四的专业课程中,很多课程的选课人数只有20余人,远远少于公共基础课时乌泱泱一大屋子。这是因为大家针对自己的兴趣爱好与个人特长做出了不同的选择。如果大一刚进来直接搬上专业课程,能选吗?更为重要的是,几乎在任何一门专业课的学习中,都要用到基础课的知识。比如自动控制,建立模型需要用到大学物理的知识,现代控制理论中更是成片的矩阵运算,如果不打牢数学课和基础课的知识,后续专业课的学习会无比艰难。

第三部分:未来规划

1,你有什么样的梦想或者未来从事什么样的工作?你准备怎样规划你的技术道路,职业道路和社会道路?

如果说梦想的话,我梦想成为一名很厉害的游戏开发者,做出自己很满意的游戏或者做出让大众接受的游戏会让我很有成就感。不过由于身份的特殊性,我可能无法成为一名计算机相关的从业工作者。我首先是做好本职工作,一丝不苟,然后在此基础上发展自己的兴趣爱好。

2,你对于实现自己的梦想已经做了或者计划做什么样的准备?

本科的时候做过一个关于游戏的SRT项目。在Unity3D上搭建出游戏场景,然后用C#完成了后台编写,做出了一个粗糙的模拟消防小游戏。

第四部分:课程期望

1,你选这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?

我选这门课就是为了得到更多的软件编写训练。我计划每周用在这门课上的时间大于15小时。真正感兴趣的项目足以让我废寝忘食。

第五部分:软件分析

软件有很多种: ShrinkWrap(在包装盒子里面的软件)、Web APP ( 基于网页的软件)、Internal Software (企业或学校或某组织内部的软件)、Games(游戏)、Mobile Apps(手机应用)、Operating Systems(操作系统)、Tools(工具软件),选取三种软件,请分析它们各自的特点。

  1. 这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的?

  2. 你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,…….

  3. 我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。

  4. 你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的?  如何更新新版本的?  你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?

  5. 同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?

  6. 5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?

  7. 列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同?  这些能说明软件的某些本质特性么?

  Internal Software Games Mobile Apps
Q1

能够满足组织的需求;

以盈利为目的;

以赚取佣金为目的;

游戏的趣味性和可玩性;

以盈利为目的;

以赚取佣金为目的;

相比于同类软件的优势;

以盈利为目的;

以赚取佣金为目的;

Q2

在大一时使用校园网客户端;

在校园网上下载可得;

小学时玩俄罗斯方块;

手机自带;

初一使用手机QQ;

在网上下载得;

Q3

软件公司免费提供软件的原因:

1,为了抢占市场;

2,为了推广公司的品牌;

3,为了和同类软件之间比较交流

可能一两个软件或者服务是免费的,但软件工程师的工资最终还是来源于用户

武汉工程师的工资水平约8390/月

Q4 使用内部软件的过程中,遇到不会的多问一问自然有人解答;它们的设计好坏直接影响了我在一个组织中的生活体验;它们往往有人员运营维护,在网上发布最新版本后由用户自行下载。软件团队更新一个版本大约需要5~10个人工作1个月左右吧?如果让我来,额。。。。 游戏软件上一般都设计了用户教程,上手难度不大,否则影响软件推广。它们在带来趣味的同时,也容易消磨人的时间和精力。这些软件在发布前会有反复的测试,会尽快的解决游戏中存在的bug,一般在登录游戏时提供版本更新,版本不匹配无法游戏。我估计软件团队得用10+人用1个月左右完成一次版本更新。如果让我来,我可能就被解雇了吧。。 我会在朋友的安利下安装使用好用的手机APP,它们便捷了我的生活,但是也让我的时间变得更加碎片化。这些软件往往也会及时处理bug,会不定期更新版本,往往在打开软件是出现更新提示框,但不更新不会影响使用。我估计软件团队要用3~5人工作1个月左右完成一次更新。如果让我来做,我得一步一步摸索。
Q5 同一个类型的软件的竞争体现在下载量和使用量上。不过不同的用户群体需求不一样,在有的行业可能出现“垄断”现象,比如聊天软件,微信和QQ是绝对的巨头,但是在某些领域,比如游戏软件,百花齐放。我会选择最适合我的产品。
Q6 5年之后,运行软件的硬件应该还会有变化。硬件的集成度会越来越高,体积越来越小,运算能力越来越强。再过5年,软件依然会存在,并且功能将更加强大。随着技术的发展,软件将涵盖生活的方方面面。
Q7

1,硬件看得见摸得着,而软件是程序员们逻辑的产品;

2,硬件一旦老化就将面临淘汰,而软件可以不断的更新,除非产品理念被市场抛弃,否则不会被淘汰;

3,越来越多的软件是针对某一个具体问题而定制出来的,它不同于硬件可以有一条固定的流水线。

原文地址:https://www.cnblogs.com/seven-v13/p/8034465.html