分类目录归档:随笔

christopher gower m HRfLhgABo unsplash scaled 1

谈一谈成长、职业和未来

在上一篇文章「从 Employee 到 Freelancer 到 Self-employment」中,我谈到了当前以及下一个阶段的职业安排和思考。

最近几天,也看了一些文章 & 和一些同事聊了聊,觉得还有一些东西可以继续聊一聊。

我为什么要离开?

离职对于任何人来说,都是一个职业选择的问题,但疫情当下,一切都不甚明朗,显然,保持现状,保持现金流是一个不错且理智的选项。在这种情况下,主动离职是一个绝大多数人难以理解且想象的选择。

但对于我来说,这也的确是我考虑再三后的结果。若问原因,一个比较重要的点便是精力的消耗。

一直以来,我都是以开发者状态在工作,但在这一次切换工作的时候,我选择了一个我之前从未做过的(但我认为对我的长期目标有帮助的)工作 —— 运营。和开发不同,运营不是一个生产者,而是一个操盘者,因此,其工作有大量的依赖,对内依赖研发、产品,对外依赖合作方。同时,其本身不产出产物,导致运营的工作出现了多线程的特点。长久以来的生产者逻辑让我在面对操盘者的逻辑表现出了疲惫,不断的消耗着我的精力。

这种精力的消耗随着工作的深入,不断的提升,最终,到了最近,这种精力的消耗让我持续加班、深夜工作至 2~3 点,早晨 8 点起床上班,整个人无比疲惫,让我作出了要离开的决定。

这种精力的消耗,让我无暇学习、提升自己,如同笼中仓鼠,不断的循环往复

换句话说,如果我持续这样下去,最终,我便是那个累死在笼子中的仓鼠

离开后如何生存?

当我离开了公司,那么下一步,面临的就是生存问题了,如何在这个社会上生存?特别是我还居住在一个生活成本很高的城市(深圳)。

对我来说,这个问题困难,倒也不困难。困难在于,如果离开公司,还想要稳定的赚取收入,是一个十分困难的事情。但,如果我离开以后只是为了生存,倒不会太过困难。

我一直以来都会有一些业余的收入(进了公司以后,因为工作时间和精力的问题,少了很多的收入),如今离开了公司,有了更多时间,要做的第一件事,就是重新拾起这些业余的收入。

此外,我本身也具备开发能力,可以进行一些 side-project 的开发和以 Freelancer 的状态为一些团队工作,基本的生活可以保障。

离开以后想做什么?

因为工作繁忙,今年的一些规划一直没有落实,离职后的几个月时间足以让我把这些规划落实,具体包括:

  1. 把驾照考到手
  2. 看看书,写写公众号
  3. 把之前规划的一些和开源、云计算的课程录制出来
  4. 减肥
  5. 把一些设计好,但一直没有落地的开源项目搞完,并开放出来。

除了这些,还会做的包括

  1. 出去旅游(毕竟南航随心飞买了,不能太亏了)

长期目标到底是什么?

上一篇文章写完以后,发到了推特,倪爽老师帮我转发了一些,并评论:很少有人会从 Freelancer 思考到 self-employment

这个是因为我的长期目标是self-emloyment,Freelancer 对我来说,更像是一个中间过渡状态。

长期来看,我希望我可以完成 self-emloyment 状态的转变,可以更加自由自在的生存。而想要达成这个目标,基于对自身和当前所属时代来看,作为一个开发者,开发出能够养活自己的产品,并不断的维护,显然是一个比较简单达成的目标,而为了达到这样的效果,我需要多种能力来辅助,包括「产品能力」、「研发能力」、「运营能力」,只有具备了这些能力,我才能够将一个产品实现从 0 到1 ,并借助运营能力将它从 1 到 100 、到 1000 ,在这个过程中,我需要积累这三种能力(也是为什么当前这份工作我要转岗做运营这样一个大多数开发不愿意做的工作),伴随着这个路线,我已经具备了满足我自己要求的研发和运营能力,接下来需要做的,是不断打磨产品的能力,直至达成自己的长期目标,成为一个自雇人士。

