《构建之法》--初探现代软件工程的大门
这个作业属于哪个课程 | [课程连接](https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign) |
这个作业要求在哪里 | [作业要求](https://www.cnblogs.com/harry240/p/11469058.html) |
我在这个课程的目标是 | |
这个作业在哪个具体方面帮助我实现目标 | |
我的博客主页 | [我的博客](https://www.cnblogs.com/cyh0813/) |
1.自我介绍
要说什么闪光点,我长这么大,我一直就觉得自己只是一个衰仔。我就是那种别人口中玩也玩不痛快,学也学不好的人。从小到大就贪玩,但从来没有玩出过什么名堂,喜欢电子竞技,喜欢说唱音乐,喜欢足球,喜欢跑步,喜欢一个人旅游,喜欢金融历史。硬要说什么特点,那就是要说到我最擅长的乐器:退堂鼓。打得那叫一个好!性格耿直,为人爽快,不喜虚伪。
2.阅读与思考
(1)回想一下你初入大学时对你所在专业的畅想
1.当初你是如何做出选择你所在专业的决定的?
当时的我只是觉得那些一天到晚敲代码的人很酷,这可能是电影里面的黑客看多了,还有就是家里面比较喜欢计算机相关的专业,于是就选了。
2.你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
对我个人而言,只能说大体上符合吧,我发现课程所涉及的还是太少了,而且结构有一些不合理,很多知识要靠自己去网上学,不过这样倒也培养自己的学习能力。
3.你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
我觉得还行吧,有一定程度的喜欢,擅长应该算不上,自己还是太菜了。
4.将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
会从事相关专业,毕竟这个行业待遇还是很好的,想去深圳。公司,是大厂的话,我就很满足了,岗位暂定后端吧。
(2)对照前人们走过的路和描述未来发展,现在的你
1.自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
专业知识,差不多就是一些基础算法,java的ssm框架,jsp,servlet,c#窗体也在涉及,python的算法因为最近的一个项目也在了解一些,还有就是前段布局也了解一点点吧。代码量这个没有统计过,应该不是特别多,我自己做过最复杂的一个项目应该就是我个人基于jsp与Servlet所做的网页用户管理系统,里面一些传参,分页什么,对我而言还是有很大难度。
2.离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
首先是技术上,我的技术还是太浅了,我没有一项特别精专的技术方面,还有就是对于软件工程整个项目的正规开发流程,团队合作还是不太了解。自己是想走java这个专业方面的,但是java的很多东西自己还没有学习。
(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
1.对照以上你阅读的前人们的经历,你的选择是什么?
倾向考研
2.在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势没有,劣势倒是一堆,英语一般,数学不好,项目经验也不足。
3.针对你的选择,你给自己的大三设定的规划安排是什么?
好好学习专业知识,同时也要为考研做准备。
4.你对于实现自己的梦想已经做了或者计划做什么样的准备?
考研方面的话,自己已经去了解过了一些东西。就业方面的话,也关注过一些实习岗位招聘。
3.问题
1.问题一
在教材第三章58和59页,以魔方的例子类比软件工程师的成长,文章中对魔方的技能层次专业的划分的层次,可以让喜欢魔方的人知道自己在哪一个层次,但是作为一本软件工程相关的书,我想知道一个软件工程师的层次划分又是怎样的?以此来判定自己具体是什么水平。
2.问题二
在16章的时候,关于IT行业的创新,作者列举了许多的的“迷思”,在这些故事里面,让我了解到了很多有趣的故事,故事内容让我看到了很多与常识不符的一面,比如说创新不一定要是专家,好的想法也不一定会赢,创新的人也不一定会喜欢创新。这些东西与常规理解相反,但是又有着一定的道理,往往打破常规,我在想有没有什么办法可以预见这些非常规方法的成功?而不是为了创新而去创新。
3.问题三
在第四章两人合作里面提到的结对编程,结对编程是一个需要磨合的过程,但有一些人确实不适合结对编程,那么怎样去判断一个人是没有找到合适的结对编程对象还是说真的不适合结对编程?结对编程有比较适用的特定场景吗?
4.问题四
在第11章237页,书中把我们学校所学比作定点投篮,把构建比作实战中的运球,传球。这样让我感觉,学校所学和实际所用有着一定的差别,我们在面对一个项目的时候毫无构建经验,那么有什么办法让我们在学校期间就可以接触到一些构建的事务?
5.问题五
在第16章的时候,有一个让我记忆深刻的例子,大牛会两手在屁股后面翻魔方,其实我一开始想到的是大牛人正对着同学,屁股在后面,但是例子和我想的刚好相反,我很想知道我的想法会不会稍微改善一下大牛面对小芳时的误会?究竟是屁股对着目标用户,还是正对着目标用户,或者都要做到才会有一个好结果?怎样避免一个技术型的埋没?
4.项目管理工具
1.git
-
优点:
-
适合分布式开发,强调个体。
-
公共服务器压力和数据量都不会太大。
-
速度快、灵活。
-
任意两个开发者之间可以很容易的解决冲突。
-
离线工作。
-
缺点:
-
资料少(起码中文资料很少)。
-
学习周期相对而言比较长。
-
不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
2.github
优势:
1.完整的支持Markdown语言,而且支持Emoji表情
2.支持直接复制图片到页面,会自动上传图片(非常好的功能,知乎也支持)
3.比较好的支持Mobile。虽然github没有手机客户端,但是一般开发者,写好的blog都会通过微博进行分享,所以点击过来之后,就可以在手机浏览器里面访问。
4.使用github原生的功能,就可以进行类似评论的功能
5.支持@用户功能
6.支持标签,当然是你repository里面
7.强调个人,符合hacker更看重名誉/成就感的天性
8.功能设计简洁实用上手很快,可用性好,已有很多相当质量的各类项目和优秀开发者在上面。
劣势:
(对个人而言)
1.GitHub 使用 git 分布式版本控制系统,而 git 最初是 Linus Torvalds 为帮助Linux开发而创造的,它针对的是 Linux 平台,git 和 Windows 从来不是最好的朋友,因为它一点也不像 Windows。GitHub 发布了GitHub for Windows,为 Windows 平台开发者提供了一个易于使用的 Git 图形客户端。
2.国内访问速度太慢,经常出现connect time-out
3.不能很好的解决GB2312/GBK,对中文不够友好
优点:
- 对于小团队免费,这意味着最多5名成员的团队将获得无限数量的免费存储库。
- 支持Git,CodePlex,Google Code,HG,SourceForge,SVN导入。
- 集成Jira工具。BitBucket和Jira在整个开发阶段都做了整合,通过集成的错误跟踪组件,JIRA自动更新有关检测到的问题的信息。
缺点:
- 代码不开源
- 系统经常不稳定,容易出问题