❝我在泰国的沙滩上写代码❞

1,747 阅读8分钟

我在泰国的沙滩上写代码

这是我一个前同事离职之后更新的状态,羡慕吗,我挺羡慕的,可是真有那么好吗?

一般人的认知里,软件开发从来都是大公司,很多人,大项目,一堆人聚在一起讨论项目开发的各种问题。

但是在程序员的认知里,独立开发者是一个不多,但可能是很多程序员梦寐以求的一种状态,没错,一杯也是曾经和现在对独立开发无比憧憬和向往的其中一员。我的职业生涯中也接触过很多外国独立开发者,今天我们不讲技术,就来聊聊独立开发的那些事儿。


软件开发的协作模式这么多年有过很多变化,我个人认为独立开发并不局限于一个人自己接活自己干,在公司里面其实也有很多独立开发的现象,所以我准备从三个角度来谈谈独立开发者。

  1. 真正自雇的独立开发者,这就是我们最熟知的独立开发者,三年不开张,开张吃三年,哈哈开个玩笑。
  2. 某些只有一个人的 IT 部门。
  3. 咨询公司的外派员工。

自雇

我想很多人梦想的独立开发其实只是指这一种,自己为自己工作,自己当自己的老板。在现实环境中,这类开发者有来自于大学刚毕业的人,也有来自于公司出来的经验丰富的开发者。

这在自由散漫的西方人中非常普遍,我曾经有个前同事就是一个典型的独立开发者,来我们公司之前他一直做着远程工作,技术深度和广度其实都不错,来到我们组之后工作了三个月,某一天突然说要离职。

他说实在是无法适应公司的条条框框,觉得还是以前散漫的生活比较适合他。(所以他现在在一艘国际游轮上工作,白天写代码,晚上做船上乐队的键盘手,没错,他喜欢玩音乐)

个人认为每一个程序员都有这种时候,比如你可能也有厌倦公司生活的一瞬间,你也有对所做项目感到无聊的时候,或者你也可能被一些单打独斗的牛人搞的热血沸腾过(老子也要改变世界!!)。

根据 StackOverflow 2019 年的调查,世界范围内大概有10%的软件工程师是独立开发者。 那究竟是哪些原因让这部分人走上独立开发的路呢?我认为总的来说有以下四点:

  1. 更加自由的工作状态,可以自由支配工作时间,调整工作强度。
  2. 可以自由选择自己喜欢的技术栈。
  3. 可以在全世界任何一个地方工作。
  4. 可以获得更高的收入。

这四点乍一看觉得好处多多,但凡事都有利弊,比如:

  1. 没错,你是可以有更加自由的工作状态,但是在没有了客户和项目时,你可能需要花费大量的时间去寻找下一个项目和下一个客户,也由于作为个人,你所做的工作可能无法被合理的量化,导致付出和收入不对等。而且你需要有一个比在公司作为员工更好的沟通能力,营销能力。
  2. 你的收入会不稳定,这一定是一个独立开发者会遇到的问题,加上如果你不能合理的掌握项目的数量,你可能会比上班更累。加上长时间一个人工作可能会导致一些精神问题,最终你可能并没有 996 来的轻松。

所以哪些人适合和不适合作为自雇的独立开发者呢,其实最大的问题就是你喜欢稳定还是挑战,如果你习惯稳定的办公室生活,习惯稳定的每月都有收入,那我建议还是不要轻易尝试独立开发这条路。但如果你是一个对自己技术实力非常有信心,在圈内也非常有人脉,各项软技能信手拈来,那独立开发对你来说完全不是事儿。

一个人的 IT 部门

我们从 StackOverflow 的报告中可以看出,全栈开发者占了一半的比例,这也可以反应一个趋势,越来越多的公司希望自己招的员工啥都能干(资本家真是剥削的越来越狠了)。 从程序员的角度来说,很多人是愿意拓宽自己的技术栈的,所以尤其是在小公司或者非 IT 公司的 IT 部门里面,很多全栈开发者其实就是在做着独立开发的活。

但这并不是只有小公司独有的,大公司也有这种特殊的场景,比如动视暴雪(没错,就是那个日薄西山的动视暴雪)旗下的游戏工作室,有大量内部工具的开发需求,其中就有一部分工具就完全靠单个开发者独立开发,因为有些工具不是那么复杂,多个人开发也没有必要。这种场景中的开发人员就从 Develop 一直干到 DevOps。

这对一部分人是有吸引力的,比如:

  1. 你可以不用当螺丝钉了,你可以接触到一个产品的方方面面,你就是这个产品的 owner,所以你老板换你的成本就变高了,哈哈。
  2. 这种内部工具的开发毕竟不是面向大众的产品,所以你不用担心你的代码会给终端用户造成什么影响,所以也就没有面对百万用户的那种压力。
  3. 在这类岗位上你可以持续学习,和第一点类似,当你一个人掌握一个产品的时候,你就有更多的筹码和老板谈薪水。

但是,这类工作的弊端也是无法忽视的,比如:

  1. 所谓全栈工程师的笑话,啥都只懂一点皮毛。人的精力确实是有限的,你花了时间去拓宽你的广度,就一定会缺少时间去加深知识的深度。通常一个公司希望去招一个全栈开发者,但往往在要求里也是希望你在某一个技术点上是资深的。
  2. 当你既需要瞻前也需要顾后的时候,往往你的产出就会打折,这也是为什么公司的内部工具往往都做的很一般,因为一个人当然没办法和一个团队比产出质量。
  3. 你可能会因为长时间一个人在一个项目上,而使自己失去对市场上主流技术的关注和学习。比如你如果当年是一个塞班开发者,我想在你不得不转型的时候,不会那么轻松吧。

咨询公司

国内可能更多的是外包,可是我想讲的是咨询公司,考虑下面两个场景:

  1. 你作为一个技术人员被派到客户公司,你需要面对和客户公司程序员的合作,可是对于你来说,你可能需要一个人工作,因为这是客户雇你的原因。
  2. 你作为一个技术专家被派到客户公司,而客户公司没有人能和你交流经验。

这两点似乎不是那么容易理解,国内似乎很少有这种情况,我来说个真实的例子。

我前公司就有过这种需求,有一次我们需要赶紧做 Facebook,Google 和很多本地服务的登陆功能,可是人手不够,但我们也不能说就因为要做几个登陆功能就招个人吧,所以这里最常见的就是找咨询公司要个人,咨询公司派来的人就是在这种场景下的独立开发者。

作为这类咨询人员,好处非常直接,你的薪水是公司员工的三到四倍,技术专家可能五,六,七,八倍的都有。

但是坏处也非常让人头痛,比如你几乎不能说你什么不会,而需要帮助,公司高额的支出可是需要你快速解决问题的。你也没有客户公司的各种福利,这个其实很正常,因为咨询人员作为合同工,本来就不属于客户公司。

后记

说了这么多,似乎打破了大家对独立开发者的幻想,其实这也大可不必。

独立开发之所以有一种莫名的逼格,其实说到底更多的是因为程序员的那种理想主义情怀,从程序诞生的那一刻起,一直到现在,那些改变世界的个人英雄主义式的程序员其实一直都在不断产生。

而那种理想主义带来的开源世界,更是让这个代码的世界充满了各种可能性,试问,现在又有哪种职业,能带给我们如此源源不断的机会,而人生最令人着迷的,难道不就是未来难以预测的可能性吗。

So, just be proud of it.

Let's make programmer great again!

- EOF -

当你迷茫时

一杯咖啡,千行代码

欢迎关注公众号:一杯代码