选择离职和下一份工作,要想什么?

我一直说,我自己做事从不后悔。可能会遗憾,但从不后悔,便是我在每一次做选择前,都会纠结很久,做出自己的选择。

而就职业这个角度来看,你在离职前需要思考这些东西

  1. 我为什么离职?当前离职原因是否可以被改变?
  2. 在当前这份工作中,我想要的是否已经得到
  3. 如果没有这份工作,我会失去什么?

以及,在选择下一份工作时,你要思考什么?

  1. 这份工作带来了什么?
  2. 我在这份工作中想要的是什么?
  3. 这份工作公司从我身上得到了什么?

如果你能想明白这些小问题,选择的对错本身就没有那么重要了。

man in black shirt sitting in front of computer

从 Employee 到 Freelancer 到 Self-employment

mjm1r

从 Empolyee 开始

如果从毕业开始算起工作经验,我的工作经验并不算长。最早是一段时间的 Gap,接下来就是持续 2 年左右的受雇生涯。但如果算上真正开始接触金钱,为金钱而工作的话,则时间会更长。在校期间,我注册过公司(毕业的时候注销掉了)。

几年来和别人协作、工作的经历,让我对于工作有了基本的感受,同时,也让我体验到了不同的岗位、不同的团队产生的价值。

在过去的一段时间里,我从开发者的角度切入,成为一个面向开发的运营,了解和体会了运营的工作,以及其价值。配合上在上一段工作中开发的经历,和一直以来的开发工作,我对于开发、运营有了更多的认识,也开始学习如何更好的利用这些价值。

不过,我即将结束自己的 Employee 的阶段,进入到下一个阶段。

进入 Freelancer 的状态

我其实有不少朋友都处在 Freelancer 状态,甚至我前几天才知道,一个朋友我一直以为他是 Employee 状态的,已经 Freelancer 很久了。

而我自己,其实一直以来比较向往 Freelancer 的状态,因为我除了热爱编程以外,我也是一个热爱生活的人(比如热爱做饭,喜欢打扫家里的卫生)。长期以来,Employee 的状态让我大部分的时间都只没有足够的时间去研究这些。目前来说,只能寄希望于 Freelancer 的状态可以让我达成这样的自由(当然,更大的可能是没有办法达成这样的自由,所以,也衍生出了我下一个阶段的需求)。

不仅如此,我是一个很典型的“夜猫子型”的人,我喜欢在深夜 Coding,夜晚可以激发我的灵感和激情,让我不停的 Coding。而白天则无法让我有如此充足的激情。但,正常的工作很难给你这样的机会,让你在深夜进行 Coding,因此。我会希望自己能够找到一个更适合自己习惯的工作机会,来让自己的工作和生活习性达到匹配。

除此之外,我很喜欢看书,我每年都会给自己定下看书的目标,去年执行的还不错,但今年以来,工作的持续繁忙,让我根本无暇去读书学习,对于我来说,这是一件十分痛苦的事情。Freelancer 所赋予的自由,可以让我在工作之余,有足够的时间来去做自己想要做的事情。

Freelancer 的状态可以预期的是,我的收入将会大幅度下降,停留在一个饿不死,但活得不会太自在的状态。因为 Freelancer 并没有改变我和生产资料的关系。我依然不持有资产,我始终是个打工仔,不同的是,我在为一个可以让我深夜 Coding 的 Team 打工。仅此而已。

最终到 self-employment

我们对于共产主义的一个描述就是,物资极大丰富,每个人都可以自由的去追求自己想要的方向,每个人都可以获得成长。在这个场景下,对于我最具有吸引力的是,每个人都可以在自己想要的领域去获得成就。

