再读《软件随想录》/《黑客与画家》/《软技能》

最近重读了这三本书。上一次读大概还是在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年规划,以及每年定目标。然后再拆分成每个月的目标。

人际交往能力

说到底,计算机程序是为人服务的,工作中写文档、写邮件、开会、沟通其实都是和人打交道。甚至写代码也是为了给人用。 所以千万不要想着“我只想安安静静的写代码”。

债务

不要背负债务。


更多文章
  • apt安装特定包以及忽略升级某个包
  • StackGuard的作用
  • Goroutine是如何处理栈的?
  • Go DiskQueue源码阅读
  • NSQ源码分析
  • NSQ简明教程
  • 结合Redis与MySQL实现又快又好的数据方案
  • 程序员的MySQL手册(五):索引优化
  • 程序员的MySQL手册(四):索引设计
  • 程序员的MySQL手册(三):数据库设计
  • Linux窗口管理器下的截图
  • Go设计模式:facade模式和观察者模式
  • 程序员的MySQL手册(二): 监控与benchmark
  • Go设计模式: 责任链模式
  • 我们真的需要这么复杂的技术栈吗?