2017年秋季学期软件工程第一次作业(曹洪茹)
作业一
在开始作业要求的正文之前,我先简单谈谈自此课开课以来,包括读了许多大牛写的博文之后的几点感悟和思考。
首先,作为一名有四年地方大学生活经验的军校研究生,我很激动也很庆幸在研究生阶段能遇到这么一门真正实现本科教育改革创新,以培养学生思维逻辑能力、切实达到教学目标为为目的的课程。同时,比较讽刺的是,在崇尚思想自由、开放、创新的地方本科院校没有邂逅的这种课程反倒让我在军校这个相对封闭化、教条化的环境中接触到了,这主要得益于何老师对教育的前瞻性的战略眼光。其次,我对这个课的课堂模式是持支持态度的,但是对这门课在军校这个大环境下的实施和作用的发挥仍存有疑虑。我在写这篇随笔的时候,刚刚接受了大队一系列教学管理规定教育,在一个队长会去跟着听课、查课的学校里,体制下他把学生当成了小学生来管理,在“美国视界(1):第一流的本科课堂该是什么样?”中提到的自由、开放的学习根本无法实现,我想象不出这门课能在学校的本科教育中存活下去并发挥很大的作用。再次,软件工程是一门紧跟时代的课,他需要有严谨的逻辑,有创新的思维并保持时刻学习的能力和自觉性,我个人感觉它与军校大环境下的培养目标是有所出入的,他们二者的侧重点不同,侧重于服务国家的军队的新一代人才首先必须要有政治信仰,这也决定了本科的=阶段的培养模式化弊端太严重,它所培养出来的学生思想太僵化,完全是为部队服务的。因此当我看到文章中介绍个人职业规划和简历书写时,只想多这个可能与我的职业生涯没有太大关系。包括在研究生阶段,我也在矛盾搞科研和军事素质之间的关系,并不是觉得二者不可共存,只是感觉要处理好二者之间的关系或者说找到某种平衡或者某种良性发展模式有困难,但是我仍没有放弃努力寻找。
第一部分:结缘计算机
1、计算机是你喜欢的领域吗?是你擅长的领域吗?
女生,相较于男生而言,可能对计算机不怎么擅长,也许是由于性格原因,缺少了对这种计算机电脑这种大家伙的好奇和探寻的热情。小学时候,最开始接触计算机是在学校的信息课上练习打字,只是觉得神奇。后来初中高中,接触了更多与计算机有关的东西,甚至有信息化竞赛等,但都没有参加。总之,计算机这个领域我并不擅长,甚至在看博文时有许多专业名词术语我都不知道是什么意思,但我觉得这并不妨碍我在此时此刻踏入这个领域,了解他的魅力,当你真正想做一件事的时候,多晚都不算晚。
2、你对计算机的热爱是怎样的?仅仅是口头的吗?
热爱和兴趣大概是让一个人心甘情愿的去做某件事的第一源动力吧。我本科专业是电子信息工程,只是有简单的编程基础,对计算机知之甚少,我不敢说对计算机热爱,我在尝试了解他,计算机领域也算是一个对新学者无甚多要求的领域,我相信我会发现编程之美,发现软件开发过程中的逻辑之美,最终爱上这个领域。
第二部分:学习生活
1、你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?
其实现在想起来大学生活还是有点后悔的,想吐槽的地方也蛮多的,但是这不是针对我的母校,而是对当下的本科教育风气和我对我自身要求不严、发展规划不清晰的一个总结吧。首先是本科教学,提了改革,不乏有创新性课程出现,也不缺负责任、堂堂板书的好老师,但是实际上整个并没有太大的效果,关键可能在于人,在于人的思想没有转变,大学生被高考完上了大学就轻松的言论骗的不轻,老师深陷于科研、圈钱、发论文、评职称不能自拔。完全借鉴国外的教学模式不现实,它缺少有开放性观念的一群人做基础,但是我们依旧不能气馁,还是要改变,要在现有的体制下,寻找一种合适的发展模式,循序渐进的引导大家进行思想转变。现有教学模式下,并非所有人都浑浑噩噩、敷衍了事,也有很大一部分十分优秀的人,通过大学的资源平台,真正实现了自己职业生涯的规划,这就牵扯到自我要求的问题。你要勤于思考,善于总结,知道自己想要什么,要做到一个什么标准,要怎么去实现自己的目标,这正是我大学四年所缺少的东西,完全按部就班,缺少对个人的突破。
2、迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
这个问题可能有点尴尬吧。写的代码量可能就是为了准备计算机二级考试所做的准备,包括本科C语言课程、嵌入式、数据结构等的开设,接触过几种不同的编程语言:汇编、MATLAB等,但都是最浅的了解,都没有深入学习过,负责开发的软件项目当然也就没有了,但有过跟本科专业有关的嵌入式硬件的开发,如简单火灾报警器的制作。总之基础非常薄弱,道阻且长吧。
3、学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的专业有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
本科时确实有过疑问,那还是在基础课学习阶段,没有深入到专业课学习,因此不了解公共基础课在专业领域的应用,但是现在没有这个疑问了。首先,数学课对是对工科生严谨的逻辑思维能力的一种锻炼,其次,它确实构成了很多专业领域的基础,一个没有数学基础的人很难进行任何一个工科领域的深入学习。
第三部分:未来规划
1、你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
谈到未来规划,这是一个很尴尬的问题,体制内的人可能有不了太多对未来的畅想(出国深造、去华为等大企业工作),但是选择当兵总是因为有那个军人梦在的,用我所学习的知识技术,强大国家信息化作战力量。可能听起来有点大,又或者未来很残酷,限时很骨感,只能待在基层值班、整内务、跑步练体能,但是我相信,梦想总有他存在的价值,即使一时不能实现,仍要保持激情,就算在平凡岗位上干着与专业知识毫不相关的工作,也要带着热情用创新的思维干出不平凡的工作。
2、你对于实现自己的梦想已经做了或者计划做什么样的准备?
好好学习,强化专业知识储备,使自己成长为一名有独立思考能力、独立解决问题能力、独立开发能力的程序猿。落实到日常中就是把每一件简单的小事做好,多思考,多总结,锻炼思维逻辑能力,争取每日一进步。
第四部分:课程期望
1、你对这门课的期望是什么?你打算平均每周拿出多少个小时用在这门课上?你愿意为了一个你感兴趣的项目、或得到实战锻炼而付出更多时间和精力(包括熬夜)吗?
想学到更多的东西总要付出比别人更多的时间和努力,学东西的过程也是比较艰辛的,但我相信我可以做到。本来以为这门课是学习某一种编程语言,但实际与我想象的有太大差别,编程基础不好的我只能课下加班了。心中有目标,整个人就像打了鸡血一样,熬夜都会困,我就处在这种状态下,非常期待在作者和老师的指导下,最终在学期末能得到较大的提高。
3、分析软件
Games(游戏)、Mobile Apps(手机应用)、Operating Systems(操作系统)
1、这些软件的开发者是怎么说服你(陌生人)成为他们的用户的?他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的?
Games(游戏):娱乐、兴趣需要,以盈利为主,赚取用户的关注度
Mobile Apps(手机应用):工作生活需要,以服务为主,赚取用户的关注度
Operating Systems(操作系统):工作需要,以服务为主,兼顾盈利,赚取用户的关注度
2、你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,…….
Games(游戏):小学时接触,基本为免费的,从应用商店下载的
Mobile Apps(手机应用):大学有手机之后接触的,从应用商店下载的
Operating Systems(操作系统):有电脑之后关注的,直接从网络上下载的
3、 我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢?目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。
用户关注度是第一生产力,有了用户,广告自然而然就会有。
另外,使用软件产生的大数据在现在这个时代背景下也是非常珍贵的资源。
4、你是如何学会用这软件的?它给你什么好处,坏处?这些软件是如何处理 bug 的? 如何更新新版本的? 你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?
软件学习方面,游戏和手机APP相对来说学习没有太大难度,工具类软件则主要通过书籍和视频学习,先从大致上了解流程,再仔细学习。
5、同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?
一个是用的人多了就会有更多人用,另一个用户体验和功能实现也是考虑的很重要的一方面。
6、5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?
我觉得软件很长时间后还会存在对这个软件的功能和后期维护退出了很高的要求,他必须与时俱进,时刻跟紧大众需求,我认为这非常难实现。