再读《软件随想录》/《黑客与画家》/《软技能》
最近重读了这三本书。上一次读大概还是在10年前,有了这些年的工作经验,再看这些书,感触颇深。
《软件随想录》
不要陷入技术口水战
比如你喜欢用什么编辑器,喜欢用什么编程语言,喜欢用什么操作系统,这些都是个人喜好,没有对错之分。不要陷入无意义的口水战。 而是要看什么场景用什么工具,对症下药。例如,UNIX程序员喜欢文本模式,Windows程序员喜欢图形界面。UNIX文化老是吐槽Windows 注册表,但是UNIX的配置文件到处都是。又或者C语言高效,Python是玩具等等。这些都是无意义的争论。
应该在合适的场景使用合适的工具,比如UNIX的文化来源于哪里呢?UNIX来源于他是面向程序员的操作系统,而Windows是面向用户的操作系统。 文本对程序员是友好的,但是你要一个老奶奶来用编辑器编辑配置文件,那就很折磨人了。
要快速迭代时,用Python,要高效时,用Go,嵌入式用C,开发浏览器页面就得用JS等等。
乔尔测试
- 你们用源代码管理系统吗?
- 你们能一键编译吗?
- 你们做每日编译吗?
- 你们有bug数据库吗?
- 你们在写新代码前修改以前的代码吗?
- 你们的进度表是最新的吗?
- 你们有软件规格书吗?
- 程序员的工作环境是安静的吗?
- 你们使用了能买到的最好工具吗?
- 你们有测试人员吗?
- 你们面试时会要求应聘人员写代码吗?
- 你们做过走廊可用性测试吗?
是就给你的团队加上1分,否则就是0分。得分越高,团队越好。12分是完美的,11分尚可,10分或更低就意味着开发团队出了很严重的问题。
这一篇文章写于2000年,现在看来,这些问题都是很基础的问题,但是很多团队还是做不到。里面的很多东西,也成了现在的基础设施, 比如源码管理系统,今天的git;编译,今天的CI/CD;bug数据库,今天的issue tracker等等。
自动从用户那里收集错误报告
这不就是现在的Sentry/Crashlytics等等吗?
任务切换有害论
多个任务并行,不断切换,的确会降低效率。
《黑客与画家》
黑客是一种文化,是一种态度,是一种精神。黑客是对技术的热爱,是对技术的追求,是对技术的探索。
思想自由比言论自由更重要。
此外还可以阅读 Raymond. Eric S. 的 How to become a hacker。
《软技能》
软技能是什么?软技能是与技术无关的技能。
把自己当作一家企业
我们习惯了打工,领取月薪。如果换个视角,会更好。把自己当作一家企业,现在的雇主只是你的第一个客户,你可以有更多的客户。 作为一个企业,就要想办法提高自己的价值,提高自己的收入。因此需要思考品牌,市场,销售等等。
设定目标
要有中期目标和短期目标。中期目标是你的职业规划,比如5年后,10年后你想成为什么样的人。短期目标一般是最近的几个月,比如 你想学习什么技术,你想做什么项目等等。
我个人一般会设置5年规划,以及每年定目标。然后再拆分成每个月的目标。
人际交往能力
说到底,计算机程序是为人服务的,工作中写文档、写邮件、开会、沟通其实都是和人打交道。甚至写代码也是为了给人用。 所以千万不要想着“我只想安安静静的写代码”。
债务
不要背负债务。
更多文章
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- frp 源码阅读与分析(一):流程和概念
- 用peewee代替SQLAlchemy
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程