我的技术和生活

  • 理想的远程办公咖啡厅

    理想的远程办公咖啡厅

    昨天 @Easy 老师发了一条微博

    之前问过一个问题:「在共克时艰和消费降级的大背景下,有哪些行业和生意会逆流而上呢?


    昨天和墨多扯淡,他说搞一个「面向美元市场」但是「研发在国内」、「销售完全依靠网络」而且可以「远程办公」的「商业SaaS/APP」是最符合「时代的进程」的。

    因为:

    ① 收入直接是美金,扛贬值,无管制。

    ② 经济如果下行,国内成本会进一步降低。

    ③ 一线城市房租房价高涨,远程办公可以吸收足够优秀的同学去二三线城市。

    ④ SaaS/APP 不好搞的话,其实外包也行,但要做好外语沟通和客服。还可能需要一个外语好的产品经理


    我问他为啥不搞一个,他说懒

    我不太看好这个想法。原因如下:

    1. 想要做的正规,必须给国内的工作人员发工资,上社保。当然可以大家协商发多少人民币,多少美元,不过维持家庭开支钱不会少,多半整个工资都发掉了。
    2. 发币的话,我是信不过……
    3. 远程工作并不适合所有人,有些人(比如前文中的小弟)可能在办公室里能发挥100%的战斗力,回到家连一半都做不到
    4. 说了半天都跟项目无关,其实项目本身也有很大风险

    如果让我说,最合适的项目是做远程办公咖啡厅,类似 3W 咖啡或者车库咖啡之类。遗憾的是,这两家我都没去过,不知道里面办公是什么体验。不过我去过贝塔咖啡,咖啡部跟一般咖啡厅一样,并不舒服。结合我两年的远程经验,说一说理想的远程办公咖啡厅吧:

    1. 桌椅高度要合适。
    2. 可以租用显示器,借用笔记本支架。
    3. 可以租小柜子存放私人物品,不用太大,游泳池那种小的就行,放个充电宝、随手带的小物件之类。
    4. 咖啡符合一般品质,电信能达到星巴克品质。
    5. 交通方便,不需要营业太久。

    我觉得价格可以在星巴克基础上上浮二三成(咖啡30+,饮品40+),这样我也愿意接受。其实大部分需求共享工位都能满足,但是利用率太低,而且咖啡厅嘛,听起来 B 格高一些。

  • 从零和博弈说开去

    从零和博弈说开去

    1. 什么是零和博弈
    2. 为什么要避免零和博弈
    3. 分辨现实中的零和博弈
    4. 改变零和博弈的习惯
    5. 寻找合适的合作者,与他们一起多和博弈

    什么是零和博弈

    “零和博弈”并非什么稀罕的名词,相信很多同学都知道。就是说在博弈的过程当中,参与博弈的人的利益的总和是零,换言之,就是核算收益时,你多了我就少了,我多了你就少了。就是零和博弈。

    那么很自然,如果参与博弈之后,所有人的利益总和会增加,就较“多和博弈”;如果博弈之后,所有人的利益总会只会减少,那么就叫“负和博弈”。这些概念应该都不难懂,我们后面讨论零和博弈。

    为什么要避免零和博弈

    零和博弈会使得参与博弈的人的目的和眼光发生变化,逼迫大家不再关注“如何把事情做好”,而是关注“如何让自己的利益最大化”。

    原因很简单:因为无论你怎么努力,总收益就这么多,一个人多了,另一个人必定会少。桌上就一盘菜,菜里就二两肉丝,甲多夹一筷子,乙自然少吃一筷子,反之亦然。

    抱定这种想法的话,多半会产生两个行为模式:

    1. 如果不那么努力,就相当于减少了自己要付出的时间成本和精力,假如这样还能维持原本的收益不变,就等于变相提高了自己的收益率。
    2. 尽量把收益拢到自己的盘子里,先下手为强,活儿不着急干,锅要赶紧甩。

    总之,都是在保证甚至提高自己收益率的同时,少干甚至不干活。至于事情能不能做成,天塌下来有个高的顶着,事到临头有愿意干的人顶着,没关系。

    分辨现实中的零和博弈

    抽象的概念听起来有道理,不过有些同学会说:这与我何干?我可是很努力的!

    其实不然,据我观察,很多同学都在有意无意的陷入零和博弈的思维模式,继而种种错误。

    就拿我最近的一段经历举个例子吧。有朋友找我做一个小程序,不复杂,垂直交友类型的。用户只要先发出一个交友贴,就可以查看其他用户的交友贴,对对方感兴趣就可以获得对方的联系方式,然后自己去联系,平台不干预。大概就是这样,很简单。

    因为逻辑很简单,页面也不多(大概十个),所以我就找了一个以前的小弟帮忙,算是转包,他负责开发,我负责验收。有钱大家一起挣嘛,说不定将来还有更多的可以合作的机会。

    结果拿到他交付的作品,我一看,简直傻了。糟糕,非常糟糕,超乎我的想象的糟糕。

    • 首先他用了一个蓝湖还是什么的工具,切出来的图片非常奇葩,设计稿明明是750宽,但是导出的图片是1135的。
    • 同时由于设计稿是 PSD 的,所以有一些地方没有做到精确控制,而是用蒙板之类的把多余的部分给隐藏了。结果切出来的图,各种奇奇怪怪的分辨率都有,甚至文字都不居中。
    • 开工之前,我专门打电话给他解释的页面逻辑,但是他交付给我的几乎只有单页,之间的业务逻辑几乎没有体现。
    • 后退一万步到页面制作细节上,也糟糕至极。前面说了,用户要发求友帖,所以需要一个表单,是产品里最重要的表单。结果在手机上预览时,竟然看不到提交按钮,必需滚屏才行。

    总之各种糟糕,我只好彻底返工。

    接下来我就开始反思,问题出在哪里?我会找他,其实对他还是很信任的。结果他竟然交付这么差的作品,难道他认为这样就能通过我的验收么?难道他觉得这个样子能通过甲方的验收么?

    最后我认为,他的核心问题,就在于用纯粹静态的、局限的眼光,把整件事情当成了零和博弈。

    在他的眼里,这是一件很固定的事情:他做出一套页面,老板总共给好比说100块,我扣下20,剩下给他80。对他来讲,这件事情的构成就是我们支付的成本 + 我们获得的收益。如果他想多挣一点钱,有两个办法:

    • 向我多要一些钱。但是这个很难,因为总金额是固定的,大家要完成的工作也是固定的。我多给他钱,我就挣的少,我就亏了。
    • 做得差一些,少付出一些时间成本和精力。

    于是他选择,用最粗糙的手法完成产品。但是不清楚什么样的结果能通过验收,所以打算先做到最差,然后一点一点往上改,直到验收为止。这样就可以付出最少的成本。

    我相信这并非他深思熟虑的结果,而是简单凭借本能和直觉做出的下意识的决定。

    改变零和博弈的习惯

    这其实是现实中非常典型的例子。很多同学并非主观想把这些事情搞成零和博弈,但是在固定化、局限化的眼光下,下意识的做出不良角色,导致事情零和化。

    实际上,尤其是接包这类事情,非常容易产生多和博弈的结果。我们把作品做得好一些,主动加一些视觉效果,帮甲方把逻辑不合理考虑不周全的地方改好,甲方自然就更愿意付费。而且甲方下次有开发需求的时候,也会主动的来找我们。

    如果把眼光再放得一点,其实我们跟甲方也可以形成多合博弈。产品做得好,他就更容易向他的老板,申请费用、申请资源。

    索性我们把眼光再放大一点,我们和对方公司,也是一个多和博弈。我们的作品越优秀,他们就越容易在市场竞争中取得优势,公司的收益就越高,他们也就越愿意拿出更多的收益来和参与这个项目的人一起分享。

    通过上面一系列对比,大家应该可以很明显的看出,什么是零和博弈,什么是多和博弈。关键就在于,我们不能把自己的眼光,局限在眼下这两个人,局限在眼下这一件事,要学会从日常的协作中,发现多和博弈的机会。

    寻找合适的合作者,与他们一起多和博弈

    可能会有同学会说:但是我做的好的时候,也不见得能拿的多呀?

    这当然是可能的。前面说过,很多人无意识的,就把协作搞成零和博弈。这种情况下,作为协作者之一,我们可能难以扭转大局。但这绝不是拒绝多付出的理由,如果你总是以这样子的理由麻痹自己, 反复交付最差的作品,那么你只能一辈子都做 loser。

    我们要做的,是从源头上杜绝自己被困在零和博弈的环境中。我们需要早早的去识别自己的合作伙伴,认清自己的老板、自己的公司、自己的行业,我们不要把自己困在一个只能和别人做零和博弈的环境,我们要去努力创造大家一起多和博弈的机会。

    最后,我们也十分有必要帮助其他人认清多和博弈。如果你发现对方,在明明可以多和博弈的时候,试图和你做零和博弈,那你一定要争取改造对方的想法。如果对方完全没有改造的余地,那么我觉得放弃这次合作的机会也无妨。毕竟天下有那么多聪明人,有那么多值得争取的好机会。

    总结

    不仅仅是外包,生活在现代社会,我们无时无刻不在跟他人协作。如果你细心观察,就会发现,越是高层次的人,越喜欢谈合作;反观底层民众,越是底层越喜欢互害。很多时候,眼界决定人的高度。希望大家今后,多多发现合作共赢、多和博弈的机会,尽量避免零和甚至负和博弈,提高生产效率,提高生活品质。

  • 前端驱动的 WordPress 主题开发

    前端驱动的 WordPress 主题开发

    这次分享主要面向懂前端,对后端了解有限的同学。如果你想用 WordPress 开发网站,尤其想挣点小钱的话,这个视频应该对你很有帮助。这段视频中我没有深入 WordPress 开发的细节,而是以前端技术为主,将我如何尽量使用前端技术完成企业网站搭建的新的和盘托出。

    同时这也是补全《一起挣外快吧——环境搭建+万能的WP+前端如何玩转WP》。

    B 站链接:https://www.bilibili.com/video/av31991750/

  • 迫于搬家,送书

    迫于搬家,送书

    房东打算卖房,所以应该要搬家了。专业书不想搬,送掉吧,广州的同学报名自取,每人限领一本。外地的同学稍微等等,送不掉再到付邮寄(懒得写地址……)。

    照片如下:

    这些书里面,对我提升最大的是:

    1. 重构
    2. AS 设计模式
    3. 编程珠玑
    4. 设计模式
    5. JS 高程
  • 远程办公的环境选择

    远程办公的环境选择

    两年远程工作经验,给楼上各位分享一下固定工位的好处:

    1. 稳定性,受环境影响小。图书馆位置很紧张,尤其暑假;咖啡馆适合写代码的位置并不多,比如没有插头,比如桌椅不合适,比如旁边有人在连吃鸡;家里全是噪音源,老妈老婆孩子狗。
    2. 可以放显示器。这个其实很重要,笔记本的位置很低,使用时处于低头状态,脖子非自然弯曲,久而久之强直性颈椎病,手脚麻痹。不是耸人听闻,我现在已经不敢久用笔记本,大大减少了在咖啡厅的时间。 

    坏处:

    1. 费用高。广州工位租金普遍在 1200/月以上,最便宜的方圆 E 时光 600/月,一年下来 7200,可以买 iPhone 了。
    2. 利用率低。远程工作不考勤,随时可工作。我厂老板在美国,早上起来第一件事就是翻聊天记录,很可能接下来就开工,弄完到午饭时间了,一上午没去;天气热,不想走路,不去;停车费贵,不去;老婆 /朋友 /老妈 /孩子要去某个地方,当司机,不去……一年下来一半时间都空置。
    3. 网络不好。共享空间共享宽带,均下来每个人都是小水管,我经常开手机热点,不然太影响效率。
    4. 冷气不足。相对于商业空间默认 24、25 度的配置,共享办公几乎不会低于 26,女性多的地方经常 27、28 度,热死个人。

    我已经退掉了租的工位,准备还是自我调整:

    1. 工作集中在上午和下午 5 点前完成,基本和孩子上幼儿园时间重合
    2. 跟家里沟通我需要独立的工作环境,他们也渐渐知道怎么配合了
    3. 中午出去觅食,顺便在咖啡厅坐几个小时,充分利用免费停车的时间

    V2原帖:成都有没有自由职业的同事想一起租个办公室啊?

  • 文档的最佳实践

    文档的最佳实践

    指导群里的小伙伴做小项目 应用创意:Chrome 共享首页,有两位同学主动领命,分开前后端就开做。结果我发现他们对文档的处理非常幼稚……所以便有了这样一个分享。

    我的观点:

    1. 文档当然要写,但不要用自然语言这样写一大篇
    2. 文档如果不好好维护,将来表现和实际代码不一致,会造成更大的问题
    3. 所以开发者应该用更强的方式约束文档和代码,而不是大家主观协作
    4. 所以我们——尤其在前后端协作的时候——应该写格式化数据结构描述,然后通过编译的方式,用数据结构描述输出文档、测试、Mock Data

    下面是视频:

  • 应用创意:Chrome 共享首页

    应用创意:Chrome 共享首页

    想做一个 Chrome 插件,替换 Chrome 默认首页,让大家共享收藏夹,这样我就可以跟群里的小伙伴更好的分享内容了。

    想解决的问题

    1. 我日常会看到很多有价值的内容,我很乐意在群里分享
    2. 但是分享的时候,总有人错过
    3. 即使没错过,也常常需要回顾
    4. 有些内容可能需要科学上网,比如 ins 团队在 medium 上发的文章
    5. 对于一些有历史的技术,搜索引擎会提供大量无价值、低价值的内容,远低于熟悉该技术的人自己整理的资料库

    应该具备的功能

    1. Chrome 首页插件,自动加载无版权美图
    2. 群主创建一个群组,生成一个 32 位的 hash 值
    3. 其它同学输入 key 加入群组
    4. 群主可以设置桌板块、布局等
    5. 其它同学可以提供自己的链接,群主审批后进入首页

    未来考虑的功能

    1. 大家可以针对分享的链接进行评论
    2. 大家可以收藏点赞链接
    3. 支持多群组
    4. 支持应用/小程序加载共享链接
  • 肉山小课堂共建计划

    肉山小课堂共建计划

    因为我自己各种忙,各种挖坑,但是十分希望能够多分享一些东西给大家,所以提出这个共建计划。我希望,我作为火种,引信,能够帮助更多的同学学到知识,取得进步。

    经过过去两年高强度高密度的分享,我发现,“分享”这件事,并不容易。

    首先,“你以为你以为的就是你以为的?”很多东西,我们放在自己的知识体系里,认为它就是全部的事实和事实的全部。但其实不然。这些东西,自己以为然当然没问题,拿出来分享,就不得不去收集更多信息以确保准确。

    其次,未经包装的知识,很难被其他人吸收。总有人鄙视那些传道者分享者,觉得他们不配享有现在这般待遇。但实际上,分享和专精技术本来就是两码事,专精者未必擅长分享,“教学”本身也是件很难的事情,需要很多的学习和准备。

    在当下的环境,做我想做的分享者,必然面临经济时间的两难。我做不到黑下心挣大钱,只好挤时间挣小钱。前面说了,分享需要大量的准备时间,又挣不到什么钱,面对金钱和时间的两难,就更难坚持。

    所以我希望和大家共建一个学习环境。我拿出我的经验知识,以原石璞玉的方式授予大家,大家一边自己吸收,一边帮我打磨修饰,最后拿出宝器分享给更多的人;如果能卖出去挣到钱,就一起分成,共建共享。

    总的目标

    1. 共同建设,共同受益
    2. 建设的多,回报的多
    3. 不设门槛,能干啥就干啥

    共建计划

    1. 视频剪辑整理

    1. 我提供视频,任何同学均可进行二次加工和处理
    2. 剪辑完成的视频,效果好的,给予人民币100 ~ 500的奖励(视长度和效果而定)
    3. 视频如果产生商业价值,比如上传至技术网站,四六分账,我占小头

    2. 内容整理

    1. 视频、群内聊天,有价值的内容做成脱水版文章、slide、个人分享博客
    2. 分享周报、类库体验、CSS-trick 挑战等
    3. 优秀者送书奖励

    3. 视频脱水/二次创作

    我甚至欢迎大家整理 slide、文稿,修正错误部分,然后我来重录,或者整理人自己重录都可以(不过必须有我的来源说明)。之后也可以四六分,如果不需要我重录,二八分以可。


    先想这三条,长期有效,欢迎有时间有兴趣的同学参与。

  • \n 与 \r 的区别

    \n 与 \r 的区别

    近期的需求用到命令行输出的解析,在解析类似进度条的内容时,遇到一些问题。经过反复的搜索询问,大概得到答案:主要在于 \r 和 \n 的区别。StackOverflow 的一个答案是这么解释的:

    As indicated by Peter, CR = Carriage Return and LF = Line Feed, two expressions have their roots in the old typewriters / TTY. LF moved the paper up (but kept the horizontal position identical) and CR brought back the “carriage” so that the next character typed would be at the leftmost position on the paper (but on the same line). CR+LF was doing both, i.e. preparing to type a new line. As time went by the physical semantics of the codes were not applicable, and as memory and floppy disk space were at a premium, some OS designers decided to only use one of the characters, they just didn’t communicate very well with one another ;-)

    所以 \r 换行之后,光标移到此行的 0 位,继续输出,于是新的一行会替代旧的一行,形成的效果就是进度条在更新;而 \n 则会另起一行,形成多行输出的效果。

    所以类似我这个需求,直接 line.split('\r').pop() 即可。

    另外,new TextDecoder('utf-8').decode(binaryData) 返回的文本都是用 \r\n 做换行的。

  • 青春!热血!制霸全国!

    青春!热血!制霸全国!

    金足农,很棒,感谢你们帮我们这些社畜圆了一个曾经的梦。