2016/09/27 第711期
如何写 to-do list
每天的 to-do list 不超过三个任务,按优先级排序,问问自己完成哪个最有成就感。写在便签纸上,而不是app里,用物理大小限制自己别写太多任务。不要并行,按顺序一次做一个任务。
从 Maker 到 Manager 的转变
这是 Buffer 的 COO 根据这5年创业经历写的心得。5年前,他20岁,是 Buffer 的实习生,做社区运营(主要是 Twitter 帐号的运营),写大量营销文章。现在才25岁。
如何给爱哭爱叫刚愎自用的下属反馈意见
职场上个人要成功,就得听得进建设性的反馈意见,甚至是尖锐的意见;团队要成功,领导也得经常给团队成员反馈,帮他们成长。怎么面对那种一说就哭的下属?在临近下班时谈话,准备好卫生纸,实在不行改天再聊。
尽管我不再为 StackOverflow 贡献答案了,但这个网站并未衰落
08年上线到现在,大部分基本编程问题都已经被回答过了。只是现在伸手党过多,很多人懒得自己搜答案,不断提问重复的简单问题,甚至是把学校里的作业题贴上去问。
“StackOverflow is a machine designed to do one thing: make it so that, for any given programming question, you will get a search engine hit on their site and find a good answer quickly. And see some ads. That’s really it. Everything it does is geared toward that, and it does it quite well.“
什么情况下适合用 SQLite
这是 SQLite 官方网站的文档,写得很实诚。SQLite 用在很多桌面软件或手机 app 的本地存储(如众多浏览器的浏览历史等),访问量很小的网站(全世界99%的网站),SQL数据库教学工具等。
2016/09/28 第712期
Give Hard Feedback Fast
Mark Zuckerberg 大学的 TA、Facebook 早期员工 Boz 的文章。他身边的人都觉得他是一个不好合作的人,但他一直不知道自己是这样的人,当然,后来他知道了。所以他觉得应该尽早给反馈,早发现早治疗。
有点像代码运行时的 stack trace,离问题源头越近越好、越早看到 stack trace 越好 debug。
当我告诉一个微软高级码工他的代码有错误后
作者讲述了他20岁时在微软做工程师暑期实习生的经历。基本上整个夏天都在做没啥意思的活,直到实习快结束了,意外发现某高级码工的bug,意识到自己虽然是渺小的实习生也能有大贡献,于是充满信心地找了很多bug。
不会再有科技公司了
因为所有公司都将是科技公司。现在世界上市值最高的5家公司都是所谓的科技公司。真的懂得做软件公司去学习传统行业的业务,比传统行业的公司学会如何招程序员要快得多(如 Uber vs 传统出租车公司)
怎样才算好的 End-to-End Test
所谓 End-to-End Test 就是尽可能地模拟某些用户操作流程,比如输入用户名密码登录网站。这样的测试真实度高,但跑起来慢、十分脆弱、不好维护,得与实际UI代码与时俱进。
为何我不是一个 React Native 开发者
用较短的篇幅讲了 React Native 的优点:跨平台、快速迭代、声明式地写UI。用大量篇幅吐槽 React Native 的缺点:非得使用不安全的 Javascript 而非 Swift,本身就是一大退步;潜在的来自Facebook的法律风险。
2016/09/29 第713期
对中国火爆的视频直播领域的16个观察
视频直播是继微信之后中国移动互联网又一个让老外大开眼界的东西。视频直播的门槛低:主播们不用有什么特殊才艺(唱歌之类的),只要能与观众互动就行;甚至不用化妆、不用特殊设备,美颜工具、软件音效控制应有尽有。
目前视频直播平台仍是混战局面,或许不会出现一家独大的情况,就像电视有多个频道一样,多家并存。视频直播的主播们80%是女的,观众80%是男的,这种性别结构让购买馈赠虚拟物品成为很自然的事。视频直播体现的是80后、90后的一种孤独:独生子女、远离亲人朋友在外地打拼,视频直播时段一般在晚上10点到凌晨4点,高峰是在晚上12点。
关于电话号码与身份验证
你的各种账号绑定了手机后就安全了吗?本文讲述了 Coinbase 员工手机号被盗、差点危急公司信息安全的经历(可能通过手机号码重置公司里各种账号的密码、盗取巨额比特币等)。
文章最后给的个人信息安全方面的建议挺不错的,公司应该对员工进行基本的信息安全教育。小公司的员工对公司有挺大的破坏力的,要是员工账号被盗,攻击者有可能直接删了贵公司服务器上的所有数据,就好玩了;其实很多大公司也好不到哪去,当年 Google 在中国就面临了类似的危机。
创业圈里的草包族
创业圈里,很多风投、很多创业者或从众、或模仿成功人士的各种行为;别人成功了,他们做了A、B、C,所以我也得做A、B、C;典型的例子:Steve Jobs 成功了,他脾气不好,所以我也得脾气不好。
原文标题的 Cargo Cults 是来自费曼在加州理工1974年毕业典礼的著名演讲 Cargo Cult Science,以前推荐过的文章草包族程序员里有介绍过:二战时南太平洋小岛的土著看到飞机降落卸下货物(cargo),他们渴望得到更多货物,于是想方设法吸引飞机降落:他们筑起了看似机场的东西、伪装成领航员头上绑俩木头假装是耳机;他们似乎做了正确的事,唯一的问题就是,飞机不会降落。
老年程序员
作者是当年起草XML规范的作者之一、现在Amazon工作、曾在Google和Sun工作。在本文谈了他对科技圈年龄歧视的看法,以及身为“老年”程序员的感受。
文中转述了Java之父 James Gosling 的话:“他们告诉我 – 通常我们不招你这种年龄的程序员,但你情况特殊(Java之父?),所以对你网开一面;在Google工作时,听到几个30多岁的人在讨论要去整容变得年轻点。”
鼓吹结对编程好的人能否消停一下
本文认为,喜欢结对编程的人是少数,只是他们声音大,所以造成一种假象好像结对编程已成主流、每个团队都得搞结对编程似的;结对编程实际上效率低,内向的程序员就只想安静编程、不想边敲代码边说话边与人互动。
2016/09/30 第714期
SaaS公司的收入增长应该是怎样的才能对得起投资人
本文从风投的投资回报需求出发,得出结论:你作为一家我掏钱投资的SaaS公司,你得争气,每个月收入增长13%,连续增长7年,这样的话作为风投的我才能赚钱啊。
每月增长13%看上去像是个小数字?计算一下:每个月都比上个月增长13%,一年就是增长1.13的12次方,也就是4.33倍;连续增长7年,就是1.13的84次方,也就是28746.78倍。
软件开发手艺精进之路
最上层是酷炫编程框架(如ReactJS),中间层是编程语言(如JS),底层是基础知识(如算法、架构)。菜鸟码工是倒三角的知识结构,酷炫编程框架掌握得比底层基础知识好;资深码工是正三角结构,底层基础知识比酷炫编程框架掌握得好。
实用的 SEO 建议
他是负责食谱网站 yummly 用户增长的人,给的 SEO 建议还算靠谱:网站保证有高质量内容,老老实实遵守 Google 的关于搜索结果质量的评分的官方指南,别耍小聪明不然会被 Google 关进小黑屋。
Google 的关于搜索结果质量的评分的官方指南是什么?是这个近 150 页的文档(如果国内用户访问不了,可以试试这个链接,文件有点大,8MB)。Google 招了许许多多给他们搜索结果评分的临时工,帮助他们改进算法,这份指南就是给这些人看的。
Arrange Act Assert
写 unit test 的 3A 原则:Arrange(设置测试数据、变量、环境等)、Act(调用要测试的函数、代码)、Assert(验证输出是否是预期的结果)。很简单很直白的 unit test 的格式。
为什么有一个 Co-CEO 是个坏主意,以及为何我现在有一个 Co-CEO
一家公司里有两个CEO,如果需要两人同时说 yes 才能通过决策,效率也太低了。所以如果有俩 CEO,俩人配合亲密无间、各有分工,决策只需一个 yes 就行。
2016/10/01 第715期
我与12个程序员挤在旧金山的非法Airbnb两居室,追逐我的淘金梦
两居室上下铺,每间住6人,每人月租$1200;衣帽间住一人,月租$1400,那人在Pinterest上班。作者在编程学校学编程,不禁彷徨、怀疑自己的选择。这帮室友不乏名校毕业、早出晚归、缺乏生活能力。
这公寓在Airbnb上的广告是写着租给4个人住的,实际住了13人;他们没有公寓大楼正门的钥匙,得在门口等其他住户进出、然后他们趁机溜进大楼;公寓房门的钥匙藏在公寓门口某个隐蔽位置,租客开完门后要记得放回原处。
本文的可信度多少?我一刚大学毕业的同事的同学(某藤校毕业的)就住衣帽间,月租也是$1400,不知是不是文中那位:)国内的读者可能不信,美国不是房子很便宜吗?看一下Craigslist上旧金山地区的行情吧。
随手搜一下 san francisco closet rent — $1500衣帽间,在住60人的house里,文中列出了租客们的工作单位,以及Reddit上求租衣帽间的帖子。对了,我还有个同事租过集装箱的,开 party 很给力。。。
当然了,就像在世界上任何房价高的城市一样,只要你愿意花时间做点研究、愿意住得远一点、愿意住破一点的房子、愿意住治安不好的区,在旧金山是可以用相对便宜价格租到面积相对较大的房子的。凡事没有绝对,你永远都能举出有人用极低价格租到极好房子的个别案例的。
Apple 在 Podcast 领域扮演的角色
作者同时身为 podcast 播放器 app 开发者与 podcast 节目制作者,本文从 Apple 切入,分析了 podcast 现状以及 podcast 制作者们的需求。
这个类比不错:网页之于 podcast 的音频文件,浏览器之于 podcast 播放器;网页在浏览器上“播放”,podcast 音频在播放器上播放;网页是程序,开发网页的人可以加入各种 tracking,精确跟踪用户访问的情况;然而,podcast 音频文件不是程序,podcast 制作者们压根没法追踪用户收听的情况,所以 podcast 里即使放了广告,也难以得知到底用户听到广告了没。
给了陌生人 commit 权限后,我的开源项目竟然发展得不错
作者的开源项目 django-money 收到一个巨大无比的 pull request,他不敢 merge,就直接给了那人 commit 权限。几年后,这个开源项目竟在他无人驾驶状态下发展得不错。。。
两种软件工程师与他们的工作态度
production上有个bug,第一种工程师承诺尽力修复,若晚上9点以前没修好,回家,第二天再继续做;第二种工程师承诺不修复好就不回家。老板们会喜欢哪种工程师?
第二种工程师,看上去很卖力,但很多只是急于表现、讨好领导、争取升职加薪,这种工程师看上去能熬夜,但白天精神不好,接下来连续几天精神都不好,效率变得更低。多数情况下的bug其实都没必要在精神状态不佳深夜修复。
做公司、创业、工作、人生都是马拉松,太早冲刺了后来就没劲了、就想休息了 — 就像很多人这辈子最大的成就发生在高考结束的那一刹那、或者拿到某某名公司offer的那一刹那。
黑莓的成功导致了它的最终失败
作为10年前逼格最高的手机,黑莓没有必要颠覆自己,没有必要冒险让(现在看来其实不是很多的)已有用户不开心。给没有10亿用户的公司的建议:不颠覆自己已有的业务,早晚别人会来颠覆你的。
"It’s an instructive lesson to any company with less than a billion users of its products or services: no matter how good you may already be, there’s always the potential to do better, and if you’re not willing to change and do the scary new thing, someone else will. Adapt or die."
对于世界上任何互联网公司,非用户数量都比已有用户数要多。
2016/10/02 第716期
What I Wish I Had Known Before Scaling Uber to 1000 Services
Uber现在有2500个工程师,一半是最近6个月加入的;今年5月份共有8000多个代码repo,比4月份增加了1000个;共有1000个microservice!
可以想象,Uber 内部重复造轮子的现象是很普遍的。根据 Conway’s law,这1000个 microservice 分别有不同团队来维护,团队之间就有政治因素在里面;不同组的 service 互相依赖,service 之间以及人与人之间会有不和谐现象,出 bug 了谁来修?用什么技术来开发该听谁的?凭什么要用你们组的 service、为啥我们不自己重写一个更好的?等等。
Twitter 如何部署挂件的 Javascript 代码
在网站内嵌转推按钮、内嵌 tweet 的 js 代码,也就是这个文件:platform.twitter.com/widgets.js — 将该域名通过DNS解析指向新版本代码的url,新旧两版代码共存,可瞬间rollback。
训练让你注意力更集中的方法
在这个碎片信息横行的时代,现在越来越多的人已经不具备集中精力连续读10分钟文字的能力了。本文讲了一些心理暗示的方法,让更注意力集中。
为什么 Linux 内核开发依然使用 email 来管理
根据 Greg Kroah-Hartman 最近给的一个 talk 总结的笔记。GitHub 管理小型开源项目是很方便,但 Linux kernel 有分布在世界各地4000多个代码贡献者,其中很多人上网不方便,用邮件沟通与管理项目简单方便实用。
有效发 cold email 的指南
给陌生人、尤其是给很忙的人发邮件:1,定制文字内容,别群发;2,自我介绍,拉近关系;3,欲取之必先予之,你有什么可以先帮他/她的;4,字数不多;5,有礼貌;6,别套用模板。
2016/10/03 第717期
为何深度学习突然之间改变了你的生活
这是来自财富杂志关于深度学习的科普长文,用老百姓能听懂的语言解释什么是深度学习、如何运作的、有哪些应用、深度学习发展史上重要的一些里程碑。深度学习四巨头:谷歌,脸书,微软,百度。
The egoless programmer
讨论了程序员里颇为普遍的现象:充满 ego、自负、容不得别人批评自己的代码、容不得别人给自己代码挑错、同时又看不惯别人写的“垃圾”代码。软件开发是团队运动,个人的egoless对团队是有好处的
当一个人成为一个故事时
当你听到一个人名的时候,你想起的是一些这个人名相关的故事,而不是具体的有血有肉、有喜怒哀乐、有优缺点的客观的人。名人的公关团队向公众兜售故事,而普通人精选自己的照片晒到社交网络上讲述自己最美好的故事。
在算法横行的时代,我们更需要人类来把关
有一种东西叫“品味”,是目前人类比算法在行的。Amazon推荐书、Spotify推荐音乐、Apple推荐新闻与音乐等,都有人工干预的部分;而且越来越多线上服务采用人工 curation 的模式了,比如湾区日报?纯手动推荐,哈哈
如何无障碍地学编程
学新编程语言时,难的不是学基础的语法,难的是知道最佳实践、知道如何向搜索引擎问正确的问题。作者尝试了花钱请人通过 Skype 教他 Ruby on Rails,有点结对编程的意思。
2016/10/04 第718期
食材速递领域的独角兽 Blue Apron 内部一团糟
现在做Meal Kit的创业公司不少,将一顿饭的食材按比例打包好快递给你让你自己做饭,号称比外卖健康、比自己从头准备一顿饭要省时间。Blue Apron就是这类公司的佼佼者,但其实内部一团糟。
这类公司涉及食品安全,很多其实都不合格。号称是 Food Tech、科技公司,其实也是劳动密集型的,大笔融资后,租了巨大仓库,雇了数千劳动力准备食材、打包、送货,这些工人工作时间超长、工资极低、工作环境不安全、管理混乱。这篇 BuzzFeed 的长篇报道里提到,Blue Apron 就因为开了一些工人,他们怀恨在心、恐吓、扬言要放炸弹爆破仓库。。。
README 的艺术
为什么 README 全大写?因为 UNIX 系统下 ls 会把文件名大写的文件排在前面;README 文件很重要,需要引起大家重视。好的开源项目只要看 README 就能方便使用了,不用去读代码。
我一个周末就能做出来了,为何这玩意儿需要这么多人做
当提到某个网站、某个app时,很多人会不屑地说“我一个周末就能做出来”。本文以搜索引擎为例,纸上谈兵一番,试图用 Lucene 来做到 Google 的规模,反驳这种“一个周末就能做出来”的言论。
大家可以自己练习一下,当有不懂技术的人质疑为何“简单”的网站(如140字Twitter、微博之类的)需要好几千个员工时,你该如何应答?在 Quora 上有很多类似的问题,我记得有个回答是:做一个饼很容易,难的是如何快速做10亿个饼。
研究人员们用 GitHub 共享数据与代码
来自 Nature 的文章。以前写 paper 引用了 Wikipedia 的页面,被导师批评说不严谨,Wikipedia 的页面也能信?现在学术论文引用 GitHub 链接的数量越来越多了,时代变迁啊。
不要再用过去待过的公司的名字来抬高个人的身价了
作者看不惯这种现象:社交网络上的个人名片流行用排比句式罗列自己待过的名公司的名字,媒体报道某某创业公司是由某某名公司前员工创立。这帮人因为过去的光环而盲目自信,没法脚踏实地,因而会错过很多机会。
哦,这些人这辈子最大的成就难道就是某某名公司前员工?刘备三顾茅庐的自我介绍:汉左将军、宜城亭侯、领豫州牧、皇叔刘备;龙妈的头衔:“of the House Targaryen, First of Her Name, the Unburnt, Queen of the Andals and the First Men, Khaleesi of the Great Grass Sea, Breaker of Chains, and Mother of Dragons.” 哈哈
死后墓碑上刻着毕生最大成就:某大学校友、ex-googler、ex-facebooker、ex-xyz、ex-… 生前死后都离不开组织,离开了组织都不知道怎么介绍自己了~ 这个句式的创意是来自我以前读研究生院时的一个同学,当时我们常一起八卦学术圈里的人,他觉得某个人这辈子最大的学术成就是“成为某教授的学生”。。
2016/10/05 第719期
DevOps 并非只意味着自动化
讲得在理:不是写了一些自动化脚本就叫在实践 DevOps 了,自动化是 DevOps 最简单的部分;DevOps 核心是人与流程,能接受失败是常态、失败了能客观总结教训、公开透明地经验分享,自动化是为流程服务的。
制作半条命的日子
本文写于半条命开始发售的第二天,1998年11月9日。回顾了他在 Valve 做游戏设计师的经历,设计半条命的故事与关卡。文笔不错,因为他本身是作家。后来的反恐精英是半条命的一个 mod,引入多人对战模式,风靡全球。
上线 Hipmunk 的故事
在美国的人应该都知道 Hipmunk,搜机票的网站,它的搜索结果展示的方式很不错。Hipmunk 的联合创始人与 Reddit 联合创始人几乎是同一拨人。
上线 Reddit 时他们都还是无名小卒,孜孜不倦地靠机器人发帖好几个月才有真正的用户;到了上线 Hipmunk 时,他们已经小有名气了,连 CNN 都主动联系要来报道他们。
Twitter 的数据中心
讲了 Twitter 数据中心的进化史。最开始租别人的服务器,然后自建数据中心买整机,然后根据不同 workload 自己定制机器,然后 Mesos/Aurora 搭 PaaS。
虽然对大部分创业公司没啥借鉴的意义(既发展不到这规模,其实也没必要养那么一帮硬件工程师自己搭机器),了解一下也好。
2016年学 Javascript 是一种怎样的体验
搞笑文章一篇。在2016年,为了使用 Javascript 完成简单编程任务(如简单基本的 Ajax 操作),认知上你得大概知道五花八门各种新名词,实践上你很容易不小心使用了各种奇怪的 js 库。
一年不接触 Javascript 的世界,一下就落伍许多了。本文是前不久推荐过的吐槽 microservice / docker 把简单任务复杂化的“It’s The Future”的姐妹篇。
2016/10/06 第720期
是时候取消 App 的版本更新日志了
大部分 app 更新日志都是“修复 bug 以及其他改进”;app 的功能现在都用功能开关控制,不是每个用户都看到相同功能的;宣布新功能也不能在更新日志里宣布啊,很多人都开自动更新,压根就看不到你的更新日志。
湾区日报 app 的更新日志主要是写段子:)
竞争一点都不重要
这是给想做 side project 赚点小钱的人的建议。不用太担心同一领域已有很多强大的竞争对手,他们已经帮你教育了市场,而且人的口味千差万别,并非每个人都觉得你的竞争对手的东西是好用的。
每次出来一个什么新东西,很多人都会评论“这东西某某公司已经做过了”;Google出现的时候市面上已有无数个搜索引擎了,Slack出现的时候市面上已有无数个群聊工具,Facebook出现的时候已经是第n个社交网站了。竞争对手的用户数肯定远远少于世界上还没用过他们产品的人,你还是有很多很多机会的:)
蜂巢效应
以蜜蜂/蜂巢为类比:蜂巢效应追求的是个体间互动的频繁,绝对数量未必多,但个体间互动多了就有生机有机会,如Snapchat让用户快速频繁地创造内容,如无人驾驶车时刻在动,高利用率,如Slack让员工们点对点频繁沟通
相比之下,网络效应追求的是绝对数量的多,如社交网络们追求尽量多的用户,但大部分用户之间互动不多,要嘛贫富差距大(Instagram里50%的内容由少于3%的账号生生成),要嘛用户不活跃了(Facebook里用户更新状态的数量以每年21%的速度递减)
MailChimp:不在硅谷的非典型创业公司
俩创始人于2000年时被裁员,自费创业帮人做网站,发现小商家们对邮件营销挺有需求的,于是边做网站边做邮件营销的服务;07年开始全力经营邮件营销服务。地处亚特兰大,不融资,不上市,早已盈利自给自足。
他们原来打算叫 ChimpMail,但域名被注册了,于是改叫 MailChimp。湾区日报的邮件订阅就是用 MailChimp 搭的,每个月花$20多,至今依然很满意,与我自己搭自己维护所要花的时间比,这钱花得太值得了。