如果我希望获得这样的状态,那么我需要的是一定的物质积累。而这些物质积累,则需要改变自己和生产资料的关系,从不持有资产,到持有资产,让资产产生价值。在这个基础之上,我需要做的,便是不断的去构建资产,让自己可以拥有越来越多的资产。幸运的是,我所在的互联网行业,还是一个比较容易去构建资产的领域。因此,我会预期自己在未来的十年内,通过构建不同领域的资产,让自己获得一个真正的自由,可以去追求自己想要的成长,无论是音乐,还是烹饪,还是艺术。任何我想要的领域。在这个基础之上,我需要让自己不断的从 Freelancer 转换为 self-employment 的状态,让自己获得持续的收益。

这个状态很难做到,甚至可能永远都无法做到,但,我依然需要去做到,如果不去尝试,我始终无法做到这样。

总结

从 Employee,开始向 Freelancer 状态的转变,我是惶恐的,惶恐自己将长期没有收入,最终坐吃山空。但我也是兴奋的,因为我知道,无论如何,我都会去这样做,只不过是时间问题。

其他

谈起未来的状态,惶恐是真的,好在,身边的不少朋友都可以给予我支持,让我可以在 Freelancer 状态下拥有一个保底的收入,在这种情况下,可以让我更加安心的去做想要做的事情。

有朋友,真好。

close up photo of tabby cat

我有猫了

ijz28
小猫

楼下买瓜,小卖铺老板家的猫生了小猫, 便带了一只猫上来。

一直以来,我都不太敢养猫,究其原因,是我不愿背上这个责任 —— 一个生命的沉重,特别是我自己还处在颠簸不定的时候,总担心自己会把他给一不小心弄死了。

猫咪如果一直长大,倒也罢了,倘若某天突发疾病,离开了我,以我懦弱的性格,大概会哭一段时间吧。从小养猫,和猫的感情很好,但从来不愿送猫离别,打心底不愿意一个生命就此离去。但,生活便是如此残酷,对于我而言,也需要不断的挑战自己,让自己可以接受这样的事实。

不管怎么说,我有猫了。

b24we

silhouette of person's hands forming heart

不要让你的情绪影响决策

人非绝对的理智动物,我们常常会被情绪所左右。

而情绪波动下时的许多选择,都不是正确的。

情绪应当被释放,但如何释放是一个值得思考的问题。

看 https://www.v2ex.com/t/691378 有感

作者因为V2ex 的评论,把打赏的收入全分出去了,虽然不多,但还是挺冲动的。
ea3765a81c7a26a7864efdcf7c81ef7b

如果钱不再重要…

今天和朋友一起盘算了一下如果我离职,接下来该怎么办,在这基础之上,先做了月度开销的评估。

如果我当月保持最低消费状态,大致的开销如下

  • 租房:2800 元, 2300 房租,500 水电(夏天空调开得多)
  • 餐饮:3000 元,每天 100 的预算,自己做,其实吃不了这么多。

在不购置任何新的产品的情况下,每个月的生活成本可以控制在 6000 以内(如果我在焦作,可以控制在 1000 以内,只有吃饭的成本)。

在这种情况下, GAP 三个月的选项似乎可行(也就是总体资产减少两万块),但换来的其实是一段时间的休息和个人充电。

此外,还评估了一下我如果 GAP ,期间如何获得收入

  1. 写稿:我一直有写稿子的业务,每个月可以通过写稿搞定 5000 ~ 6000 的收入。基本覆盖生活需求。
  2. 录制课程:有固定的合作伙伴,录制课程的收入还行,偶尔搞一搞一年的收入也能有个五六万。每个月平均下来就是 6000 左右。
  3. 独立开发:当前这段工作中发现了不少工具的匮乏,可以进行一些相应的开发,并基于此延展出一些小的工具,并获得部分收益。
  4. 外包项目:难以预估,但目前来看还好,因为可以全职做的话,可选有很多。
  5. 远程工作:可以找一些远程的团队,进行一些不那么耗时的工作,提升个人价值。

