第一周作业,构建之法读后感
一、自我介绍
大家好,我是练习时长两年半的个人程序员,张鹏,我喜欢Android,c++,和黑客技术。只因当初多看了这个专业一眼,便和它结下了不解之缘,我和浓密的秀发也渐行渐远。我喜欢编程,为人幽默风趣,气度不凡。英俊的外表不是我的标签,善良的内心才是我的本质。
二、阅读与思考
2.1 我初入大学时对专业的畅想
刚进入大学时,我的想法很简单,学好C语言,掌握几门高级语言,并拥有独立的软件开发能力,被一家大公司录取,然后迎娶白富美,从此走上人生巅峰
2.1.1 当初选择这门专业也是根据自己的意愿来的,在高中上课学习程序框图的时候,我们的数学老师在电脑上编写了一个简单的加法程序,然后运行给我们看。当时我觉得好神奇,原来程序这么厉害,如果写一个求解二次函数的程序会怎样,从此我的心里就埋下了这样一颗种子。在选择专业的时候,我在学医和学软件两个展业徘徊。但是我反复分析了当下两个专业的行情,毅然选择了软件工程专业。从此走上了一条不归路。
2.1.2 在过去两年里学到的课程让我掌握了一定的编程基础,这一点我还是觉得非常满意的。但是在我编写程序的时候总觉得有些别扭,我总是会想服务端和客户端是怎样交流的,这一点想不通,我心里总有东西卡着。因为我们不可能一辈子就写单机程序吧。如果我不知服务器怎样接收处理并传输客户端数据,那我怎么能做出一个完整的软件呢。还有哪些底层的TCP/IP协议,到底是怎么运作的,两台机器究竟是怎样进行交互的。这些问题一直困扰着我,直到我学习了网络编程才知道。但是学校并没有开设这门课。我觉得应该在学完C语言就可以开始学了。还有过多的文化素质课也让我觉得很烦。
2.1.3 我觉得我在专业方面有待提高,对于很多底层技术没有了解,在开发过程中出了错也只能靠百度解决。对于一个优秀的程序员,了解底层技术是非常有必要的。
2.1.4 在以后我会从事和软件开发相关的工作,因为我对于我的专业还是非常热爱的。如果有机会的话我还是希望进入本地(成都市)的软件公司。希望能够做一些和计算机底层技术有关的工作。对于岗位来说,我首先希望是一名开发人员。
2.2 对照前人走过的路和描述以后的发展
2.2.1 我感觉我对于专业技术方面还差得远呢,这条道路学无止境的。我目前会的并不多,只会Windows窗体应用开发,JavaWeb开发和一些Android开发,但是我学得并不精,希望在日后的学习中能够学得更加深入。我目前写过的代码也并不多,粗略算算也只有个几千行吧。写过最复杂的程序没有,都是实现一些简单的业务,复杂的业务都直接调用API了。总之我觉得我还是学得太浅了,只能把别人的东西拿来用,并不会自己实现一些复杂的功能。
2.2.2 我觉得我成为一个合格的毕业生还要学习很多东西。最简单比如网络编程。还有TCP/IP、HTTP等网络协议,这些东西如果没有学通的话,我觉得就不算一个合格的程序员。另外还要学习当下热门的开发框架,因为在企业里面为了提高开发效率和产品的可维护性,这些开发框架都是必须要掌握的。
2.3 我对未来的计划
2.3.1 我对未来的选择还是想走网络安全路线,因为我对底层技术比较感兴趣,我更希望接触到计算机世界的本源
2.3.2 网络安全优势在于他能让你了解很多计算机底层技术和原理,一旦你精通了这方面,不管你以后去到任何地方都有机会。再者,随着5G普及,万物互联的时代即将到来,到时候网络安全会更加严峻,因为厉害的黑客可以把病毒影藏到任何连上互联网的设备,你的冰箱,电视,空调。所以到时候学习网络安全的人会有更大的机会。这个方向的劣势在于,网上有关网络安全的资源太少了,因为这毕竟涉及到很多安全技术,这项技术是一把双刃剑,用得好可以保护网络,用的不好就可能造成很大的危害。而且这方面涉及到很多计算机的底层技术,学习起来的难度相对较高。
2.3.3 根据这个方向,我这学年的计划是熟悉并掌握网络编程技术,掌握底层传输协议的原理,还有学习操作系统方面的知识。还有熟悉当下流行的黑客软件的使用,了解木马病毒的工作原理,知己知彼,才能百战百胜。
2.3.4.对于我的梦想,我正在全身心的投入到相关知识领域的学习当中,因为在之前没有找好自己的方向,所以到现在留给我我的时间并不多了,现在我已经放开了一切,专心投入到专业知识的学习当中。
2.4 构建之法简读感想
构建之法这本书系统的向我们展示了软件从需求分析,到开发,再到管理维护这样的软件开发过程。这对我们在团队开发项目时非常有好处,能够提高我们的开发效率,也能使我们的软件更加容易维护和扩展。作为一个软件工程的学生,我认为学好编程技术固然很重要,但是像这种构建理论的知识也是不可或缺的。软件工程的工程二字是从建筑学中引入的。在我们的修建建筑时,过程都是大同小异的,所以我们可以把这些步骤总结出来,形成一个为大众所用的标准。软件开发也是一样的。像现在比较流行的MVC,Spring Boot框架,我们按照这些前人总结出来的优秀框架去开发,会节省我们很多工作,并且会大幅度提高我们的开发效率。
从另一个角度来说,在以前电脑资源紧缺的时期,开发出来的程序最求的是效率,但是现在我们更注重程序的稳定性,可维护性和可扩展性。要达到这些效果,就必须要要学习软件的设计知识,只有按照正确的设计原则,我们开发出来的软件才能少出bug,就算出了bug,也不会牵一发而动全身。在以后的工作当中,我们开发软件肯定是一个团队在一起开发,如果说没有这些最基本的软件设计知识,那么以后肯定会很难适应。
在我以前编写程序的时候根本就没有考虑过这些,想到哪儿就写到哪儿,因为程序比较小,所以也没出什么错,出了错也很容易修改。但是我没有考虑过如果遇到一个大项目,有上万条代码的时候该怎么做,如果那个时候出错,再让我来修改,想想都可怕。在上个暑假,我们学习SpringMVC框架,我们发现按照这些框架来,开发效率要快得多。但是虽然有好框架,因为前期的需求分析,工作分配没有做好,也导致后面出了很多问题。我觉得学了这门课,应该能给我们在这些方面带来提升。
我觉得现在的我还需要很长的路要走,
三、我的问题
由于这本书内容比较多,我也不可能挨着挨着看完,所以我挑了一些我认为非常重要和我感兴趣的仔细阅读,其余的我都只是快速浏览,做一个了解。
问题1:在团队合作开发的时候,把任务分配好了之后,大家都各做各的,等到了整合的时候发现完全对接不上,很多人都不喜欢和团队交流,都按照自己的方式来。这种情况,有没有一种有效的方法让团队间的交流更加容易?
问题2:在敏捷式开发过程中,由于是便规划边做,在这过程中可能会存在很多变数,如果说改变过大,那肯定会给开发带来很大的困扰,这样的方式开发软件真的没问题吗?
问题3:在以前的时候著名网络游戏英雄联盟有过一次大更新,直接修改了底层框架,导致后面一段时间游戏都很卡,给用户带来很大的负面体验。我想知道,学了这门课程,我们对程序框架会有了解吗,将来遇到这样的问题,我们能够解决吗?
问题4:在第三章 软件工程师的成长中,里面描述的问题我都中枪,我还有救吗?