For the opening - Reading and Thinking

This work belongs courses <Links courses>
Where the job requires <Link job requirements>
My aim in this course is Learn the whole process of modern software development, software engineering and in-depth understanding and practice of combining
In particular aspects of the job which helped me achieve goals The book theory, the job clear goals, write a blog summary form output, master key

First, the primary junior, talking,

  • Niche blog: https://www.cnblogs.com/xnch/
  • Kid Xu Huan: from the Southwest Petroleum University 17 Software Engineering. Really speaking, the first time encountered such a job, though, earlier this niche also accomplish something in the CSDN. Attach the way here I CSDN link , welcome to come to disturb. I am a semi-Road monk of a programmer, volunteering after a swap is, in my former professional dug a semester stone (geology), also mention that some of the stones kinda fun.

    I did not lie to you, the standard Yuxi, a symbol of power, good-looking it, that these gadgets rely on these mountains and we ran to the whole geological people out. This stone is not called good-looking, good-looking discernment under floor A hall in our school district, that stuff, high-end atmosphere on the grade, after all, a beautiful landscape of Southwest Petroleum University ah.

  Then learn to learn, on a variety of syncline, anticline, fault or something, all kinds of back, various concepts. I think, this is not the way I go, I go do what way, perhaps in my first college entrance examination to fill volunteer for me - software engineering. Come, see:

  For Well, this is what we do, what I like, sitting right at your fingertips. As the saying goes: "our fingertips have the power to change the world." No kidding, that's true, over the past decade, tens of thousands of programmers dedicate their hair, to make our life more intelligent. That says something not stop, the top blew so much, and you certainly get tired, here to talk about practical, since as a programmer Coban born, it must have to have mastered one or two technical thing.

  • 小生主攻Java,也了解其他语言,未来主要是做一个后端工程师,先保证有口饭吃嘛,然后再看其他技术,搞起走就行了。有喜欢Java的小伙伴或小姑娘的话,我们可以一起探讨交流技术。最后再分享我喜欢的一句话,也是我的座右铭:“纸上得来终觉浅,绝知此事要躬行

二、前人栽树,后人乘凉

1、回想初入大学时对所在专业的畅想

(1)当初是如何做出选择所在专业的决定的?

  当初我为什么会选这个专业呢,前面也提到了,我是转专业学生,其实在高考毕业就填了这个专业,只不过被调剂了。至于为什么,我觉得首先是我表哥对我的影响吧,让我在高中就接触到过软件,当时他用C语言编写了一个贪吃蛇游戏,我就觉得挺好的,然后就产生了兴趣,想着自己能否也做一个出来。还有就是后面网页的流行,很多地方都会用到浏览器,我就想着如果自己也能做一个网站那该多好,应该是一个自豪的事情(当时人工智能和大数据还没有这么火)。
  后来就是在原来专业中感觉到一天到晚摸索石头没啥意思,还有就是对自己以后发展的疑问。我以后就像这样天天玩玩儿石头了吗,或者是经常到大山里面去找石头,然后常年经常出差,工作几个月回家几个月的生活?照看不了家人,不,这不是我想要的,于是考虑转专业,正好对软件有些兴趣,然后社会上也比较火,就业什么的,工资及以后的发展都还不错,于是就选择了这个专业。