此外,我还有一些预定今年要做的:

  1. 课程学习
  2. 实体书撰写(合同差不多了)
  3. LC 的运营化改造

a keyboard sitting on top of a white shelf

API 对于开发者的重要性

作为一个开发者,我经常会使用各种各样不同的软件,而这些软件中,哪些是我们用的爽?哪些是我们用的不爽?他们有什么特点?这里总结一些。

1. 有 API

API 对于开发者相关的业务来说,十分重要。对于开发者来说,有了 API 就意味着他有更多自定义调用的可能,可以和其他的能力整合起来。但是如果你没有 API ,对于开发者来说,就没有了变化的可能,一旦出现了一个有 API 的产品,你的产品就不再有价值。

interior of a coffee shop

为什么大城市里咖啡店很多?

在小城市里,往往没有很多的咖啡店,但是在大城市里,经常会有很多咖啡店。这是因为什么?

我想了一下,可能是因为大城市里大部分人都没有办法在自己住的房子中营造出一个很好的学习环境(比如我租住的是一个单间,就没有足够的空间来放置沙发和学习桌子),在这种情况下,“共享”的学习空间就成为了必需品,而咖啡厅这种看起来还不错的选项自然而然就会被人们想起来(类似的,大城市里的共享学习空间也是这样的,当然,共享学习空间还提供了一种学习的氛围)。

在小城市里,大家大多居住时会有一个 X 室 X 厅,因此,在家中想要打造出一个小的学习空间,还是要容易一些的,因此,没有必要在外面学习,自然而然,对于咖啡厅的需求就小了很多,只剩下和朋友一起聊天的需求。

供需关系,决定了小城市注定很难有太多的咖啡厅。

不过,倒是觉得可以自己开一个小的咖啡厅,一方面可以让朋友过来一起聊天,另一方面,如果没有人,自己也可以喝咖啡、工作。

这么想想,其实之前华仔搞的联合办公空间,也是个不错的选择。

person holding space gray iPhone 7

如何在 iOS 上重命名一个文件

由于疏忽,我在上传 Trello 文件的时候,没有修改文件名。在 Trello 中我通过其系统自带的文件名机制,修改了文件名。

image

今早在路上时,突然需要发简历给面试官,于是我从 Trello 上下载了简历给到面试官,发现一个很尴尬的事情,文件名并没有如 Trello 显示的那样,还是显示我的最基础的简历样式。

于是,我只好尴尬的将没有修改过名字的简历文件发给面试官。

这次的问题解决了,但为了避免下次出同样的问题,我决定记录下,如何修改 iOS 下的文件名。

如何在 iOS 中修改文件名?

你只需要在 iOS系统自带的“文件”应用中,找到你要改名的文件,然后,在文件上长按,唤起菜单,在菜单中你可以看到重命名。

image 1

选择重新命名就可以修改文件名了。

我在路上试图用选择来操作,但是很显然,我并没有在选择的时候找到重新命名这个选项。

最后,除了学习如何修改文件名以外, 我还去把 Trello 中的文件删除,修改文件名重新上传,避免类似尴尬的情况。

优秀程序员的九种素质

转载自:http://macshuo.com/?p=1473

一个优秀的程序员需要什么特质呢?由此我想到之前读过的一篇文章,是 Redis 之父萨尔瓦托 · 桑菲利普(Salvatore Sanfilippo)写的 9 种高能程序员的特质,重新意译一下,推荐给读者:

1、高效完成子任务

从处理编程子任务上,可以看出一个程序员的短板和长处,比如实现一个函数或者一个算法。事实上,擅于使用基本的编程技能来高效完成任务的程序员,并没有人们想象的那么多。有时候,团队里有些不称职的程序员,他们甚至不知道该怎么写一个简单的排序算法。

2、合理使用自己的经验

