对《构建之法》1、2、16章的疑问
第1章 概论
书中引用:我成了一名职业程序员,但是我发现所有的算法别人都已经实现了,我只要调用就可以。似乎我们公司的软件与数据结构、算法的关系都不大。那我当初辛辛苦苦学习的数据结构和算法有用么?如何区分一个好的程序员和不好的程序员呢?
——P1
疑问1:学习算法和数据结构对于一个以后不从事计算机理论研究的人有多大用处?
想法:由于自己对算法的兴趣并不深,自己以后肯定不会从事计算机理论研究方面的工作,更不可能研究出一个新的算法,更何况现在很多算法都实现了,只要会调用就行了,我觉得这没什么问题。但是人人都说算法很重要,所以我对算法也挺重视,数据结构等专业课都听得很认真也取得不错的分数。但是这样到底够不够呢?对于以后不研究算法理论的人学习数据结构和算法又有什么用处呢?至少到现在我做一些小项目就完全没感受到算法和数据结构的重要性,可能是我资历尚浅吧。我百度了一下算法和数据结构的作用,知乎上的大神都认为数据结构是编程最重要的基本功没有之一,https://www.zhihu.com/question/29587605这是我看到的一些回答,我对其中一个映象比较深刻:虽然工作了以后根本就用不到那些书中的讲的二叉树、图、排序算法等,更重要的是你要学习一种思想:如何把现实问题转化为计算机语言的表示。《数据结构》这门课其实会潜移默化的影响你的逻辑思维。看了这段话后,我认识到了学习数据结构和算法的意义,但我仍不知该把算法放在哪一个位置。
书中引用:IT专业的大学毕业生找工作时声称:我精通Java,会用C++写“Hello World”程序,我懂软件工程,我画了很多图,写了很多文档,最后得了很高的分数......这些同学是真的懂软件工程,是一个合格的软件工程师么?
——P8
疑问2:在大学里要做到什么程度,毕业后才算是一个合格的软件工程师?
想法:引用中描述的同学肯定不是一个合格的软件工程师,因为他不懂软件开发流程,也没有项目经验。可当代很多大学生毕业后就是这种状态,因为他们缺乏项目实践的经验。我不想成为这样的人,所以对项目实践很看重,认真对待老师平时布置的小项目(比如做个新闻管理系统),加入工作室为学校做一些网站,但就算是这样,我觉得自己毕业后仍然距离一个合格的工程师很远。希望老师能给些建议和方向,要想毕业后成为一个合格的软件工程师,在大学里我应该做出些什么程度的项目来?要达到怎样的水平才算基本合格?我会努力靠近的。
第2章 个人技术和流程
书中引用:单元测试应该集成到自动测试的框架中:另一个重要的措施是要把单元测试自动化,这样每个人都能随时、随地运行单元测试。
——28
问题3:如何实现单元测试和回归测试的自动化?
想法:读了第2章后我知道了单元测试和回归测试的作用,并且认识到测试的完整性在整个软件开发中的地位,以前并没有认识到测试时代码覆盖率等问题,只是简单地功能实现(如增删改查)测试通过就算过了。但文中总提到测试最好要自动化,这样能够快速运行所有回归测试,可自动化是指什么,是指用类似于Junit的工具吗?如果是这样,测试的数据还是要自己写吧。
书中引用:大家也要注意避免没有做分析就过早地进行“效能提高”,如果我们不经分析就盲目优化,也许会事倍功半。
——34
问题4:什么阶段最适合“效能提高”?
想法:在做一个项目时,从软件工程的步骤来看似乎并没有“效能提高”这个阶段,只有最后的“提出过程改进计划”,这个算是在进行效能分析吗?效能分析一般是把整个项目基本完成后再进行的吗?如果是这样对效能分析会不会有较大的难度呢,毕竟项目已经基本完成了,再改代码可能有“牵一发而动全身”的风险。“效能提高”的最佳时间是什么阶段呢?个人不太认同放在最后。
第16章 IT行业的创新
书中引用:不但大众不喜欢创新,甚至连创新者自己都不例外,有些创新者甚至恨创新。
——348
问题5:创新真的要顾及到一部分人的利益吗?
想法:书中提到大众甚至连创新者都不喜欢创新,归根结底是他们的利益受到了威胁,就如法国的自动织布机威胁到了广大工人的利益,因而一开始受到了极大的阻力,可最终织布机还是被社会认可了。我们不可否认织布机的出现造成了大量工人的失业,可它却实现了生产力的飞跃,推动了社会的发展。那么创新真的要顾及到一部分人的利益吗?我觉得是顾及不到的,任何事物都有其两面性。只要能使社会进步,我相信其最后还是会被社会接纳,尽管它一开始会遭受许多质疑与抵抗。正如阿里巴巴的淘宝,使大量实体店受挫,却促进了物流行业的发展,带来了大量新的工作机会,使人们的购买方式更加便利。再如中国大陆盛行的电子支付,虽给人们带来了便利,但也威胁着个人信息与账户安全。因此我认为,与其考虑创新是否要顾及一部分人的利益,不如思考什么样的创新才是社会需要的,这样的创新更有意义且具更大的成功率。
以上就是我在阅读中提出的一些问题,感谢阅读!