分类: 职业

偶尔谈谈程序员这个职业

  • 泰国曼谷八日数字游民小记

    泰国曼谷八日数字游民小记

    本文跟技术无关,偶尔写写日常。

    可能是失业的原因,去年一整年我对出游都兴趣寥寥。经过一年努力,跟新老板合作不错,顾问的公司也有所成长,感觉经济压力小了一些,于是又想出去耍。

    年初的时候去了日本,陪老婆猛逛六天街,带孩子泡温泉玩雪,感觉不错。于是又生出来泰国玩泼水节的想法。我们上次玩泼水节是 2015 年,在清迈,感觉非常棒,非常好玩。这次刚好,Vincent 也在曼谷,就想着来玩一下,顺便跟他见个面增进了解。

    后面就着手安排。孩子因为学习成绩不太稳定,不敢请假,好在父母愿意来广州帮我们照料。于是我和老婆订机票订酒店。先选了 2019 年 OpenResty 年会的酒店故地重游,Centara 水门。这家酒店地理位置不错,位于机场快轨和 Central World 商圈中间,交通很方便,适合陪老婆逛街。然后又定了两晚的 Anantara 湖畔酒店。泰国酒店很便宜,Anantara 带双人 Spa 才 1700,比日本便宜多了。

    后面执行计划,在曼谷住了八天七夜,明天一早飞机回广州,共计九天八夜。这里小记一些感受。

    1. 吃饭真贵。不知为何,曼谷吃饭非常贵。一般的商场内部,粉面饭要人民币40~50元,加点料就要 70~80 元。点菜的话,我和老婆普遍人均要 120 左右。街头小吃太过粗放,不太敢吃。稍微有个门脸就得 20、30 块,而且小小的一份,根本吃不饱,都得加料。
    2. 反倒是一些大餐能体现出性价比,比如建兴酒家,海鲜点几道菜,300~400,感觉比国内性价比高一些,味道也很特别,值得一吃。还有就是 Plu,很难走的一家饭店,但是味道非常好。
    3. 天气热,这个就不用说了,此刻太阳刚好直射扫过泰国,一年最热的时间,也不下雨,就一天天的暴晒。不过因为我要工作,所以并不出门,所以感觉还好。
    4. 交通不好。曼谷的公共交通不好,去哪儿几乎都要走很远。配上炎热的天气十分老火。路面很堵,动不动就 30、40 分钟。所以选个好酒店就很重要。对逛街而言,我觉得 Centara 真的不错。
    5. 商场很漂亮,有很强的设计感,实体经济也很发达,大家都喜欢逛商场。但是缺少本地品牌,购物欲望并不强烈。
    6. 泼水节真好玩。满大街都是兴高采烈的玩水的人,很难不被他们带动。拿着水枪穿着花衣服就表示你接受被人泼,时不时从远处飚来一道水柱,很刺激。男女老少没有界限,非常好玩。
    7. 妹子真多。这些年我在国内走男闯北,有一个奇怪的感觉,就是周围都是男人,比例很失调。但是这边妹子超级多,各国都有。穿着更是各种热辣清凉,非常养眼。坐在商场一楼的星巴克一边写代码一边打望,感觉非常好。推荐其他远程工作者都来试试。
    8. 星巴克很多,每家商场都有,很适合用来办公。插座很好用,比国内强的多。不过的微信支付太坑爹,多收了我好多钱。

    整体来说,考虑到高额的居住和生活成本,我给这次泰国九天八夜的数字游民之旅打 7 分,满分 10 分。一段时间内我可能不会再来了,明年泼水节可以考虑。

    如果大家对远程、数字游民、泰国旅游有什么想法,或者意见建议,欢迎留言讨论。

  • 远程工作面面谈(1):远程工作的类型

    远程工作面面谈(1):远程工作的类型

    我经常在 V2ex.com 上潜水,看到很多同学想找远程工作,但是对远程工作的基础概念都还搞不清楚,于是想把自己这些年远程工作的经验系统的总结一下,供大家参考。今天先简单列举一下远程工作的类型吧。

    这里的类型,是按照对劳动者个人的保障程度来划分的。因为我接受了一家媒体的方案,期间记者提到,她不敢找远程工作,因为怕公司不靠谱。我觉得这个问题很常见,不仅对员工,对客户也是如此。于是,就按个人保障程度,列出下面种种工作形式。

    0. 远程工作的定义

    这里,我准备用一个比较宽泛的定义:

    1. 绝大部分工作需要在书案前完成
    2. 大部分工作时间不需要去往特定的工作地点,可以自由选择
    3. 雇工双方不一定存在严格的劳动关系

    按照这个标准,低底薪的销售岗位就不算远程工作,接私单的程序员就是远程工作。大概这样吧,比较方便后面的讨论。

    1. 全职远程工作

    我现在的工作就是全职远程工作,我也推荐这样的工作形式。主要特点有:

    1. 我会跟公司签订劳动合同
    2. 公司会提供稳定的薪资、福利,上社保公积金,代缴税
    3. 我的工作地点不受限制
    4. 我要保证大部分工作时间可以快速响应公司需求

    可以这么说,除了第 3 点外,这种工作形式和传统的集中办公并没什么区别。具体到我厂,我们有自己的产品、自己的愿景,也有健全的岗位架构,通过人事代理公司在员工所在地上社保公积金,与集中办公的公司并无差异。

    当然,并不是所有支持远程工作的公司都是这样,每家公司的工作流程不同、管理模式不同,最终表现出来的工作状态也不同。大家应该在面试时了解清楚。

    2. 独立开发者

    独立开发者久已有之,不过随着移动互联网的到来,各种应用市场如雨后春笋般涌现,独立开发者越来越多。独立开发者,一般自主捕捉市场需求,开发应用或游戏,上传到应用市场销售。用户可以购买、订阅,开发者们则通过市场分成获得收益。

    独立开发者一般没有老板,他们都是自己的老板,自负盈亏。独立开发者需要自己解决缴税、社保等问题;不过独立开发者也更自由,不想工作甚至可以不工作。

    因为我本身是程序员,所以我用“开发者”指代这个群体,实际上,独立音乐人、自媒体等也可以算在这个大类里。只要自己有作品,全权(或大部分)拥有作品,靠自己的作品挣钱过活,都可以算在这里。

    3. 接单

    这是很多同学所理解的远程工作。通过某些途径接单,然后完成,然后收钱,然后寻找下一单。这种形式下,劳动者和雇主之间是劳务关系。雇主不承担社保公积金,也不关注具体的工作完成过程,只在验收之后支付商量好的报酬。

    它的问题显而易见:

    1. 缺少劳动保障
    2. 单量不确定,多的时候可能忙不过来,少的时候青黄不接
    3. 缺少沉淀,纯粹的劳动换收入
    4. 遇到不靠谱的老板就鸡飞蛋打

    有些同学会成立一些松散的工作室或小团队,通过多人分摊工作量的方式提高接单量,分散风险。我觉得国内的码市比较靠谱,他们有专门的项目经理帮忙分解项目,按期付费。当然,这是 5 年前了,现在的情况不太确定。

    我觉得这种形式偶尔为之,兼职搞搞未尝不可,当作真正的远程工作风险太大。

    4. 兼职

    有些公司会招兼职人员,比如以前的 OpenResty,有一些非关键岗位,需求不是很固定,老板会愿意招兼职员工。他们不需要像我们一样保证每天的工作时间,也不需要固定参加各种会议,只要保证每周完成一定工作量的工作即可。

    类似的招聘需求在各个网站都比较常见,有些是固定岗位,有些可能只是抓壮丁。一般来说,我也不太推荐这种工作形式,尤其不建议有全职工作的同学尝试。

    5. 区块链相关

    我觉得这一类工作应该单列出来。目前大部分区块链公司的主营业务(Web3、NFT、空气币等)在国内都是非法的,所以这些公司实体基本都在国外。但是国内工程师能干耐操放眼世界范围都实属难得,又受语言等因素影响,很多公司很乐意从国内招人。

    于是这方面的机会也很多。不过显然,这些公司无法在国内提供公司实体,签合同都是跟国外某个不知真假的公司签,出了问题很难追责。工资发放也多半是各种币,如何评估其价值见仁见智,但是转换过程一定会有所损失,需要在起初就考虑清楚。

    6. 总结

    上述几个不同的远程工作类型,除了(1)之外,其它几个界限往往并不明显。有些同学可能到处接单,在接单之余自己开发应用,或者以兼职身份受雇于某家公司。

    即使第一种工作,不同公司的工作流程、对工作过程的考核也不太一样。比如我厂,使用敏捷开发,每天有晨会,迭代结束有总结会,其它时间则基本各干各的,有问题就抓人开会。有的公司则需要装监控软件,打卡计时;甚至随时保持摄像头开启以便管理者检查。我认为这两种工作形式是完全不同的。

    总之,我推荐第一种,也就是全职远程工作,然后选择类似 OpenResty 或者 Code.fun 这样彼此信任,有共同目标和愿景的公司。因为只有这种工作形式,才能培养供需双方的远程工作能力,把我们导向更好的就业环境、工作环境。


    昨天给我厂升级 Sentry,官方文档漏提插件处理的步骤,导致我把 Sentry 搞挂了,折腾了一天才恢复,没时间写博客。今天随便水一篇吧,一直想好好聊聊远程工作的话题,今天开个头。

  • 聊聊日本的互联网开发工作

    聊聊日本的互联网开发工作

    2016 年,携点厂余威,我给全家办下来日本五年自由行的签证。接下来以每年一两次的频率去日本旅行,直至疫情爆发。日本是个典型的发达国家,基础建设水平极高,商品质量服务质量也都很好,我们一家都很喜欢,于是萌生了去日本生活的想法。2019年,O 厂遭遇瓶颈,我正好在 V2ex.com 看到一则日本公司的招聘启事,于是先在线聊了一下,然后约定下次去日本的时候拜访一下。

    最后没谈妥,薪资是一方面,还有些其它方面的原因,今天就来分享下。先声明,我没有在日本长期生活过,基本上是旅客视角,最多算是为潜在移民可能做过一些功课,以下内容可能存在不少错误,仅供参考。


    0. 日本的移民政策

    了解最近几十年日本历史的人都知道,从上世纪 90 年代至今,日本经历了失去的三十年,经济停滞、生活水平停滞,各种排名被不断超越。另一方面,医疗水平高,生育意愿低,老龄化严重。所以日本的移民政策很奇葩:五年入籍,十年永居(PR)。

    即只要在日本生活五年,就可以选择加入日本国籍,成为日本公民;但要生活十年,才可以获得永久居留权。相对来说,新加坡只要六个月就可以申请 PR。

    我们知道,我国不支持双国籍,要么是中国人,要么是外国人,所以想长期居留日本,要考虑清楚。

    1. 日本的生活

    日本是上一代基建狂魔,基建暴多,什么山嘎啦里面都有铁路、公路。市里更不用说,东京地铁可以连通整个东京都生活圈。整体来说生活便利,物资充沛,价格合理。

    不过作为发达国家,日本的生活标准比较高,生活费也比较贵,衣食住行的价格无不高昂。

    • 衣。日本上班需要穿正装,工作日大街上全是职业装的男女,周末好一点,一半一半。所以相对来说衣服要投入不少钱。
    • 食。吃东西很贵,一兰拉面 800、900,约合人民币 50(按之前的汇率),居民区的背街小巷拉面也得 500。
    • 住。住倒是跟国内一线大城市差不多。
    • 行。日本地铁基本进站 200,远一点 700、800 很常见,公共通勤一天也要 百多块人民币。打车更别提了,3km 80 CNY。

    所以同样的工资,日本的生活压力更大。

    2. 日本的职业收入结构

    中国互联网人高工资,因为互联网渗透率高。日本是老龄化社会,年轻人少,社会发展相当停滞,比如最近的孤独美食家里,五郎叔还在用翻盖手机;去年日本疫情爆发的时候,日增 300,不是只有 300 人感染,是因为政府的传真机一天上限只能传 300 个单子。

    互联网企业很难在日本形成规模效应,也很难作为测试市场。日本是很大的单一民族国家,有自己独立的语言、独立的历史、各种独特的生活习惯,在日本做出来的成功产品,很难移植到其它国家;反之亦然。在新西兰、澳大利亚做产品,虽然本国只有几百几千万人,但是可以比较容易的扩展到英语世界去;而日本就做不到。

    于是日本互联网人的工资也不高,跟其它服务业差不多。比如运转士,即大巴司机,资深者 800w/年,和高级前端工程师相仿;便利店门口的招工启事,折算过来普通工差不多 8kCNY/月。所以可以想像,大家都是高收入,那么生活费用高企也很正常。

    3. 日本的社会结构

    我们挑了个工作日去迪士尼,希望游客会少一些,没想到遇到大量学生模样的人也在里面逛。后来面试的时候聊了一下,了解到:因为老龄化+生育率低下,社会阶层固化严重,很多人既没有生活压力、也没有向上的动力。不需要努力,家里也有足够的资产供消费;即使努力了,可能也没办法获得阶级跃迁或改变自己的家庭。所以干脆躺平,想玩就玩,逃课去迪士尼也稀松平常。

    我不做道德层面评价,只是觉得在这样的社会,互联网可能真的没什么机会,因为互联网的功能就表现在提效,显然很多日本人不需要效率。

    4. 其它生活方面

    还有一些移民的普遍问题,比如:买房、上学、医疗、对外地人的歧视等等,因为是共性问题,就不说了,各国各地各有千秋,都不会太容易,但是也没什么特别难的地方。

    5. 总结

    最后,工资没谈拢,我觉得我值更多钱,而且搬家需要很多钱,但是他们转型中也需要很多钱,我们的需求并不匹配。另外我关注日本就业市场之后,也觉得不太合适,就放弃了去日本的想法,直至今日。

  • 远程工作误区:边旅行边工作

    远程工作误区:边旅行边工作

    今天聊一个大家对远程工作的误会:边旅行边工作。

    前阵子有个电鸭上的同学加我,想了解远程工作的一些情况。交谈之中他提到,期待能边旅行边工作,作为一个东北人,想到南方看看海。这也是很多同学包括我对远程工作的幻想,事实上,这只是一种误会。

    第 0 关:相对固定的工作时间

    首先,远程工作也是工作。工作,就有工作内容的要求,对质量、数量、产出、时间都会有要求。有些公司能做到双休、弹性时间、结果考核,已经实属不易,但也只是在每天 8 小时,每周 5 天的基础上,给予弹性。虽然大家可能不愿意接受,但事实上,绝大部分工作,包括软件开发,工作产出就是跟工作时长绑定的,要做出那么多功能、要修补好那么多 bug,就得先保证工时。

    而且,大部分工作也不是单人独立就能完成,协作体系要求大家必须保证工作日的核心时间里,能够找得到彼此,能够约会、讨论。

    所以,即使是远程工作,工作日的核心工作时间也是基本固定的。我们能享受到的弹性,基本局限于下楼测个核酸,中午去趟超市,或者提前半天时间去大热的饭店抢号。并非我今天不爽就不干了,或者我大干特干一周,然后休息一周去旅行。

    第 1 关:交通时间

    远程工作不需要通勤,但是旅行需要交通时间,而且不是一般的消耗时间。基本上,单程一天算是很正常的情况。

    比如,我在广州,想开车带全家去阳江海陵岛(强烈推荐这个地方)玩几天。省内游,成本已经算是极低。路上大约需要 3、4 小时,到了之后,办理入住、收拾东西、吃饭,大约 2~3 小时。这样就需要 5~7 小时,工作日很难成行。

    那就周末去呗?当然可以,但是一来是 6 个小时,一回又是 6 个小时,周末很可能就这么蹉跎过去了。更别说去更远的地方,比如那位同学说的,他在北京,想找份远程工作,然后到南方海边,往返各耗一整天基本是必然结果。

    那就只能这样,我们这个周末去,住在那里;玩一整个周末,然后下下个周末回。

    第 2 关:生活费用

    这就面临一个经济成本的问题。一般酒店每天几百块到上千块不等,住个周末压力不大,住久了还是有些贵。租房子住,半个月一个月未必能很快租到。比较可行的是月租酒店公寓,具体多少钱我没试过,大家可以看看。但基本上,一定比你固定租住在一个地方要贵。

    接下来是吃饭。国内的话,考虑到外卖,城市里问题不大;但是如果在海边、风景区,旅游淡季吃饭相当困难。快递也送不到,大概率还是需要自己到本地市场买菜自己做,时间成本不低。又会遇到交通问题。

    很多风景区或者海边楼盘(便宜的租住地)没有公共交通,离开了长期居住的地方到了新环境,可能也没有办法继续开车或者骑电动车。真的应了广智那句话,谁把共享单车骑过来,谁就是英雄。

    第 3 关:怎么实现旅行自由?

    那么,真的无法实现旅行自由了么?即使远程工作也不行么?

    是的,至少目前来看,远程工作对实现旅行自由没什么帮助。真的想实现旅行自由,只需要有正向财富流,其它无所谓。正向财富流,即你获得财富的速度大于支出财富的速度(这里的支出包括为将来储蓄的部分);不要求赚多少,只要比花销多就行。

    然后,就可以选择合适自己的旅行方式。挣得多就多花,挣得少就少花。只不过大部分情况下,全职工作和四处旅行之间是互斥的。

  • 中年男人找工作有感

    中年男人找工作有感

    熟悉我的人应该知道,前段时间我在找工作。不得不说,中年人找工作,尤其在春节前那个时间点,的确有点困难。

    困难并不在获得面试机会。实际上,我的大部分简历投递都获得了面试机会,似乎并没有人一看我年龄超过 35 就把我简历丢掉。面试过程也还算顺利,好几个能走到最后一面,甚至拿到 offer。

    真正的困难来自 offer 本身——这些 offer 跟我的预期几乎都有差距。大部分公司都是金字塔结构,区别只在于金字塔的层数。所以越往上走,位置越少;如果这些位置上刚好有人,那我就不太有机会。

    另一方面,公司的薪酬体系,以及某些 HRBP 的刻板与不思进取也让我很失望。我不介意领导比我年纪小,或者技术比我差。但是 HRBP 们无法接受我比领导工资高。我的目标是改进团队战斗力,让大家能写出更好的代码,让公司的技术能满足更多需求;按理说,只要我能提供足够多的价值,这些并不应该成为问题。但实际上,HR 给我解释 offer 的时候就说,你不能比你的领导工资高。

    不得不说,在互联网行业工作十几年后,我觉得互联网越来越不互联网了……早先的互联网强调自由,不仅是用户的自由,也包括从业者的自由。你能干、愿意干,就能多劳多得;你不想干、不能干,就躺平拿基本工资。工作所得和贡献挂钩,而不是岗位和职级。我不想归过于 HRBP,但是我的确没看到他们有做什么正面贡献,只看到他们把传统行业里的陈腐观念拿来污染互联网。

    最后感谢杨老板收留,让我的技术有用武之地,让我继续对将来抱有期待。

  • 复盘被金山优化的经历

    复盘被金山优化的经历

    OpenResty 是家好公司,春哥老何也都是好老板——这里的“好”,是道德标准,而非世俗标准。人活着要吃饭,吃饱了就想吃香喝辣,所以世俗标准逃不脱,尤其是我这种人,我这种家庭。

    于是我在 OpenResty 待了四年后,渐渐萌生退意。2021 年 9 月,在猎头的介绍下,我拿到金山办公的 offer;之后请辞、交接,10 月底离开 OpenResty 加入金山。我本以为这会是我新阶段的开始,没想到只在金山工作一个半月,就被优化了。

    领导给出的理由

    直接原因

    过去两个月的产出不达预期。作为 3-1 的高阶职员,应该有更高的产出。

    佐证

    1. 高阶人员应该能自己整合资源、自己发现方向、自己推动进展
    2. 高阶人员应该具备更好的向上管理能力,应该更积极主动跟上级沟通
    3. 高阶人员不应该等待上级安排工作,也不应该依赖上级给反馈
    4. 应该不断秀出亮点,不断有绩效表现
    5. 不应该局限于时间,要用更高的标准产出

    我的观察

    从我入职到被通知优化,总共未满七周。可以判断,优化方案大约是第六周末到第七周初定下的,所以我第七周周四到珠海后得到通知。这完全违背了六个月试用期的约定,以及 OKR 是我这六个月的目标的说法。

    出尔反尔言而无信,金山要负全部责任。至于上面的说法,我觉得全是扯淡,属于先射箭再画靶子。

    工作内容

    给我设置的 OKR 有两个:

    1. 优化某产品移动端体验
    2. 改进整体代码质量

    我拿到之后就开始摸索方向。首先推进全站切换到 http2,全站 gzip 还没有实装。然后开始折腾开发脚手架升级,至被通知优化,完成并提交 PR。新方案可以大大减少加载的 polyfill,从而提升移动端体验。

    同时我还调研了测试方案和代码分析工具,得出了一些结论,提出了一些方案。

    顺便还完成了公司要求的新员工培训和考试。

    我认为一个半月完成这些工作是合格的。

    金山的问题

    管理问题

    经理的原话:我面试你的时候都不知道是给自己部门招人;我也不确定让你做什么好,要不先做这个吧。

    招聘时跟我对接的是广州其他部门的 HR,到我被约谈优化,完全不知情。广州负责带我入职的 mentor 是其他部门的经理,能提供的帮助也比较有限,对我被优化也完全不知情。(感谢他们后面帮我争取活水机会。)

    基本就是一片混乱。至于 HRBP 约谈时说的东西,我觉得只是给优化制造合法性,都是扯淡。

    架构问题

    我们团队 50 人,大部分在珠海,广州长期只有我一个人(其他几位 base 广州的同事首月都在珠海出差)。我问过 HR 和经理是否要先珠海住上一个月,他们给我的答复都是:不需要,需要的时候去一趟就行。

    导致我跟所有人都不熟,日常交往很少,大部分时间在做自己的事情(OKR),只跟领导汇报。存在感稀薄。

    时间问题

    金山办公主体在珠海,人才储量太小,目前的行业地位基本都是靠先发优势。要想赢下来将来和腾讯、阿里、字节的办公软件之争,靠珠海那一亩三分地肯定不行。所以他们想在其他城市建立研发中心,比如广州。我这个岗位很明显就是出于这个目的建立的。

    但可惜的是,因为种种原因,我入职时间定在 10-23,非常接近年底。去年行业大环境不好,不仅有疫情,还赶上国家痛打资本家。于是,我被优化的命运,基本也就确定了。

    我的问题

    不够积极

    我也没忘记自我反省。

    • 出差的时候我基本会顺道去趟医院,基本下午才开始工作,虽然晚上也加班,但是看起来可能不够积极。
    • 没有积极主动跟总监沟通交流,只维持在点头打招呼。
    • 尤其没有向总监汇报过工作。

    现在想想,还是应该约总监好好聊聊。有些后悔。

    绩效不够亮眼

    我的 OKR 带有很强探索性质,很多东西是经理看到之后,觉得值得一试,交给我去探索。做起来并不顺利,很多方向都是死路,短短一个半月,我没能拿出足够亮眼的成绩。

    另外,金山办公 web Office 是个很大的项目库,包含数个部门各种历史时期留下的代码,其质量真的是一言难尽。很多东西没法做,比如 e2e 测试,navlang 对 a11y 略有要求,web Office 里全是 div 怼一切,没法往下进行。

    整案定性

    我 20%,金山 80%

    我的结论:

    1. 被坑了
    2. 金山办公在管理上存在严重问题
    3. 我自身也存在一些问题,比如职场惯性比较大,偏佛系偏自我判断,向上管理积极性不足
    4. 不建议任何有技术追求的同学加入金山办公
  • 希望大家记住,求职面试也是双向选择

    希望大家记住,求职面试也是双向选择

    前几天在思否上答题,看到这个问题:

    面试被问到:let不能在相同作用域重复声明的底层原理是什么?

    简单总结一下:题主去参加面试,面试官问他 letconst 不能在同一作用域里重复声明的底层原理是什么。题主答不出来,面试官得意地教训他:“做一个合格的 JavaScript 开发者一定要掌握编程语言的基础原理。”

    看得我狠从心头起,恶从胆边生。怒答道:

    这个问题不好。

    let、const 不能在相同作用域重复声明变量是规定,规范就是这么制定的,开发 JS 引擎的程序员就这么执行了。就像公司规定 9 点上班,员工 9 点之前就要到办公室打卡一样。没什么底层原理,我想怎么实现就怎么实现,想坐公交就坐公交、想开车就开车、想走路就走路。

    也许某个实现方案会好一些,有些会差一些,但对于 JS 程序员而言,都是毫不相关的领域。如果想问,可以先问一下,候选人答不出来,面试官就应该把实现原理说出来,请候选人分析其中的道理。

    这个面试官多半就是偶然看到篇讲解这方面知识的文章,奉为瑰宝,到处拿来卡人,跟孔乙己一样的。所以,没过是好事。题主收拾心情,再去面别家就是。

    谁都年轻过,我当年也喜欢在工作中积攒一些很偏门的小知识小技巧,面试的时候拿来问别人,一旦候选人不知道,就沾沾自喜。随着后面知识渐广、经验渐丰,发现这种做法真的是愚蠢至极。开发领域的知识技能浩如烟海,谁都不敢说自己全知全能。关键问题在于,面对一个未知领域,一个没遇到过的问题,我们怎么能解决它,多快能解决它。

    对应到面试,我们要确认的是:

    1. 候选人是否具备这个岗位的基本能力
    2. 候选人面对陌生问题时,能提出什么样可行有效的解决方案

    如果面试官不理解这一点,做了蠢事还沾沾自喜,那么这个岗位的未来也岌岌可危,所以不去也罢。


    我还在 V2 上看到这个帖子:

    当招聘信息上的薪资与他的要求明显不符合时,通常如何提出自己的薪资要求

    我猜楼主是个小朋友,一副天真烂漫的样子。看到一些企业的招聘启示,岗位要求和岗位薪资不太对的上,就想去面试,期望在面试的时候纠正对方,即拿到更多的 offer,还得到理想的薪资。

    这里的核心问题在于,楼主假设所有公司都是靠谱的,他们只是一时糊涂,标错了薪资,而已。

    企业招人,都有很明确的想法和定位。企业当然可能对市场、对招聘环境理解有误,导致落到招聘启事的纸面上,让行内人觉得奇怪。但这正说明这家企业有问题。他们或者对技术人员的价值理解有误、或者根本不清楚自己的需求应该怎么满足。这些问题都不是一场简单的面试能掰扯清楚的,更何况我们只是个陌生的候选人。

    所以最简单也是最好的选择就是放弃这家公司。


    简单总结一下,面试求职,是双向选择。不仅公司在我们几个候选人之间挑选,我们也要在几家候选公司之间挑选。要选择最靠谱、最有价值的公司,给自己的履历加分,让自己越走越好。

    至于那些不靠谱的公司、不靠谱的团队、不靠谱的领导,早点认出来,跟他们说再见,别让他们耽误了自己的美好前程。

  • 再见,OpenResty Inc.

    再见,OpenResty Inc.

    被前司(现在是前前司了)裁员之后,我受罗辑思维鼓动,想尝试知识付费,于是折腾了大半年。发现这样下去养不活自己和家庭之后,我又开始找工作,刚好看到春哥在微博上招人,因为事先对 OpenResty 有所耳闻,知道这是个很厉害的产品,春哥也是个很厉害的程序员,就去应聘。于是幸运的得到这个机会,加入了 OpenResty Inc.。

    时光荏苒,一晃又是四年多,到了说再见的时间。

    在 OpenResty 的工作整体来说是紧张而快乐的。春哥应该是很多程序员最向往的样子,至少对我来说是如此:

    1. 有成功的作品
    2. 有厉害的技术
    3. 有很高的业界声望
    4. 有良好的个人家庭生活

    所以能为春哥工作对我来说是一件幸事,因为可以近距离观察这样一位成功的程序员,能从他身上学习,指导自己接下来的发展。我也的确从他那里学到很多东西。

    不过相应的,在 OpenResty 工作也面临很大压力。一方面,OpenResty 是创业公司,我们要从零开始搭建很多产品,应对很多挑战;另一方面,春哥又会对产品的实施细节进行多方位多角度的监督和审视。所以,虽然过去几年都是远程工作,我面临的工作压力却一点也不小,工作时间也一点都不短。

    这样紧张而快乐的生活在本月末画上了句号。接下来,我会为金山文档效力。希望接下来的新旅程能为我带来新的成长,希望我可以给新东家带来超出他们预期的价值吧。

    聊聊远程

    接下来聊聊远程。很多同学听说我放弃远程工作,转投一家集中办公的公司,表示不理解,所以今天借此机会聊两句。

    远程工作爽么?爽,但也就那么回事。正像我在前面一篇博客中说的:没有工作会让你很爽。如果你工作的很爽,要么你有问题,要么工作有问题。

    有人为财务自由划定了若干标准,比如菜场自由、超市自由、便利店自由、电子产品自由、车自由、房子自由等。这个做法其实很科学,因为很多事情本就不是非黑即白的,是否两头中间存在大量中间地带。

    我也仿效 ta 来制定一些新的“自由”标准吧。远程工作可以带来很多平价自由,比如:

    • “穿衣自由”:我在过去四年里,85% 的时间只穿一条内裤
    • “食物自由”:韭菜盒子、臭豆腐、大蒜想吃就吃
    • “厕所自由”:几千块的卫立洗只有我一个人用
    • “空调自由”、“电影自由”、“青轴自由”、“听歌自由”等等等等

    这些自由你说没价值吧,肯定不对;但是如果有人觉得应该抛弃其它要素来追求这些自由,那就完全跑偏了。因为很明显,还有很多更有价值、价格也更高的自由,比如“孩子上学自由”、“买电脑自由”、“买房自由”等。

    所以,当一份工作,能够提供其它更有价值的加分项,只是缺少远程工作能带来的平价自由的话,我们当然应该好好考虑这个机会。尤其对于我这种年纪越来越大,机会越少越少,机会成本越来越高的中年男子来说,更是如此。

    “远程工作工资会低么?”

    多半会低。我们的工资是老板决定的,也是市场决定的,里面包含着地理位置溢价。比如,在北京,一个月至少要大几千块才能保证生活质量,那么一个靠谱的程序员就不可能接受万把块的工资;而比如我,假如在郑州老家的话,有房有车有老妈,一个月节省 1w 块的开销,收入一万就能抵两万。

    所以同样技术水平、工作态度的两个人,一个在北京一个在郑州,两个人对工资的要求完全不同。集中办公时,他们俩不产生交集,无所谓;远程办公时,他们俩直接竞争,老板很可能更倾向于后者。

    所以,远程工作的工资会明显低于一线,持平或略低于二线。除非候选人有他人没有的竞争优势。

    “我没有在大城市工作过,想在老家找个远程工作,可以么?”

    我不敢把话说死,说一定不行;但我必须说,这非常难。

    对于程序员来说,自己的努力固然重要,公司带来的产品压力与用户压力同样重要。比如我的博客,一天几百访问,随便弄个月租$10 的小 VPS 就能跑起来。WordPress + 本地 MySQL,简单配置下缓存就好。如果你只搞过这个级别的服务,突然要你分库、读写分离、上缓存,你就没法搞。

    前端也一样。我因为只考虑放客是开发者,所以只关心最新 PC/macOS Chrome 能不能看。但是真正的生产环境,哪家公司不得兼容最近三年所有系统和浏览器版本?到时候一堆兼容性和性能问题就折腾死人了。

    没有大城市大公司的工作经验,往往就欠缺解决这些问题的技能和经验。于是跟那些大城市退回老家的人比起来,也就缺乏竞争力了。现在真正意义上的远程岗位并没有很多,大多数其实是接单和基础外包,所以我要说,很难。

    总结

    时光如流水,突如其来一个拐弯,我也步入下一个阶段。简单与前面告个别,希望下一个五年,能不负时光,继往开来。

  • 再谈谈远程工作,主要供老板们参考

    再谈谈远程工作,主要供老板们参考

    近期有几个朋友找我咨询远程工作的问题,都是老板,因为种种原因,考虑给团队开远程的口子。我也很长时间没分享远程工作的感受了,所以再写一篇。

    0. TL; DR

    • 不是所有人都适合远程工作;
    • 远程工作对团队的要求很高,对老板的管理能力要求也很高。

    老板开设远程岗位、推行远程工作时务必要慎重。

    1. to 老板

    通用能力,集中办公也需要的能力,此处不再赘述。

    1.1 加强前置沟通

    首先是流程。远程工作,尤其是全员远程的情况下,充分的前置沟通非常重要。

    因为彼此距离很远,沟通成本高了很多,随口一问一答不太可能,所以必须在动手前就把需求、设计、实施方案、验收标准、模块划分都沟通清楚,不然后面效率一定会收到影响。

    老板要建立这样的流程并监督执行,直到大家养成习惯。

    1.2 工作中沟通要积极,多留档

    我厂默认异步沟通,回复时间半天内即可。所以有问题就要积极沟通;甚至不是遇到问题,自己规划了功能/界面设计,选择了技术方案,也要及时沟通。

    这里的沟通可能只是发个消息给协作者,“我要 XXX 了”,“我打算 OOOO”。对方可能不回复,也没关系,因为主要目的就是加强沟通和留档。于是将来就可以回溯,其他人也能通过这里的记录了解到前因后果,做出自己的判断。

    老板应该不断强调这一点,直到大家养成习惯。

    1.3 要有验收工具

    对技术研发来说,验收至关重要。对远程开发岗来说,自动化测试更显得重要。一方面,自动化测试可以节省大量时间,让开发人员知道自己产品的质量,并及时修改;另一方面,自动化测试可以避免 QA 和开发人员之间的矛盾,提升大家的工作效率。

    测试工具推荐我厂的 Navlang 工具链。自动化工具选项比较多。

    1.4 加强工具建设和流程建设

    很多人不适合远程工作,很多人没有接受过远程工作的训练。招聘远程岗位,招聘成本很高,淘汰率也很高。所以与其寄望于招到合适的人才,不如加强工具建设和流程建设,提升团队管理能力,让更多人适配远程工作。

    1.5 99% 想找远程工作的人,都不适合远程工作

    很多人都想找远程工作,多半是因为他们对远程工作抱有不切实际的幻想。这点我深有体会。我当年也以为,远程工作,拿着现在的高工资,想在哪儿工作就在哪儿工作,只要按自己的想法完成工作,其它时间自由支配,潜水滑雪,多安逸。

    实际上,远程工作会面临很多问题,比如电脑设备、网络情况,甚至办公桌椅都会成为问题。在人均颈肩腰腿痛的今天,随处工作基本上是一种奢望。

    再加上工资降低,结果考核带来的工作压力,很多人可能会发现,远程工作并不如想象中美好。那么他能否应对接下来的工作,就要画一个问号。

    更别提还有很多人远程之后根本无法保证工作效率。

    2. to 员工

    2.1 要有主动性

    远程不同于集中办公,每个人都要有主动性,主动管理自己,也主动管理别人。

    比如一个功能,前后端分离,我是前端,我把自己的做完了,就要去催着后端做,直到最终验收。他也一样,遇到前端 bug,他也要催着我改。绝不能被动等待对方完成。

    集中办公的时候,可能有项目经理、可能有需求人、可能有领导盯着,上厕所吃午饭时随口一句就足够大家紧张起来。远程工作,必须大家互相督促才行。

    2.2 远程工作并不美好

    正如水往低处流,因为有引力有势能。工作也一样,如果一个工作非常爽,就会涌入一大堆竞争者,通过内卷把它的爽度抹平,直到这份工作与其它工作相比乏善可陈。

    所以这世上没有很爽的工作。如果有,要么工作有问题,要么你有问题。

  • 好书推荐《重构(第二版)》

    好书推荐《重构(第二版)》

    前些天偶然看到,《重构》发了第二版,而且是以 JavaScript 作为范例语言编写的。于是我马上买了一本,翻了一遍,还是熟悉的好味道。在这里推荐给大家。

    点击这里购买 。年前京东半价,现在稍微贵一些,大家可以等一等,或者自己凑凑单。

    也可以扫码购买:

    0. 我的编程启蒙

    我的编程技能是自学的。最初就是看一些少儿科普图书,上面会教些计算机基础知识,和 Basic 编程。所以很长一段时间里,我都只会在 BASIC 开发环境下执行程序,而对如何让代码在任意环境下执行一无所知,这严重限制了我编程能力的覆盖范围。

    幸运的是,等到我考上大学,正值第一波互联网泡沫破灭,Web 开发风生水起,Flash 蒸蒸日上,所以,只要会写代码,就有地方能跑,而且是一个大平台。有赖于此,我的编程能力可以稳步提升。

    1. 《重构》(第一版)

    但一直自学,缺少交流和指引,也大大限制了我的编程能力的发展。站在当时的角度,我并不觉得有什么问题;但是现在,我回顾自己的职业生涯,觉得那其实是很大的危机。如果就这么抹黑自学,毕业后以非科班的身份去社招,多半会陷入很多转行同学一样的尴尬境地。

    幸运的是,我无意中买到《重构》这本书,并且看完了。这本书极大的开阔了我的视野,告诉我什么才是真正的编程、什么样的代码能事半功倍,以及除了完成业务之外,编程还有哪些工作。

    于是,我不仅在日后的开发工作中取得重大突破(幼儿园全 Flash 官网),在未来的招聘面试里也能够脱颖而出,顺利入行。

    以前的一篇博客里,我把《重构》列为对我职业生涯影响最大的书。

    2. 《重构(第二版)》

    相比于第一版,《重构(第二版)》又有两个比较大的改进:

    1. 产品类型升级,改成了大家更熟悉的电商订票网站
    2. 使用 JavaScript 重构代码,更适合现代前端程序员阅读

    对于广大靠前端开发维生,或者想靠前端开发维生的同学来说,这本书能极大的提升你的工作能力,让你未来的工作事半功倍。对于那些跟我一样靠自学、半路出家的非科班程序员,这本书就更加重要了,它能告诉你什么样的代码才是好代码,怎样写出更好的代码,以及该怎么写合适的代码。


    总之,推荐给大家。如果能使用我的 推广链接 就更好了。