桑菲利普认为,经验就是一系列解决方案,它们已经被证实可以用于处理一些重复性的任务。经验老道的程序员知道该如何处理各种子任务,这样不但省掉了很多设计工作,而且避免了很多设计错误,而设计错误是简洁性最大的敌人。

3、准确预测工期

花在编码上的时间不仅要看数量,也要看质量。造成注意力不集中的因素既有内部的,也有外部的。集中注意力和避免被打扰,对于提高编程效率来说是至关重要的。

4、设计权衡:用 5% 换取 90%

项目的「非根本性」目标在很大程度上导致了设计的复杂性,或者导致无法达成其他更重要的目标,因为根本性功能和非根本性功能在设计上存在竞争关系。如果意识不到这点,复杂性就会随之而来。对于设计者来说,如果项目要最大化产出,就要把精力集中在重要的事情上,并在合理的时间内完成。

5、简洁性

简洁性是成败之间最为明显的分界点,理解复杂性的产生过程有助于理解什么是简洁性。不愿意做出设计权衡和设计错误的累积是导致复杂性的两个主要因素。我在第一点里讲的 Internal 其实是提高了复杂度导致用户选择错误。

6、拒绝完美主义(为了偏袒设计而放弃生产力)

完美主义可以分为两种:一种是追求程序极致性能的工程文化,另一种是个人特质。不管是哪一种完美主义,它们都会对程序员实现快速交付造成阻碍。完美主义和对外部评判的恐惧会导致设计上的偏袒,程序员根据主观的心理因素和无关紧要的衡量参数做出设计决策,却忽略了健壮性、简洁性和及时交付。

我曾经服务过的一家公司就犯了这种错误。当然,错误不止于此。

7、理解知识理论的价值

在处理复杂任务时,具备一些理论方面的知识会对设计产生重要影响,比如数据结构方面的知识、了解计算能力的局限性和一些重要的算法。虽然程序员没有必要成为无所不知的超级专家,但是至少要知道一些问题的潜在解决方案,避免设计出复杂、缓慢、低内存效能的解决方案。

8、理解机器原理

程序的很多问题都是源于对计算机工作原理的误解,即使是使用高级语言开发的程序也不外乎如此。这种情况可能导致一个项目需要重新设计和实现,因为项目所使用的工具和算法出现了根本性的错误。

7 和 8 说的道理差不多,这也是极客时间会连续推出数学、算法、数据结构、网络协议、软件工程等课程的原因,后面还有架构设计、操作系统、编译原理等等。

9、调试技能

查找和解决 bug 经常会占用程序员大量的时间。查找引起 bug 的问题根源,在合理的步骤内修复 bug,以简单的方式编写包含较少 bug 的代码,对于程序员来说,做到这几点就可以显著提升效率。

能否运用调试技能快速解决问题是衡量一个程序员水平的重要标准。

你具备这些特质嘛?我觉得村上说的没错,程序员同时还需要集中力和耐力。

black and silver macbook pro

用 HomeBrew 安装字体

我因为有一些时候需要做 PPT,需要安装一些特定的字体,但是 macOS Catalina 的 字体册应用总是 Crash ,因此,我决定使用 HomeBrew 来安装字体

配置 Tap

使用 Homebrew 安装字体,就需要配置相应的 Tap (可以理解为 Ubuntu 中的 Source 和 CentOS 中的 Repository。

brew tap homebrew/cask-fonts

安装字体

执行命令,就可以安装相应的字体。

brew cask install font-noto-sans-cjk-sc
brew cask install font-noto-serif-cjk-sc
brew cask install font-jetbrains-mono
brew cask install font-source-han-noto-cjk

如果你想要搜索一个字体怎么办?打开 Github 页面

在其中点击 Find File

yda0r

并在新的界面中输入你想要的字体的英文名,比如 Ubuntu

8d0ko去掉最后的 .rb ,就是你安装时使用的字体名,比如,安装 Ubuntu 字体,只需要执行 brew cask install font-ubuntu