个人第一次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience |
---|---|
这个作业要求在哪里 | https://www.cnblogs.com/harry240/p/11469058.html |
我在这个课程的目标是 | 学会运用以前学习的编程语言、数据库等等相关知识进行软件的开发或系统开发,提高个人专业素质 |
这个作业在哪个具体方面帮助我实现目标 | 打下思想基础,学会博客的编写便于以后的课程交流,初步了解博客园 |
一、个人介绍
自己感觉自己是一个很普通的大学生,平时喜欢宅在家里,喜欢打游戏,看电影和电视剧,自己的缺点就在于自己缺少行动力,想法比较多单可能会不切实际,也不会真正的投入行动。优点可能也是想法多,遇到事情可能会有自己的独树一帜的想法,因此这篇文章对我有着不小的触动。
二、阅读与思考
(一)初入大学时对你所在专业的畅想
* 最开始接触这个专业的时候,并不了解它,以为他应该是地理学的一种,后来经过查阅资料才发现,原来他是更加侧重于计算机,像什么高德地图等电子地图和遥感可能就是他的工作范围之一,而电子地图和遥感这几年行业发展的不错,所以一开始对于这个专业还挺期待的。 * 经过两年的学习之后,发现其实课程的内容在自己的预料范围之类,但是存在的问题在于,我们这是一个边缘学科,涉及到的知识面相当的光,所以需要学习的东西非常多,以致于我们学习的东西多而泛,每一门学科基本都没有怎么深入的学习,相当于只是打下来素质基础,想要成为一个真正的GISER还有很长的路要走 * 这一门学科偏向于计算机,因为自己本来就是一个农村孩子,在计算机方面的素质比较低,加上本来就对于代码并不感冒,所以并不擅长这个专业,但是虽然做不到行业顶尖,也有信心能把这个事情给做好 * 毕竟是自己的专业,本科的人脉圈等都是属于这个圈子的,再加上这个专业本身的就业形势还可以,所有也会选择在本专业就业,可能会去一个像成都中海达一样的行业内中等偏上的一个企业,也很可能会跳槽去其他公司以争取自己最大的利益,毕竟就像博客[我的软件开发生涯](https://www.cnblogs.com/unruledboy/p/DevCareer.html)中所强调的 * > 跳槽是加薪的最佳办法积累一定的技术经验之后,如果有条件的话就会选择自己创业。
(二)对照前人们走过的路和描述未来发展,现在的我
- 自己感觉自己所学的专业、技能等其实不少,但是就像前面说的那样,学得很多但是都不精,作为一个GISER,代码的联系量也是严重不足,自己所做过的最大的一个项目可能就是在地理空间数据库中开发的学生信息管理系统,代码量最大的应该也只是计算制图学中实验所涉及的相关代码,因此,在未来的两年学习中,自己肯定也会加大代码量的练习,应为不管是老师还是博客对程序员职业生涯的一些建议中都多次强调了代码量的积累的重要性。
- 感觉自己李一个合格的程序员的距离还很大,不论是经验的积累还是专业知识的积累还是对于代码的熟悉程度,对于相关工具的使用的熟悉程度都还十分欠缺
(三)我的选择
阅读了这么多大佬的人生经历,对于自己的未来也有了初步的规划
- 首先,我应该是毕业之后就参加工作,我不会继续考研,一方面是家庭情况的原因,另一方面就是想要充分利用自己的毕业的前几年时间来多做一些技术,积累足够的经验,同时,了解自己行业的相关情况,为自己创业打下基础
-
- 从进入大学开始,我就清楚的了解到自己的部分不足,包括自己处理事情的能力,口才以及自信心方面,然后针对性的做了一些改变,导致了现在的职业能力有所增强,反而成为了自己的优势,但是就像前面说的那样,自己的专业素质还有待提高。
-
- 因此,进入大三,首当其冲的就是要提高自己的专业素质,加强代码的联系,然后去考取一些有质量的证书,把英语六级过了,以便于提高自己的英语水平去查阅那些外文的资料,掌握国内外实时的技术革新。
-
- 目前,为了能够更好的了解市场,参加了很多兼职,也去过一些行业的大型会议,了解到了许多新兴的技术。为了提高专业素质,通过了二级C语言的考核,也在为计算机三级做着准备。
三、问题
(一)教材上第十章-典型用户和典型场景中提出,我们要找的用户就是自己假想的某个领域、行业、地区等的典型的用户,那么,我就有一个问题,就是,难道我们就只能针对部分或者大部分用户吗?如果典型用户的区分不明显怎么办?没有让所有该使用软件的人良好的使用这个软件,那这个软件是一个好的或者说是优秀的软件吗?
(二)教材第八章-需求分析中第一点就是要获取和引导用户,这里会不会存在一个问题,引导这个东西是主观的,如果我们去引导用户的需求,会不会或多或少导致需求分析的不准确,这是一个个人的问题,网上查询不到答案。
(三)教材第六章中多次提到软件团队的重要性,提出来多种模式,但是并没有说出在什么情况下那种模式是最高效的?在博客关于软件工程团队模式的粗浅认识中也提出各种模式的弊端无法比免,但也没有给出相关寻找弊端的方法。
(四)教材中多次提到团队合作的重要性,但是团队合作也必然有它自己的相应的弊端,我想问,团队合作和个人独自完成,我们应该怎么取舍呢?在团队内部出现问题之后,我们如何来保证按时按质量完成任务,或者说是否应该进行壮士断腕式的调整呢?
(五)教材第一章中多次强调前期的可行性分析和需求分析的重要性,前期的需求分析需要大量的数据,如果只让开发团队去搜集,就会耽误大量开发时间,所以如何快速高效准确分析成为重中之重,那么作为一个学生我们应该如何去锻炼这方面的能力呢?
四、了解和调查源程序版本管理工具
-
Mercurial:是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。
-
- 优点: Mercurial很少暴露一些实现内的细节,比如rebase,比如gc。整体上看Mercurial需要掌握的命令比Git少很多,学习门槛相对低
-
- 缺点:
-
-
- 分支管理不灵活。Mercurial的branch管理和git相比不是不方便,而是非常不方便。基本的一条是branch出来就删不掉,这对热衷于开branch的开发者是个打击,而且(似乎)也让一些大型团队不愿意使用Mercurial,因为有不少团队习惯用分支来隔离子团队间的开发工作。虽然后来Mercurial提出了bookmark这个扩展,但概念上和branch还是有些差别,用起来也容易混淆。用Mercurial最好一开始就把分支设置好,以后就不要胡乱增删了。
-
-
-
- 支持社区略差。我说的是github vs.bitbucket整体上看github影响力更广,相比之下bitbucket甚至Google Code 在网站功能和用户社区上都差一些。
-
-
Bugzilla:是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期
-
- 优点: Bugzilla能够建立一个完善的bug跟踪体系:报告bug、查询bug记录并产生报表、处理解决bug、管理员系统初始化和设置四部分
-
- 缺点: 安装会比较不方便,而且流程固定,没有那么灵活。
-
Git :是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
-
- 优点: 1.适合分布式开发,强调个体。2.公共服务器压力和数据量都不会太大。3.速度快、灵活。4,任意两个开发者之间可以很容易的解决冲突。5.离线工作。
-
- 缺点: 1.资料少。2.学习周期相对而言比较长。3.不符合常规思维。4.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。