《构建之法》——第一次博客作业

这个作业属于哪个课程 课程的链接
这个作业要求在哪里 作业要求的链接
我在这个课程的目标是 学习集体项目开发经验,学会项目的系统分析与设计过程。
个人博客主页 https://www.cnblogs.com/chenVal/

一、建立博客并介绍自己

自我介绍:我是一个对新技术感兴趣,什么都想学,但是什么都没学到。爱吃,爱动漫,爱看书。基本什么都爱,就是不爱运动的技术性宅男。我感觉我的适应性挺强的,以此衍生出在适应的时候学习能力挺强的。心态好,但是心态一旦蹦了就一发不可收拾。至于什么时候心态崩我也不知道,有时候特别能沉住气,有时候不能,薛定谔的心态~

二、阅读与思考

(1)回想一下你初入大学时对软件工程专业的畅想

a.当初你是如何做出选择软件工程专业的决定的?

我从初中时候就接触了计算机开发相关内容,并开始了用一些专业软件做游戏的补丁。从那时就决定大学非计算机专业不读。填志愿的时候,了解了什么是软件工程,觉得这是适合我的职业就选了

b.你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?

到目前为止,基本符合我的期待。我想学到的知识,在学校都能接触到,接触不到的。也有学长帮忙解答。

c.你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?

现在大三了,我可以说出软件工程是我喜欢的专业。坐再电脑面前敲代码,就感到一种无穷的愉悦感,感觉比平时打游戏还来劲。我不敢说我擅长敲代码,但是我敢说敲代码是我所学的东西中所擅长的

d.将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因

我这行,不做这行的相关工作岂不是浪费了大学的时光?所以我肯定会从事软件开发的相关工作。如果可能我想去沿海城市发展,因为那里有着相对较好的工作坏境与待遇,而且阿里腾讯等大公司都在沿海。进入阿里是我的目标,但是现在太菜了,啥都不会只能继续学习,争取明年冲一冲,成为阿里的后端开发工程师。

(2)对照前人们走过的路和描述未来发展,现在的你

a. 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。

​ 因为我是上学期才确定走后端开发方向的,所以自己之前什么都学习过,学得杂,但是每一样都只了解一点,这也是我学习进度落后大佬们的原因之一。我个人目前学习过:安卓app简单开发,C#游戏开发,c#窗体应用开发,神经网络算法,JavaWeb开发。至于代码量,无法估算,只能说保证每天都在写,但是自我感觉代码量还是远远不够的,特别是现在对spring框架的代码 和Java部分基础代码不熟悉。到目前为,我做过最大的项目是使用springboot + Mybatis + Maven +云端OSS存储 + thymeleaf模板为后端,BoostStrap框架 + html + css + js + jQuery + editor.md等作为前端的个人博客系统。

b.离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些

​ 我个人觉得自己还有很多很多没学,jdk源码,spring源码,java并发,jvm虚拟机,mysql优化,tcp/ip,分布式这些我都还没学。技能上来看,我之前的个人博客重构了几次才搭建完成,我的项目掌控能力以及规划能力不足,很多时候事前准备不足,导致后期加需求发现没办法加入了,只能重构底层。

3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

a.对照以上你阅读的前人们的经历,你的选择是什么?

大一的时候想考研,但是自己发现读研那个过程和读书并不适合自己。选择了走技术路线,所以重心放在了搞技术上。但是慢慢地发现,高学历对自己的影响挺大的,读研又不适合自己。所以我暂时想的是先工作两年,有了一定的生活经历和积蓄。工作两年之后如果初心未改,会选择去日本留学。

b.在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?

我觉得自己的优势在于,技术的学习上比其他同学稍快一点,大学相对压力更小一点。但是现在考研的人越来越多,本科学历相对贬值,如果不能毕业找到好工作也后就更难了。

c.针对你的选择,你给自己的大三设定的规划安排是什么?

目前阶段自己的学习计划看完jdk源码,spring源码,java并发,jvm虚拟机,mysql优化,tcp/ip,分布式相关的博客或者书籍,在寒假利用分布式,并发技术写一个相关项目。看面经积累经验,准备找工作面试。

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

只有不断努力

3.问题

问题1

在教材第五章中第一节中举了个“乌合之众”的例子,但是现实中有很多大公司比如华为经常将项目外包出去。通常是几个小公司一起做一个项目,这些公司比作个人的话就和例子中的乌合之众一样,那么他们可以叫做团队,细化到个人为什么就不是团队了呢?我个人觉得团队就是为了完成一个目标集合在一起一堆人的称呼,至于分工以及其他事聚集在一起后的分类。而且高效的团队必然会有充足的后备方案,技师团队的成员中途退出一个,也不影响整体进度,这一点也与书中的乌合之众的特点一样。所以我觉得书中关于乌合之众和团队划分过于草率