(2)过去一(两)年中接触到的课程是否符合对自己所在专业的期待,为什么?

  在过去的两年大学生活中,这些课程在我学的时候,我觉得是不太符合的。就拿大一的数据结构来说,在我当时的想法中,别人已经实现了的东西,我们只需要拿来用就可以了,没有必要深入去研究它。再来到大一暑假所学的英语及概念实习(也就是C#),我决定那个英语听说没什么意思,为什么不直接给我们上专业英语呢,这或许对我们以后的发展更好。概念实习,当时跟着老师做了一个红色天空游戏,也就是小时候玩儿的飞机大战,当时很有兴趣,但是回过头来,不过只是跟着老师将老师的代码自己手动的敲了出来而已,还是一样没学到什么,反正第一学年就在抱怨中度过了。到了第二学年,我开始了给自己选定了一个方向,不管学校学什么,自己先学好那一个方向,先掌握熟练运用一门语言再说,于是我就奋力学习Java,在落后了众多团队大佬一年的时间,我只有花更多的时间努力学习。就在学了Java之后,我对计算机软件又有了新的认识,也可以说是对大一没有认真学专业的一种后悔吧,后面才意识到数据结构及算法是相当重要的。所以说按现在的我来说,我接触到的课程是完全符合我对专业的期待,包括现在这门课,我相信在学完整个课程后,我会收获到很多东西。

(3)觉得所在的专业是喜欢的领域吗,它是擅长的领域吗?

  前面也已经提到过,目前我比较喜欢Java后端方向还有大数据领域。软件专业,所涵盖的领域实在是太广,我感兴趣的领域自然也就是软件范畴的领域。同时,大学注重基础,万丈高楼平地起就是这个道理。相信大家都听过厚积薄发这个词,我坚信大学里所学的东西会为我以后的发展打下坚实的基础。

(4)将来会选择从事和专业相关的工作吗?是的话给出想去的城市、公司和岗位,否的话给出原因

  以后必然是会选择从事软件行业工作的,主要是想去深圳或者就在成都吧,想去的公司肯定是bat了,但是目前实力肯定不够,只能再努力了,岗位就是后端工程师。

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

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

  我觉得具备的专业知识其实挺少的,主要是集中在编码上面,学过C/C#/Java,数据结构,然后还了解了Python,matlab等。对整体的软件开发流程,以及软件整个过程还不够了解,实际代码量也没多少,估计可能也就一千多行吧。最复杂的项目,说出来可能都不太好意思。就是在今年参加互联网+比赛做的一个跨境电商比赛项目。
  引入全球化与智能化商品交易平台模式,设计满足厂商和B2C销售者实施跨境商品借卖销售的系统。对多种用户分配不同权限来实现对订单的操作,还有对于生厂商的海外仓的管理,以及对各种经销商之间的关系。对不同用户的调货系统的注册审核、登录、信息分析、信息派送、汇总发布、交易成功等。还有就是实现了企业之间的分单模式,可以分单企业,分单供应商,分单产商。最后还做了一个小论坛,主要是为了让全球用户在论坛上实现交流沟通。

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

  首先,我觉得应该是找出我们和培训机构,或者职业院校出来的学生的区别。他们出来编码能力一般比我们强,那我们的优势是什么,我们可以找到本科所学的东西是他们没有的,我觉得这是首要的。那如何提升这些知识呢,那就是要把理论专业课学好,就好比这门课现代软件构建之法,以及计算机系统基础,计算机网络基础,操作系统,软件需求分析,软件体系结构,软件项目管理等,这是作为一个科班出生的程序员的基本知识。其次,在编码能力上还有很大的差距,我认为在毕业前要有1万行代码才算合格。

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

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

  在阅读了前人们的经历,再加上自己的思考,大一浪费了一年的时间,还有想去的bat,我觉得考研可能是目前最好的选择。

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

  考研的话,我觉得优势可能是自己数学和专业课学得还比较好。劣势就是自己一直偏科英语,还有就是还需要比其他同学多花几年在学校里读书,自己的工作经验肯定比不过工作了的同学。

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

  在近几年的考研热中,特别是计算机,复试刷下去了很多人,我觉得大三在上学期的时候我就多敲代码,多做项目,把代码量给弄上去,然后大三下开始准备考研以及算法数据结构基础之类的学习,避免在复试的时候被刷。

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

  加入了新开的一个实验室,可以和研究生学长们一起交流技术,并且在做项目中增加自己的代码量,向1万行看齐。各种技术书籍,高级及底层实现以及准备好,计划着9610的工作状态度过大三。

三、小试牛刀,不懂就问

问题1:职业发展之考级之路

第三章(53页)作者谈到职业发展之考级之路。
  作者谈到了些许什么国家认证,机构认证之类的专业技术资格证书。
疑问:由于我在网上,知乎,CSDN等各大平台上了解到,前人说的大多是计算机类的专业考证没有用。一般有经验的不用证书,有证书的大多没经验,拿证书还不如多花点时间锻炼下技术。然而网上的各种考证官网又极力说考证考级的各种好处,书中也是双面的简单的介绍了一下,那么这些证对我们职业发展是真的有好处吗?还是只是浪费时间考取无用的证书呢?

问题2:专与精的关系

第三章(52页)专与精的关系
  作者谈到街头卖艺的单人乐队,一个人可以会多种乐器,而与之对立的是只研究一种乐器的乐手。很明显表达前专后精,好比全栈工程师与运维工程师运维不同的模块。
疑问:现在互联网公司成两种形式,前后端分离或者就是前面提到的全栈工程师。据我了解Python和PHP做全栈工程师还是比较不错的,那为什么就成了街头卖艺了呢? 的确术业有专攻,但是为什么现在社会上都需要会多项技能的人呢?就比如你技术强然后管理上又有建树,又或技术+英语,技术+文档撰写能力,公司岂不是更应该喜欢花更少的钱来请人做相同的事情吗?

问题3:软件需求之用户需求

第八章(151)软件需求之用户需求
  文中提到人们为了解决现实社会和生活中的各种问题,要求助于软件,需要替用户想到他们的需求。
疑问:在开发软件时,我们如何去正确的找准市场定位与分析客户的需求?这类问题书中提到的软件寻找需求,可是用户是多变的,如何能保证精准呢,是否是用到当下流行的大数据技术,还有当用户信息量不够时,是不是就做不到精准定位?在没有这一技术时,是不是无法定位到用户的需求,产品就只能不断的修改?

问题4:测试方法之问

第十三章(277)各种测试方法
  书中提到单元测试,构建验证测试,验收测试,搜索式的测试,回归测试,伙伴测试等等。那么问题来了
疑问:我们如何更好地进行软件的测试,并且要降低测试成本,即能够对各种可能会发生的情况进行测试,虽然上述各种测试方法,那怎么找到一些潜在的难以发现的bug,并且提高测试效率?经常听老师说,没有完美的软件,只有更好的软件,合格的软件,那么软件需要通过什么样的测试才能算合格?

问题5:创新和作坊所思

第十六章(370)创新和作坊
  作坊很容易被新技术抛下,落后的绝技也就没有多大用处了,想开作坊的人,有些有能力的作坊,往往能找到合适的渠道和空间,实现自己的价值。
疑问:在当下这个时代,人们不谈“作坊”了,现在的“云”,“大数据”,“人工智能”,和“创新”才是讨论的热点。现在国家响应着新技术的发展,开设了大数据专业,人工智能等专业,那是否软件工程就变成了前面提到人们不谈了的“作坊”?现在的软件工程面临着什么样的难题,软件工程在新兴专业以及新兴技术下将如何继续发展?又或者说软件工程的下一个变革的方向将会在那一部分?

四、三分手艺,七分家伙

  俗话说,三分手艺,七分家伙,手艺好还要家伙妙,拳头再硬也比不上锤子。孔夫子也说 “ 工欲善其事,必先利其器。”可见,利器之重要性,那么我们就来看看目前流行的源程序版本管理软件和项目管理软件。

Git

  • Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  • Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

  • Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

  • Git是目前世界上最先进的分布式版本控制系统。

在这里插入图片描述

优点

  1. 适合分布式开发,强调个体。
  2. 公共服务器压力和数据量都不会太大。
  3. 速度快、灵活。
  4. 任意两个开发者之间可以很容易的解决冲突。
  5. 离线工作。

缺点

  1. 学习周期相对而言比较长。
  2. 不符合常规思维。
  3. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

GitHub

  Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码。创业公司可以用它来托管软件项目,开源项目可以免费托管,私有项目需付费。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。在这里我又要打个广告了,本人github:https://github.com/ordinaryload 欢迎前来打扰。
在这里插入图片描述

优点

  1. 适合分布式开发,强调个体;
  2. 公共的服务器压力和数量都不会太大;
  3. 速度快, 成熟的架构,开发灵活;
  4. 任意两个开发者之间可以很容易的解决冲突;
  5. 离线工作,管理代码成本低,不需要依赖服务器;
  6. 部署方便。基本上下个命令就可以用;
  7. 良好的分支机制,可以让主干代码保持干净。
  8. Git对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。

缺点

  1. 资料少,学习成本比较大,学习周期比较长,要求人员素质比较高;
  2. 不符合常规思维;
  3. 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
  4. 不支持中文,图形界面支持差,使用难度大。不易推广。

Microsoft TFS

  TFS是一个应用软件生命周期管理(ALM)软件,是一个软件研发平台产品,其功能覆盖了软件研发过程中的所有环节(包括源代码管理)和所有角色。
在这里插入图片描述

优点

  1. 易用性。
  2. 高度集成其他工具。
  3. 是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持。
  4. 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用。

缺点

  1. 能应用起来的团队、公司的数量较少。
  2. 多数真正用起来,也就是源代码管理这部分,这也仅仅是占TFS极小部分功能。

Mercurial

  Mercurial与一般传统的版本控制系统的最大区别在于分布式的概念。所谓分布式,就是指没有一个所谓的集中的中心(central)库,这个库一般由svn server(svn),vss administrator(vss)控制,而Mercurial就没有这样的一个库,所以使用版本控制的时候甚至都不需要一个administrator和server,本地直接建库,直接就使用,任何一个库都可以作为中心库,每个库在Mercurial看来都是平等的。
在这里插入图片描述

优点

  1. 更轻松的管理。
  2. 更健壮的系统。
  3. 对网络的依赖性更低。

缺点

  1. 权限控制的问题
  2. 分支的时候不能对单独的子目录进行,一次clone就是一个工程

----------------------------------------------------------纸上得来终觉浅,绝知此事要躬行---------------------------------------------------------

Guess you like

Origin www.cnblogs.com/xnch/p/11497593.html