《黑客与画家》读书笔记

《黑客与画家》读书笔记

大家好,我是烤鸭:
    《黑客与画家》,读书笔记。这次想修改以前那种章节式的笔记,一个是这本书是比较主观的,一个是想换个风格。

作者

保罗·格雷厄姆(Paul Graham),(1965年—),美国著名程序员、风险投资家、博客和技术作家。

学习经历:康纳尔大学-哲学,哈佛大学-计算机(人工智能),佛罗伦萨美术学院-绘画。

创业经历:Viaweb的创始者之一(3年时间,Viaweb以4900万美元被雅虎收购)。

投资经历:[Y Combinator](https://baike.baidu.com/item/Y Combinator)的创始人之一,先后投资了数十家创业公司,包括reddit、Justintv等。

作品:On Lisp (1993),ANSI Common Lisp (1995) 和Hackers & Painters (2004)。

感想

不得不说,作者是个天才,很多观点犀利而且有预见性。

前几章可能看的有些突兀,是对个人成长经历还有社会、人性的一些剖析。

天才是不受待见的,要用于挑战权威,保持一颗清醒的头脑,永远质疑。

后面几章结合Viaweb的创业经历,探讨了软件的一些思路,包含代码编写、发布流程、bug、用户等等。

互联网软件比桌面软件更容易建立的一套测开监控体系(可能大部分公司连这都没有)。

Viaweb的软件包括:与用户直接对话的一些大型应用程序、被这些大型程序使用的程序、常驻后台报告系统出错的程序、重新启动出错部分的程序、生成统计报告或数据库索引的程序(偶然运行)、回收资源或者移动及恢复数据的程序(手动运行)、伪装成用户的程序(为了测试系统和发现bug)、诊断网络故障的程序、完成备份的程序、对外提供服务界面的程序、实时显示服务器状态和访问数据的程序(很受用户欢迎,对我们也是必不可少的)、修改后的开源软件程序(包括修正bug)以及许许多多的配置和设定文件。

有敏捷项目的概念了,摒弃大版本,小版本虽然不完美,但可以持续迭代。

互联网初期支持用户发现bug的方式,当用户量增长时就需要考虑质控了。

产品的价格设计,除了免费或者购买终身产品之外,还有按月订购的方式,这种在现在的互联网也比较常见了。产品是逐步迭代的,当选择一款产品,也能享受迭代更新的功能,不过有些产品不一定持久,可能会倒闭。

我每天都用在线文档,看到作者在《用户的胜利》里写道:

互联网应用程序能够同时被多人使用,所以非常适合团队协作性的工作。大多数用户现在还不了解软件协同办公,否则估计他们会强烈要求大部分应用程序都具备这个功能。举例来说,允许两个用户同时编辑一个文档是一项很有用的功能。Viaweb
允许多个用户同时制作一个站点,主要原因倒不是因为用户要求,而是考虑到这是开发软件的正确方式,但是最后发现大多数用户都希望这样。

不由得感叹10年前作者就已经想到了,要知道腾讯文档是18年推出的,而且是最近两年才流行的。

同样作者在针对桌面应用和浏览器应用也做了预判,事实也确实如此。不过随着浏览器应用的泛滥,安全问题也随之而来。恐怕这个优势是桌面应用天生的(不需要暴露代码)。

作者关于财富的观点也同样值得借鉴,金钱不等于财富。财富是最基本的东西,包括物品、技能、经历等等,而金钱只是专业化的副产物。坚信财富是一直积累和增长的,你需要努力让自己更富有。

大公司的工作平均化会使有能力的人变平庸,工作也不是为公司而工作,而是为了做出更好的产品。

创业公司的小团队更容易做出贡献衡量(能者多劳,多劳多得),做好高科技的开发并及时申请专利。

一个互联网产品衡量价值最直接的是用户数量(现在有了更多的指标,比如日活、月活等等)。

技术发展加剧了贫富分化?其实不是,掌握了技术更容易获得收入。感觉上是个双赢的事。(虽然国内软件工资高,过着996,但终究不会长久,未来都会回归常态化。)

用统计学方法防止垃圾邮件,作者对这个功能实现做了深度的分析,从产品设计到技术实现。"贝叶斯过滤"是最有效的工具。(不过随着人工智能的兴起,是不是也有训练可以更高效的识别垃圾邮件)

强调了设计的重要性和特点(简单、永不过时、能解决主要问题、有启发性、有趣味性、艰苦、奇特、能复制、大胆且成批出现),优秀的作品少不了优秀的设计,不管是画画还是软件。

预言了一百年后的编程语言,是今天可以设计出来的,需要跳出当前语言环境的思维禁锢(能够快速生成和运行代码)。

各种语言的编程能力是不同的,比如Java的设计之初是为了解决C++的一些弱点。

互联网创业要选择适合的技术体系和语言,比如viaweb选择了lisp,比其他语言更有特点,更强大。

介绍了lisp的起源和优秀的思想(现在大部分语言都已支持大部分思想,像递归、垃圾回收等)。

语言的流行在于设计和宣传(这就是为什么java流行了),具有良好互动性的语言更受欢迎(先编译再使用的不算)。

未来的函数库会像编程预言一样精心设计(看看python吧),效率也是一个重点(内存、cpu、io)。

新事物发展需要时间,一种是自然增长式,一种是大爆炸式(有资本支持的创业公司,跟前段时间一样,一时间兴起很多轮融资的公司,不过活下来的不多。相反那些自然增长的更容易存活。)。

从设计阶段就考虑"再设计",将接口设计成垂直接口而不是水平接口。内部模块全是垂直堆积的抽象层,层与层之间的接口完全由其中一层控制。

梦寐以求的编程预言:

语法简单,抽象程度高。有大量优秀范例可供学习,内核小但强大。以层的方式构建,除了必要隐藏的东西,所有是细节对使用者都是透明的。

产品设计要以人为本,站在用户的角度思考。不要期望在原型上直接做出成品,可能错过时机了(对标PMP中的项目周期选用适应性而不是预测型)。

思考

一本书500页,几个小时看完。收获还是挺多的,大佬的很多观点超前,放到现在也不过时。

不知道是不是跟不同地区的互联网环境有关,老美的思想还是超前,不是建几个软件园能比得了的。

不论干哪个行业,只有不断的思考才能走的更远。如果没有思路,可以多看书。

尤其是一些思想,多少年都可能依然适用。像投资、心理等等。

每个人或多或少都有自己的感悟,记录下来。有时候回头看看,也有很多感触。

最后推荐一首未卜乐队的生下来,活下去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Canal实现redis和mysql的同步

使用Canal实现redis和mysql的同步 ### canal 工作思路 Canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析和贮存后供下游消费端使用。Canal 包含两个组成部分:服务…

上线到凌晨4点半 pagehelper的bug?

大家好,我是烤鸭: 上上周末上线到凌晨4点半,哭了,没想到问题竟然如此简单。最近又懒惰了,写了开头就一直放着了,今天终于补上。 ​ 问题日志 Error querying database. Cause: com.github.pagehelper.P…

sql 查询结果自定义排序

sqlserver 使用case when then 语句来实现 select name from fruit order by case namewhen Strawberry then 1when Banana then 2when Apple then 3else 4 end oracle 使用decode实现 select * from table_example order by decode(class,C,1,A,2,D,3,B,4) 转载于:https://www…

skywalking 引起 spring-cloud-gateway 的内存溢出 skywalking的bug

大家好,我是烤鸭: 又是个线上问题记录,这次坑惨了,开源软件也不是万能的,还是要做好压测和灰度。 问题 上游反馈大量超时,不止某一个服务,查看服务没有问题,猜测是网络或者环境问题…

长连接检测 监控的一点思考 java实现

大家好,我是烤鸭: 怎么监控长链接服务器的稳定,除了探活服务之外,怎么保证长链接的收发正常,这篇文章考虑下这个。 问题来源 运营反馈部分直播间无法收到弹幕、点赞消息,第一时间进行复现,发现…

rabbitmq 启动失败 dump日志分析

大家好,我是烤鸭: rabiitmq 突然宕机,并且无法启动。同事反馈测试环境 rabbitmq 有一个节点突然掉了,并且无法启动。 现象 集群有一个节点宕机。 去对应的机器上执行启动命令 ./rabbitmq-server -detached发现进程不在&#x…

项目实战-药品采购系统-day01

目标:项目背景,需求,环境的搭建 难点:环境的搭建 1.学习方法: 一个项目:架构师、高级程序员、一般程序员 难度很大但是普通的程序员做很简单 所以自己对自己的定位要准确(一般程序员&#xff09…

《深入理解Java虚拟机》-读书笔记(第一、第二部分)

大家好,我是烤鸭: 《深入理解Java虚拟机》-读书笔记(第一、第二部分)。 第一部分:走进Java 第1章 走进Java 1.1 概述 摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;…

BZOJ1189: [HNOI2007]紧急疏散evacuate(二分答案,最大流)

Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域。每个格子如果是.,那么表示这是一块空地;如果是X,那么表示这是一面墙,如果是D,那么表示这是一扇门,…

[vue]vue渲染模板时怎么保留模板中的HTML注释呢?

[vue]vue渲染模板时怎么保留模板中的HTML注释呢&#xff1f; <template comments>... </template>个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

redis设置为null问题

查看源码后发现&#xff0c;redis没有删除方法&#xff0c;本想给他设置为null,但是redis报错&#xff0c;所有仔细想了一下&#xff0c;发现redis提供了一个时间限制方法&#xff0c;所有可以让redis的时间限制为1s&#xff0c;就想当于删除redis中的这个K。 转载于:https://w…

nacos 返回 403 unknown user 太他么坑了 源码解析

大家好&#xff0c;我是烤鸭&#xff1a; nacos 真的是有点意思&#xff0c;有时候哪怕某个jar包版本冲突了都可能导致莫名其妙的错误&#xff0c;源码走一波吧。 当前版本 <dependencies><dependency><groupId>org.springframework.boot</groupId>&…

[vue] Vue.observable你有了解过吗?说说看

[vue] Vue.observable你有了解过吗&#xff1f;说说看 让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。返回的对象可以直接用于渲染函数和计算属性内&#xff0c;并且会在发生改变时触发相应的更新&#xff1b;也可以作为最小化的跨组件状态存储器。个人简介 …

[vue] 你知道style加scoped属性的用途和原理吗?

[vue] 你知道style加scoped属性的用途和原理吗&#xff1f; 在标签上绑定了自定义属性&#xff0c;防止css全局污染 但是很多时候使用ui框架如果加scope就不能覆盖&#xff0c;这个时候一般写sass 会在最外层包裹该组件名的id 就可以不使用scoped 了个人简介 我是歌谣&#x…

研发效能提升 maven依赖扫描 版本统一 漏洞版本提醒

大家好&#xff0c;我是烤鸭&#xff1a; 整点干货&#xff0c;代码级别的版本统一&#xff0c;以及漏洞版本的扫描。 背景 两个方面吧。 项目整体的架构不统一&#xff0c;springboot/cloud 配置/注册中心也用的不统一&#xff0c;版本更是五花八门&#xff0c;怎么快速的找…