第一次阅读和准备作业
请大家在作业开头添加格式描述:
这个作业属于哪个课程 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 |
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713 |
我在这个课程的目标是 |
希望可以正式踏入软件工程师这一行业,拥有成为一名真正的软件工程师的能力 |
这个作业在哪个具体方面帮助我实现目标 |
通过各种书籍资料,和老师的经验传授,我正在逐渐了解成为一名软件工程师所必需的要素 |
作业正文 .... |
注意代码要按格式上传 |
其他参考文献 ... |
|
一.建立博客并介绍自己
- 在cnblogs.com上注册开设博客。(我的博客地址:https://www.cnblogs.com/wyj1208/ )(PS:本次作业的三大题与四大题我将写在另一篇随笔里,都在我的博客中)
- 我是来自软件一大班的吴雨锦,17级学生。正在努力向着自己希望的方向发展。
- 我是个对很多事都很感兴趣但是总是三分钟热度的人,喜爱绘画与游泳以及各种运动。但是很神奇的并不爱出门。
- 内心观念永远是事再差天也没塌,尽力去做。享受好活着的每一天。
二.阅读与思考
(以下内容参考和转载于 北航助教 陈彦吉的 博客 http://www.cnblogs.com/ChildishChange/p/7363123.html )
同学们在上这门课的时候已经大二下期了,你现在面临的困难与迷茫,前人也一定有过。请看看别人怎么学习的,有些是科班,有些是野路子;有些成功,也有失败。请读完下面所有博客 (读这些博客你不吃亏,你也不上当!它们都是血泪经验或教训铸成的文字!)
主题 |
索引号 |
阅读前提问 |
链接 |
科班出身 |
A |
把每天把要做的事情分成ABCD四类:A-紧迫且重要;B-重要不紧迫;C-紧迫不重要;D-不重要不紧迫。你如何保证你的效率? |
|
|
B |
你是否也觉得自己是科班,但没学懂计算机? |
|
|
C |
把每天胡思乱想的东西记在一个笔记本上,作为思维快照,并常常翻回去自省,看看过去和现在的变化。这样的习惯呢? |
|
|
注 |
以上三篇来自《IT小小鸟的故事》 |
|
|
D |
偏科生自学摸索的道路。实习经验对应届生重要吗? |
|
|
E |
速成的培训班和打基础的大学教育有区别么,你是否对大学的基础学科存在的必要性有疑问? |
|
非科班出身 |
F |
很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课? |
|
|
G |
半路出家,认真学习,对自己狠心,不断在实践中进步 |
|
|
H |
文科生转编程与他对大学教育的批判 |
|
大佬的博客 |
I |
技术栈和大佬的爆栈之旅 |
|
|
J |
大佬在职场中的摸爬滚打 |
|
|
K |
大佬给出的职业规划建议 |
|
|
L |
热情、能力、选择 |
|
|
M |
大佬的成长史与如何进入微软亚研院,他的知乎 |
|
一流的大学 |
N |
第一流的本科教学课堂该是什么样? |
|
|
O |
美国研究生的一些计算机课程和你上过的专业课有什么不同? |
|
|
P |
你在大学中体验到了哪种师生关系?你希望在这门课中采用哪种师生关系? |
|
|
Q |
世界一流大学怎么教软件工程?这种方式是你喜欢的吗? |
|
补充阅读 |
R |
不要轻易在简历上写我热爱编程,我热爱学习。你对计算机的热情是怎样的? |
|
编程人生 |
S |
文章较长,可以暂时不看 |
|
|
T |
文章较长,可以暂时不看 |
阅读以上材料,并回答下面几个问题:
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
- 当初高考结束报考学校,由于本人比较偏爱计算机,从小就在家里人的指导下接触它,所以当时根据分数和各种现实因素,选择了软件工程和各类计算机专业,最后幸运入选软件工程专业。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
- 过去两年里我学习了如何用C语言,C#来编写程序,并且初步学习了数据结构和算法,同时对数据库也有了基本的认知,虽然我认为这些知识在前进道路上还远远不够,自身也要努力自学感兴趣的内容,但是就从课程来侧面反映我的专业的话,是非常符合我对自己本专业的期待,严谨的数据逻辑也充满了魅力,当然遇到我实在无法擅长的物理类课程就还是另当别论吧。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
- 软件工程是我喜欢的领域,因为我喜爱这种创造感,用自己的双手编写全新的东西,并且在工具的帮助下使其运作起来,不管是系统还是小游戏或者简单的计算程序,当成功创造时都会使我感到由衷的高兴。但是如果论其擅长与否,实话来说,我认为自己在编程上的能力实在普通,通过学习和练习或许会很熟练,但是在各方面都不如一些真正有天赋的人,我的创新思维和突破格局的能力非常弱,一些问题别人初次拿到进行编程总能从一些不同的方向得到进展, 但我总是难以逃脱僵死的局面,在思维上的僵硬或许也是我没有找到真正的方法来练习,但未来我依旧会为此努力,尝试突破自我。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
- 将来我希望自己能够选择从事软件开发相关的工作,但具体的岗位与公司我还无法给出,因为我也仍在纠结和思考,还有一种或许还远,我还要考研等思想。当然最主要可能是我对本专业的了解还不够深入。我只能说如果可以我希望能够前往更大的城市,尤其是在电子科技方面发展迅速的深圳广州等地,可以让我看到更多的新东西,毕竟即使未来渺茫,我还是愿意对这个软件的世界充满好奇。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
- 自我感觉本人目前只具备的只有浅薄的C语言,C#的编写程序能力,对数据库的使用,对数据结构和算法的一些运用。写过的代码量没有仔细估量,但是自认还很少,至少本人还达不到对某一种运用熟练的地步。
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
- 我认为自己对于数据结构与算法的了解太过浅薄,以及对C语言的使用非常浅显,诚如上面所说,在编写代码上我缺乏的思维的突破与创新,但同时感觉自己的基础还大有问题,并且在自己未来发展方向上也充满了迷茫,距离能够合格实在还差了一大截的距离,包括能力素质以及思维方式等等方面都还没有一个专业软件工程师的雏形。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
- 我的选择是考研, 在目前的时代背景下,我认为学历依旧是很重要的东西,并且学到真正有用的东西和能够跟随有能力的专业人士学习都是非常难得的,我还希望可以在本专业上更进一步。
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
- 我对其他同学来说大概没什么优势,硬要说大概只有已经思考要考研并且可以早点做准备。但是我的英语与高数成绩都不甚理想,这大概是我最大的劣势,正在着手弥补。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
- 大三期间我会认真学习各类专业知识,并且逐步提高我的高数和英语成绩,在六级考试中以足够好的成绩通过。并且开始了解考研的情况,还要做好如果一旦失败面对的各种选择。
三.提有质量的问题
-
1. 书P40页中,“从软件构建方面扩展”中,如果是把一个已有的软件从一个平台迁移到另一个平台中,应当怎么办?我一直对于各种软件分别有电脑和手机两种版本报以好奇,比如QQ与手机QQ,主要的区别在哪里?技术层面上是如何迁移的?我通过了百度进行简单认知,但是并没有找到比较深入和详细的解释。
2. 书P4中,“软件行业还有一个行规,即应该有职业道德规范来约束IT人的行为”。那么如果没有更具体和详细的法律规范各种在软件上商业行为,那么我如何学习和认知这些职业道德规范?
3. 书P48中“不分主次,想解决所有依赖问题”,与“过早优化”等问题。那么我们如何判断问题解决的优先顺序,什么样的问题应该被首先解决?谁来判断正确与否?或者说应该由谁来判断是最合适?测试还是开发?
4. 书P160中,“竞争性需求分析的框架”,其中提到了对创新的理解,我认为无论对待什么事,有创新的思维和突破式的想法都是好的,但是什么样的创新想法是值得被肯定的和去实践的呢?我们在编程中的创新应该怎么妥善去运用?而我如何培养敏锐的创新思维?
5. 书P187中,“PM做开发和测试之外的所有事情”,使我想起曾经见过的一则新闻“程序员因为PM提出了难以实现的要求,一再沟通依旧无效后终于爆发矛盾”。那么PM如果不靠谱,身为一个编程人员我要怎么做?如果出现沟通都失误的情况,我要怎么处理局面和矛盾?
-
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
-
TFS
优点:
1. 采用扁平化的数据组织结构
2. 使用HA架构和平滑扩容
3. 支持多种客户端
4. 支持大小文件存储
5. 可为外部提供高可靠和高并发的存储访问
6. 支持大文件功能
7. Resource Center Server,用于管理TFS集群的用户资源配置
8. TFS服务程序开发框架,统一TFS网络客户端库,并新增异步回调功能
9. 优化数据流,让写请求尽可能均匀的分布在不同的DataServer
缺点:
1、小于1M的文件
2、TFS内部是没有任何数据的内存缓冲的
适合单个文件比较小的系统
- Git优缺点
优点:
1、适合分布式开发,强调个体。
2、公共服务器压力和数据量都不会太大。
3、速度快、灵活。
4、任意两个开发者之间可以很容易的解决冲突。
5、离线工作。
缺点:
1、学习周期相对而言比较长。
2、不符合常规思维。
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。 - GitHub优缺点
-
优势:
· GitHub可以作为一个版本控制系统和协作工具,用它来发布工作
。· 利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。
· 创建自己的项目,并备份,代码不需要保存在本地或者服务器
· Git最好的特性之一是能够跟踪错误,这让使用Github变得更加简单。Bugs可以公开,你可以通过Github评论,提交错误。
· 在GitHub页面,你可以直接开始,而不需要设置主机或者DNS。
缺陷:
· 需要不断实践和时间。
· 可能不是捕捉创意过程和记录创意点子的最佳工具。
· 如果专门在GIthub上工作,版本控制存储库就值得你拥有,也需要长期付出。