软件随想录阅读笔记
挺有意思的一本书,虽然是20多年写的,但是里面的很多内容还是很有意思的,丝毫不落伍
抽象必漏定理
抽象就是隐藏复杂的内部机制,对外部提供简化使用的接口
计算机科学里面有超多的抽象,也就是有了这么多的抽象,才能让普通人轻松的使用计算机
但是所有重要的抽象,都具有某种程度的不严密性
书中举的例子是下雨天开车,本来坐在车子里了,不应该担心外面到底是天晴还是下雨,但是雨中开车必须放慢车速
虽然程序员可用抽象的,封装好了的工具来节省开发时间
但是这并不能节约你的学习时间
mybatis_plus这个工具可以简单的帮你实现crud,但是并不意味着你不用去学习sql
漏洞百出的抽象意味着编程学习曲线是呈指数形态的
90%的东西一周就能学会,但是剩下10%要你学踏马的34年
而且更要命的是这10%的知识决定了程序员的价值
给面试官的指南
挑选那些曾经通过某种非常困难的选拔过程的人才,比如考上985大学,或者曾经是大厂的员工
用电话面试鉴别,并且剔除那些不够聪明的候选者,省下面对面会谈需要的时间和金钱,现在的线上会议软件很方便了,估计在正式见面之前都会先线上面试一遍吧
面试要多搞几次,因为有些水货不一定能在一次面试中看出来,多面试几次就一定会露馅
聪明并不意味着上知天文下知地理,而是能够快速学会新技术的人,因为现在掌握的东西在未来都有可能失效,学得快,才是核心竞争力
聪明的特征:
- 面试过程中沟通顺畅,有自己的见解
- 有激情,沉浸在技术之中,仿佛忘记了在面试
- 能把复杂的东西讲得深入浅出,明明白白
面试官不要留下先入为主的印象
问一些没有标准答案的问题,主要是考察面试者的,思维,逻辑
比如昆明有几个验光师
任务切换有害论
两个结论:
- 串行处理的平均速度更快
- 任务切换花费的时间越长,多任务并行处理的性能下降越明显
对于程序员编程这件事情来说,切换任务花费的时间是很多的
在编程的时候,程序员满脑子都是各种变量的名称,重要的API用法,各个包的路径....
一旦打断,或者放个几天假再回来处理,就估计得花点时间才能看懂自己以前写的代码
所以作为领导,永远不要把>1的任务交给同一个人做
一次只做一件事情,并且做到最好
这才是最优解
永远不要做的事
编程法则:读代码比写代码难
也就是好传说中的💩山
旧代码不如新代码的观点是十分荒谬的
因为旧代码经过使用和测试,bug基本都被修复了
把旧的代码丢了==自废武功
属于是把曾经的经验,补丁全丢了
扔掉旧代码==抛弃自己公司的市场领导地位,送给对手两到三年的时间
比如网景浏览器