《构建之法》第一次作业 第一篇博客
1.建立博客并介绍自己
个人介绍:我是一个矛盾的人,做了计划 却想拖延,对新事物感到麻烦,上手后十分有热情但却不持久,学习如果进入状态,也就是沉下心来,学习效率就很高,反之很低,身为一个爱动漫爱游戏的宅男,对吃的不挑,体重不到50kg,于是办了张健身卡想练壮,日语N2过了却对去日本没有兴趣。。。闪光点的话,抗压能力特强,心态很稳定,再难受的事也就干扰我入眠前2小时,醒来后元气满满迎接新一天。
2.阅读与思考
拜读了前辈们以自己经验教训总结的博客,对IT行业及相关有了更深层次的了解,也发现了很多与自己认知不符的常识,其中,我看得最仔细的就是科班出身和大佬的博客这两个栏目,评论多的博客,我也将评论全读了一遍,感受到了人与人之间巨大的差距。我学的是软件工程,但与文章中描述的科班学生,差的不是一星半点,才发现,我的基础,是如此的匮乏,日后的学习中,需要更多地补充基本功。
另外一篇对我感触颇深的,是 陈皓 的 对程序员职业的一些建议(https://coolshell.cn/articles/4561.html)里面解答了许多程序员对工作,热情,工资待遇的问题,底下的评论我一条条的看下去,有赞同也有对某一观点的反对,也有对当前IT行业的无奈,连拿到了大公司offer的大佬对于未来都有些许迷茫,还在学习途中的我怎能停滞不前。其中有人的评论如是说道:“更多年轻人不是不知道如何选择,而是没有机会选择。”,而陈老师的回复也是发人深省,“热情, 能力,选择,你总要找到你有热情,有能力的一些事吧。”选择不是凭空出现的,想要有选择的资本,首先自己要有选择的能力,而能力出众又来源于对其的热情,我也想改变自己的命运,那么,首先就得有选择的机会。
(1)回想一下你初入大学时对你所在专业的畅想
- 当初你是如何做出选择你所在专业的决定的?
高中就是普通的应试教育学习,很少机会接触其他的事物,每周放假的一天时间就会坐在电脑前,玩玩小游戏,家里电脑是初中买的,算是买的学习版,大游戏会直接闪退,那时候就玩的一些盗版的小单机,对这方面兴致很高,我妈那时候就说道,既然那么喜欢打游戏,那就学电脑咯。填报志愿的时候,回想起这句话,又看了看其它专业,再联系自身身体与头脑,最终决定选择电脑相关专业。那时候看的相关专业就是计算机,软工,网工,物联网,上网查了下,计算机比较注重研究和硬件,网络方面不感兴趣,物联网当时又是比较新的专业,于是就选择了软件工程这个专业。
- 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
大一的日子是痛苦而充实的,一切都是新的,当时的课程符合我的期待,虽然有C语言这种从没接触过的领域,但一步步积累,收获,让我倍感满足,高数,大物一类的课程承前启后,既有对高中知识的回顾,又有新的知识,虽然节奏更为紧凑,但习惯后也学的很轻松,数据结构这门课当初是真的把我难哭了,甚至自暴自弃后悔自己没转专业,但过了一天,还是老老实实地拿着自己买的《大话数据结构》,从不懂的地方看起,读懂,敲一遍,盖上书,再敲一遍,多次循环;当初那本练习小册子我做了三遍,才能烂熟于心。
大二的课程,却让我摸不着头脑,这是我自己的原因,课程已经从老师教,向着自我学习转变,而我却还没来得及改变固有思想,但其实学数据结构的时候,自己买书,自己查资料,那时候已经算是自学了,只是我没意识到而已,而周围同学的同学已经开始寻找自己感兴趣的方面进行深度学习了,所以,我比他们慢了一步,那么大三的我,就得更努力,追赶甚至超越他们。
- 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
是我喜欢的领域,但并不能算我擅长的领域,我希望通过努力,让它成为我擅长的领域
- 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
如果有机会,我会选择从事专业相关工作。想去深圳,上海,成都;公司的话,米哈游,鹰角网络,bilibili,华为;岗位,维护,建模一类(以上均为梦想)
(2)对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
C,数据结构基础,部分前端知识,java刷题;有效代码量很少,大多数为重复代码,这也是我需要提升的地方,手动敲远比看书来的实在;自身能力低下,复杂项目靠大佬带着做,自己只是做点打杂的小事,实战经验少,难以描述,之后希望能自己做点真东西,哪怕被人嫌弃,也要将其做出来,作为自己的警示碑。
- 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
真正能拿出来用的技术不够,停留于表面,深层次的理解不够,独立思考能力不足,技术方面匮乏,会的、了解的知识太少。
(3) 目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
工作,积累经验。
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
没有考研的压力,但是可能未来发展上限比其他选择的同学低。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
刷力扣,学java,接触了解一些新技术,学一下python之类,把身体锻炼好,课程学业不能落下,多自我学习,扩展知识面
- 你对于实现自己的梦想已经做了或者计划做什么样的准备?
我梦想的要求过于严格,5年内可能都没法实现,但不积跬步,无以至千里,计划是毕业后工作3-5年,积累必要的经验和资本,再向梦想的方向进发。
3.疑惑问题
(1)第二章第三节,个人开发流程(p35-36),书中对比了工程师和大学生在开发软件时的PSP数据,确实可以看出工程师在需求分析和测试方面花的时间更多,而具体编程的时间占比更少,那么,是前期的准备更加完善(需求分析的全面等),还是实践经验的丰富加速了代码的编写?亦或者两方面都有作用,那在项目中,两者对编写代码效率加成又如何?
(2)第三章第四节(p58)书上描述了教育理论的舒适区,学习区,恐慌区,提议·从学习区入手学习,不断构建舒适区,从而拓展学习区,最后达到精通。我对这三个区域的划分有疑惑,花费多少脑力解决的问题算中间层次的?我们又该如何选择适合自己的学习区?达到精通后才能尝试高层次问题么?
(3)第四章第四节(p72),书中提到了代码复审这一概念,我越看越觉得与软件测试有些类似,那么代码复审和软件测试有哪些异同点?复审和测试的先后顺序又是如何?代码复审后,是否可以减少测试所用时间?
(4)第九章第一节(p182)书中说软件团队里有一类角色,不用写代码、测试、设计也很重要,被称为项目经理(PM)。他们不做这些工作,但是否不了解这些方面的工作呢?如果不了解这些方面,又如何能与开发人员进行有效沟通以及风险评估呢?对于项目经理来说,是管理出身,还是计算机出身更为合适呢?
(5)第十六章第五节(p370开始)书中说IT历史上,许多的成功产品都是从小作坊开始的,小作坊是否针对对创新能力有着助力?进入公司工作是否会降低员工创新能力?小作坊成功例子不少,但失败例子也很多,失败的作坊们,是由于不够创新,还是由于规模小,无法实现自己的想法导致抱憾而终?作坊中的人数维持在多少能够既保持创新力,又能保证项目能够被顺利孵化?
4.源程序版本管理工具
(1)GitHub
优点:github基于web,使用方便,注册账号后申请一个独属于自己的代码库,就可以上传自己的源代码,轻便,集成了git的服务,还多了订阅,文本渲染等功能。免费
缺点:访问速度慢,较难上手;wiki功能太弱,直接导致文档(对于开源项目很重要)经常被分离到一个独立站点
(2)Git
优点:
1、适合分布式开发,强调个体。
2、公共服务器压力和数据量都不会太大。
3、速度快、灵活。
4、任意两个开发者之间可以很容易的解决冲突。
5、离线工作。
缺点:
1、学习周期相对而言比较长。
2、不符合常规思维。
3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
(3)SVN
优点:
1、 管理方便,逻辑明确,符合一般人思维习惯。
2、 易于管理,集中式服务器更能保证安全性。
3、 代码一致性非常高。
4、 适合开发人数不多的项目开发。
缺点:
1、 服务器压力太大,数据库容量暴增。
2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。
3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
(4)Microsoft TFS(Team Foundation Server)
优点:
任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM能与 VS 无缝接合
缺点:
搭建、维护tfs比较复杂,硬件要求也比较高。
(5)Trac:
优点:
1、Trac做一个SCM配置管理平台,意味着它有良好的扩充性
2、Trac的权限体系是比较完备的设计
3、非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:
1、不支持多项目,
2、需求和缺陷没有分离,
3、用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,
4、中文化不完整,美术人员接触起来困难重重,
5、不显示中文名,本地化做得很差,
6、核心功能很少,不安装插件基本上没法用。
参考文献