个人第一次作业
这个作业要求在哪里 | 作业要求 |
---|---|
这个作业属于哪个课程 | 系统分析与设计 |
我在这个课程的目标是 | 取得较好的分数,和团队一起成功完成项目,对“软件工程”有更清晰的认识 |
这个作业在哪个具体方面帮助我实现目标 | 对软件工程有更清晰的认识,告诉我什么是软件工程以及软件流程 |
1.建立博客并介绍自己
我的名字叫做黄睿,大三,刚定下考研的决定,现在正纠结于目标院校,是四川人却不喜欢吃辣,学习软件工程专业却不想从事IT,考研却也不打算跨专业,我应该是一个还没有目标的人。对于闪光点,小的时候学过5、6年画画,应该有专业九级的水平;学过短短一个月钢笔字,却在学校、县里得过不少奖项,大概是有天赋;高三毕业的一段时间沉迷于唱K,被一些朋友称作麦霸。
2.阅读与思考
(1)回想一下你初入大学时对你所在专业的畅想
- 当初你是如何做出选择你所在专业的决定的
网上对于计算机专业的评价很高:就业率高、工资高;我本身对于所有大学专业没有太喜欢的;很多很多领域需要用到计算机;我相对来说英语、数学较好 。 - 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
不是很满意。一些理论性的课程占比太大,比如设计模式、计算机科学基础、管理学,对于还没有项目经验、足够代码量的我们意义不大,而我认为真正重要的专业理论课程(数据结构、数据库、计算机网络、操作系统...)只学习了数据结构。 - 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
它不是我喜欢的领域,但因为我对于数学感兴趣、英语基础不错,我觉得相比一部分同学更加擅长这门专业。 - 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
七成的可能性不会,因为还是觉得IT行业吃青春饭,我想要稳定的生活,因为家庭的缘故他们想让我去考公。
(2)对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
看了表格中的大神们的学习经历,自我感觉我已经具备的专业知识、技能仅仅只有《数据结构》的较大部分概念知识(并没有深入了解和动手实践),C语言的常规操作,设计模式的一部分经典模式的概念等已开设专业课的基本知识与技术,自我学习能力还不错。代码量应该只有同班同学的中游水准。我做过的最复杂的项目是一个基于servlet+mysql+jsp的酒店管理系统,从前端到后台到数据库,一行一行的敲代码。 - 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
专业知识的差距除了还没有开设的专业课的知识,还差算法和数据结构的动手实践。技能上应该“精通”至少一门高级语言。能力上自我约束的能力、与人沟通的能力还需加强。
(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
我的选择是考研。因为现在的本科生在就业竞争下没有优势;本科能学到的知识、所看到的眼界、所获得的经验实在不多;想去更好的学校,接触更好学校的老师、更好学校的同学。 - 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
我的优势在于:我的绩点在年级排名相对靠前;数学和英语相对较好;学习效率相对更高。我的劣势在于:我会很担心是否能坚持下去一年的持续学习;看不下去书,尤其是政治;对自己定位不明确,可能给自己定的目标太高。 - 针对你的选择,你给自己的大三设定的规划安排是什么?
大三上期数学建模国赛获奖,组队参加专业上的竞赛获得项目经历,明确考研目标,开始准备英语和数学的复习;大三下期全心考研,同时学好核心专业课。 - 你对于实现自己的梦想已经做了或者计划做什么样的准备?
准备参加数学建模国赛;搜集考研相关信息;准备考研所需的专业知识、技能。
3.提有质量的问题
- 问题一:我看了这一段文字,(关于第三章初级软件工程师的成长)
1.积累软件开发相关的知识,提升技术技能。
有这一个问题:
对于初级软件工程师和高级软件工程师在技术技能上的差距,仅仅只是对具体技术掌握的熟悉程度吗?
我的思考:
在技术更新如此快速的当下,我认为软件从业者对于技术的掌握还应注重的是:当新技术出现时,归纳类似技术、修改已有认知的能力。高级软件工程师这种能力应当更强。
- 问题二:我看了这一段文字,(关于第四章如何结对编程)
2.领航员:审阅驾驶员的文档;监督驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。领航员也可以设计TDD中的测试用例。
有这一个问题:
领航员和驾驶员的角色是不断轮换的,技术水平较差的领航员是否能够解决技术更好的驾驶员的技术问题?是否反而降低了工作效率?
我的思考:
在使用结对编程时,需要具体问题具体分析,不可盲目,以最大的工作效率为目标,适当改进策略。
- 问题三:我看了这一段文字,(关于第五章秘密团队模式)
这样的团队往往能发挥超高的效率完成看似不可能的任务。
有这一个问题:
在作者的叙述下秘密团队模式几乎是一个完美的团队模式:“超高的效率”,“完成不可能的任务”。秘密团队模式有缺点吗?什么样的团队适合秘密团队模式呢?
我的思考:
秘密团队模式应该适用于当项目遇到技术上的瓶颈,需要克服的时候,在此时不需要领导的指示、介绍项目进展,因为目标很明确:解决这个问题,但是当项目很大,没有了领导的指示时,因为自由度太大很可能会降低工作效率。
- 问题四:我看了这一段文字,(关于第六章敏捷流程的经验教训)
8.在大型团队、跨地区的团队,或者复杂项目中,Scrum并没有非常完美的答案,Scrum的创始人也承认这一点。
有这一个问题:
在大型团队的项目中,是否可以沿用敏捷开发的思想,将部门再细分,每个小部门解决部分需求?从而让复杂项目也能采用敏捷开发?
- 问题五:我看了这一段文字,(关于第十六章创新的迷思)
但是在现实中,好的主意不一定赢。
有这一个问题:
为什么好的创新不一定会赢?这难道不是一件好事?
我的思考:
1.好的创新不一定会有好的安全性,为了创新大众可能会失去安全性;2.人们的习惯难以改变,改变的代价可能大于创新带来的好处;3.好的创新不一定具有好的可行性。
4.了解和调查源程序版本管理工具
(1)Bitbucket
- 优点:
集成Jira工具。BitBucket和Jira在整个开发阶段都做了整合,通过集成的错误跟踪组件,JIRA自动更新有关检测到的问题的信息;
私人项目免费,且不限容量,所以个人项目一般使用Bitbucket。 - 缺点:
不开源;
系统不稳定。
(2)GitHub
- 优点:
可以作为一个版本控制系统和协作工具,用它来发布工作;
可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。 - 缺点:
学习周期相对而言比较长;
代码保密性差,游客可以看到所有代码和版本信息。
(3)Rational
-
优点:
功能强大;
文件夹形式的管理,可以对测试用例无线分级。 -
缺点:
本地化支持不太好;
测试用例很多时候不太稳定,有时会造成测试用例的丢失;
必须安装客户端才可以使用,和开发人员交流不方便。