问题2

本书第八章关于软件需求的分析。根据用户的需求开发软件。这让我想到了现在的QQ与微信,按道理说QQ的功能更多使用更方便,更符合人们的使用需求,但是微信的使用人数却比QQ多,这不是与书上说的矛盾吗?而且微信有的功能QQ几乎都有,甚至更好用,比如文件传送,聊天管理等等,但是为什么依然有这么多人倾向微信?就因为微信更适合年纪大的人吗?但是前段时间我教我爷爷使用智能手机,QQ微信都教了,他老人家先学会QQ并说微信不够智能,他已经超过80岁了。我在网上也搜索了相关例子,两者都不知道的人学习使用,都觉得QQ会更好。那么是什么造成现在这个局面的?这里只是举个例子,市面上还有很多这种更贴切,更方便的软件不占优势的例子。所以软件需求分析,分析出的结果真的可靠吗?

问题3

在第十六章有关创新的内容。书上说创新被所有It工作者讨厌,但是现在行业的情况时技术日新月异。而且新技术的出现是弥补旧技术的不足。既然是弥补不足的为什么会被讨厌?比如我个人就比较喜欢接触新技术,之前我在使用springboot开发个人博客时,之前使用的是springboot1.x版本,其中有关Redistemplate生成的地方有使用风险,如果在后续的使用过程中没有判断该内存是否存在,就会抛出异常,但是在springboot2.x版本使用了新的方法生成,就不需要了。算是弥补了这个BUG,这个创新不是极大改善了编程体验吗?而且之前springboot没有出现前,使用ssm进行开发,需要各种繁多的配置。因此ssm配称为配置地域,现在springboot开发非常方便。仅需很少配置就可以运行。现实技术的进步情况和IT工作者厌恶创新这种说法矛盾了。

问题4

在第十二章的用户体验,其中提到了关于遥控器的例子,我想起了我家的遥控器有两个,一个按键很多功能齐全,一个仅有几个必要的按键。它们都不能满足我的需求我往往都是两个一起使用,但是这样也不方便。久而久之我很反感看电视了。书上说从用户的角度出发考虑问题,如果用户的需求是矛盾的呢?就好比我使用遥控器的例子。而且我父母喜欢用功能少的遥控器,我因为偏向于功能多的,这种人群的使用体验矛盾,书中并没有说明如何解决。在这种情况下是不是考虑体验优先,功能其次?

问题5

本书的第四章两人合作中,如果两个人有技术差距时,我个人觉得是不好处理的。因为我之前带过别人,也被别人带过,清楚那种感受,如果两个人有技术差距时,强的哪一方就会觉得对方做的不够好,而对于弱势的一方来说这是他做的最好了。最后都是强的一方包揽了所有工作。结对编程需要时间去培养默契,找到一个平衡的点,但是这也需要时间。所以我觉得如果不是花费时间特别多的项目,或者一个人需要大量时间开发的项目。结对编程不是最好的选择。

项目管理工具

1.git:

Git是分布式版本控制系统。追踪计算机文件的变化的工具,也是一个供多人使用的协同工具。

官网地址https://git-scm.com

优点:

1、因为是分布式,所以每个参与开发的人的电脑上一个完整的仓库不用担心项目丢失;
2、可以离线操作;
3、强大的分支管理功能。

缺点:

1.git没有严格的权限控制,一般是通过系统设置文件的读写权限来做权限控制。

2.工作目录只能是整个目录,而svn可以单独checkout某个有权限的目录。

3.学习成本大,难以上手

2.Github

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。 --百度百科

优点:

1.功能强大,

2.开源项目多,

3.将项目存档,可以分享交流,并让其他用户帮助你一起完成这个项目。支持多人共同完成一个项目,因此你们可以在同一页面对话交流。

4.适合分布式开发,强调个体;

缺点:

1.界面不太友好,初学者不易搞懂功能

2.资料少,学习成本比较大,学习周期比较长

3.代码保密性差

3.Apple XCode

优点:

1.自动创建分类图表。

2.提供自动各种强大的功能,且无需编写编码,减轻开发负担。

3.开发IOS和Mac特别方便

4.便捷的代码管理器,自动生成类关系图、函数方法列表等

缺点:

1.不稳定,容易出现插件丢失

2.只提供调试功能。

3.局限于ios和mac

posted @ 2019-09-07 23:05  EstelleAils  阅读(333)  评论(2编辑  收藏  举报