25

工作,五年

 4 years ago
source link: https://www.tuicool.com/articles/EBjUJbI
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2014 年 7 月 7 日,我正式加入了 ThoughtWorks;如今是 2019 年,我工作 5 年了。作为一个充满生活仪式感的人,我一定要写篇文章记录一下。

除此,从现在到退休,至少还有 6 个 5 年,所以我想好好规划下一个五年。在进一步规划之前,我得去总结一下过去五年做的一些事情。

总结的方式有多种多样的,而我只想写个流水账。五年里:

  • title:毕业生 -> 高级咨询师
  • 我的博客上有 744 篇文章(技术为主)
  • 出版了三本书,合译了二本书,审阅了近 10 本书
  • 房子没有——买不起,车子没有——也没有驾照
  • 薪资大概翻了三倍——早年西安二线工资低
  • 工作地点:西安 -> 深圳 -> 上海
  • 职业病:尺神经卡压,颈椎还没有不适
  • 社交媒体:知乎 ~56K,微信 ~29K,微博 ~7k,GitHub ~14.5k 粉、~45k 个 star
  • 老婆没有,未婚妻没有,女朋友 @花仲马
  • 其它:电脑 MBP 2013 一台,键盘大概四五个,耳机大概四五个——不能当饭吃

没了。

一份工作

过去的五年里,我一直在 ThoughtWorks 工作,一家大家所『不喜欢』的乙方公司,高级软件定制、咨询公司。从某种意义上来说,一部分业务就是那种人人『喊打』的外包公司。我是那种觉得麻烦,就懒得换的那种。

公司的选择是一种平衡艺术。对于喜欢技术的人来说,这里是一个不错的施展平台——前提是你有足够的技术和软技能,以推动相关的技术在项目上实施。对于喜欢钱和权的人来说,这里一点都不好,你得不到你想要的这些东西。在这里,你也获取不到足够的技术深度。(PS:坏话就说到这了……,要不会被谈话)

喜欢一家公司是有原因的,不喜欢一家公司也是有原因的。时间是我考虑的第一因素, 工作与生活平衡 。作为一个程序员,我们已经过得比大多数的人好。而作为一个程序员,我们也站不到食物链的顶端。

如果你没有自己的人生目标、个人追求, 请选择大公司。它们有你所需要的层级,一步步向上前进。小公司,也是相当不错的,如果你积极主动,渴望去施展自己的才华。像 ThoughtWorks 这样的公司,没有多少层级,你只能靠才华了。

没有福报

我还没换工作的原因,还是上辈子造孽,所以没有 996 的福报啊。

文化匹配

扁平的外企,可以让你自由地高谈阔论。你可以当面调侃你们的 CEO,而无须担心什么——反正我司是这样的。

乙方挑战

乙方,并不是一个轻松的活。你随时准备好应对:

  • 客户的 challenge
  • 客户想了解的技术新概念
  • 客户需要赋能
  • 客户看你写代码
  • ……

每天你都会有新的挑战。而且和咨询项目快半步不同的是,一些现场办公的项目要快一步。社区上刚发生的新闻,下一秒客户就会询问你。

职业

事实上,在过去的几年里, 我没有一个明确的职业规划,或者说是职业目标——是程序员没错,但是是哪种程序员?程序员的类型有这么多种:面向业务沟通的程序员,面向管理的程序员,面向技术专家的程序员,面向影响行业的程序员等……。

上班写写代码,回家写写代码,晚上逗逗花仲马,周末写写文章。就这么的简单,五年过去了,我的代码还没有编成。每天都可以过得很欢乐,偶尔还是会因为工作而焦虑。而这种焦虑都是技术问题,又或者是进度问题。在早先技术问题,是我最焦虑的部分,所以我练习编码。而今,困扰我的是进度问题,不加人解决不了问题,加人更解决不了问题。如果不是对方太菜,那么一定是我的 knowledge transfer 的水平不行。

生涯

Homework 的时候,我使用的是 Ruby,这门语言在我职业生涯的早期用到过,后来就很少再接触了。在那之前,我的主要语言可能就是 C、汇编和 JavaScript,还有博客上用的 Python。后来,工作了,我使用 Java,用了点 Scala,写了点 Ruby。而现在我用的几乎全是 TypeScript。

五年里,我在 Offshore(海外交付)待了两年多(加上实习),在 Local(国内交付)待了三年多。各自都只在一个 account 上,也算是蛮不幸 + 幸运的。不幸的是尝试不到新的组织架构,幸运的是我有时间去玩自己喜欢的技术——越是长的项目,越有时间去写书。

刚开始工作,项目上用的是 Java + Backbone + ElasticSearch + Spring,一个大型、古老的房地产搜索网站,时间都花费在学习相关的技术上了。

工作第二年,开始进行该死的单体应用改造成微服务,10 年历史的代码库,藏有大量的业务逻辑没有人知道——改 bug 时,经常有惊喜。干着 Tech Lead 的活,却不想承担 Tech Lead 的职责。业余时间,开始一点点地写自己的第一本书。

到了第三年,我成了一个移动开发,写写 Hybird 应用,以及对应的 Android Cordova 插件 + iOS Cordova 插件。虽说不上是无聊的项目,但是时间一长,也就有了足够的时间,去写自己的第二本书。

第四年之际,由于之前的经验,我有机会去尝试在项目上使用 Java、Kotlin 来编写 Android 代码。除此,几乎是使用 TypeScript 工作,然后还搞了几把微前端和 Serverless 相关的知识。

在第五年里,我开始做开发框架和与工具,并研究该领域的一些最新实践,诸如于 Android 的插件化、组件化,Clean Architecture,无代码编程。在这期间,我还写了第三本书。

从业务系统到技术框架的设计,我开始能理解 效能对于大型组织的重要性 ,明白很多事情的方方面面——反正,过去我总会吐槽组织决策的一些不合理。尽管能理解,但是未来我会继续吐槽。

没有技术深度?

看上去是不是很糟糕,尝试了不同的技术栈,不同类型的项目,却没有到技术的深度?

工作上我尝试了不同的技术栈,但是它们都是大前端相关的项目。与此同时在业余的时候,我的方向仍然是以前端为主。而且从某种意义上来说,在早期,我业余的编程时间,比我工作时间还要长。所以,在技术的深度上来说,并不是问题。至于那些 996 的公司,我觉得吧,要做到这一点太难了。

与此同时,在过去的几年里,我看着不同的人在转岗,从前端转向后端,从后端转向了前端,从后端转向了 DevOps……。因为,人们并不知道他们喜欢的是什么,只是一开始觉得前端能写,后端也是能写的,所以就去做这样一件事。一段时间之后, 却发现了某一个领域才更适合自己。这条理论,对于大部分人来说,也是适用的——你现在选的东西,并不一定是适合你的。不过,可是,要是你在工作上难以尝试别的机会,而且 996 的话,那么你还是选择工作上的技术栈的深度吧。

而所谓的技术深度,从来都不是依靠工作的机会就能得到的,还得靠自己在平时一点一滴地积累,才能达到所需要的深度。所以,面试的时候,总会有面试官问你:看过 blabla 的源码没?本意并不是问你如何造飞机,而是你在业余时间有没有学。对技术感兴趣的人,都或多或少地会去看看框架的源码,尝试去造一个类似的轮子。

没有擅长的业务领域?

确实,在乙方公司有这样的问题,部分的项目接触不到核心的业务,部分的项目是短周期的项目。这一点,对于高薪来说,有一些不利的——懂某一方面业务的人,在进入这一业务领域时,会比其它类型的程序员值钱得多。笑~

与此同时,我看到了一些不一样的亮点:可以接触不同类型的业务、快速的业务转换能力。

所以,人生没有一件事是容易的。

职场晋升?

这是什么东西?

在 ThoughtWorks,对于技术路线来说,不会有太多的选择。首先,你会成为一个 Tech Lead,但是它只是一个角色,不是一个岗位。因为资深,所以需要带领更多的人资深。我在 ThoughtWorks,也在几个项目上作为 Tech Lead。对于一个 Tech Lead 来说,他的知识域就变成了:

  • 你要有 Leadership
  • 你要擅长于技术
  • 你要懂得架构

只懂点编程,很难混得好。对于不想走上管理,但是又需要一定工资的程序员来说,Tech Lead 也是一个还行的选择。若是想转向管理吧,那得等运气,上面的人。

除了 Title 之外,公司的职级体系,也不是那么容易往上升的。做更多的事情,才你的职级才会往上升。不得不说的是,有的公司职级和 Title 是绑定的。而我一个小码农,还没有内部的 title——除了『网红』,这个骂人的 title 之外。

技术通道

我选的一直是技术路线,而技术路线最难的部分是 走出特色 。别人有的你要有,你也要拥有别人所没有的——这就是后来者,所需要的挑战。

寻找一个合适的新领域、实践、架构,你才能走出适合自己的技术路线。

业余

编程、创造是我的乐趣,迷茫的时候,找个有意思的东西写写。一天天也就过去了,所以一天天也就过去了,除了 GitHub 上的 repo,好像什么也没有留下。

side-project

我想过靠技术写点赚钱的项目,诸如于编程学习应用 Growth、物联网技术社区玩点什么( https://www.wandianshenme.com/ ), 最后还是靠着微信公众号上的广告赚点外快。Growth 有近 10 万的用户,却没有真正带来收入。我的博客有 100 万的访问量,也没有带来收入。玩点什么,每天有近 200 的 PV,也没有带来收入。想来,靠技术 + 内容赚钱,对于我来说是无缘的。但是,它们带来了一些流量,还有成就感。对于编程这种爱好来说,技术带来的成就感是非常鼓舞人的。

最后的最后的最后,工资还是我收入的大头。哪天不想工作了,想去旅游会儿,那可怎么办。

由于我写了大量的 side project,便混上了国际 GitHub Top 100,国内 Top 10 。可惜的是,至今也没有创造出特别有影响的项目。Star 多的项目都是一些电子书。经常缝缝补补的那些开源工具、框架项目,没有几个发展得特别好。有一天, 我写一个简单的 checklist 工具,就获得了两百的 star。

于是,我放弃了面向社区编程的挣扎,开始面向自己编程。当我需要一个什么工具,我就写一个什么工具。

保持学习

这个年代,不是一个适合于舒服工作的年代。只要是那些重复的机械性工作,诸如于 Copy/Paste,都会被 AI 所淘汰,如之前的收费站失业的故事。这一波新的革命,将会淘汰部分的工作,而工作的岗位正在不断减少。

所以,不管你是前端程序员, 还是后端程序员,你都可能会被技术进一步淘汰。前端,前有 Sketch to AI,后有无代码编程;后端,前有 FAAS,后有 Serverless;哪怕是 AI 程序员,也都有自动调参数程序。

在这方面,我尝试了越来越多的新技术 Serverless,微前端等,并且都属于早期实践者。这些先发的技术探索,为我在成长上带来大量的优势,我可以探索出什么是下一步的新技术、技术实践。

构建知识体系

构建知识体系,可能是我这几年里,最成功的一个点了。

  • 有三本不同领域的书出版了,分别是:《前端架构:从入门到微前端》、《全栈应用开发:精益实践》、《自己动手设计物联网》简体和繁体版。
  • 和大学同学合译了《物联网实战指南》《Arduino 编程:实现梦想的工具和技术》
  • 技术审阅了《Expert Angular》、《Building Large-Scale Web Applications with Angular》等九本书
  • 还有《《微前端的那些事儿》《Serverless 架构应用开发指南》等一系列的开源免费电子书

这些内容相关的输出,都是以构建知识体系为目的的——至少开源的电子书是这个目的,因为不赚钱,哈。

赚钱

技术变现,靠输出是一个不错的方式——写书可不是,笑 ~ 。

输出影响力

我还未工作的时候,就习惯写一些东西来记录技术相关的内容。一来,我可能是记忆力不好;二来,可能是因为我玩东西的速度太快,导致忘记东西的速度太快了。后来,我明白了对外输出就是输出影响力,它除了可以带来一定的收入,还可以带来大量的人脉——因为这么做的人太少了;而喜欢输出的人,还是寻找相似的人。即马太效应,随着输出越来越多,影响力就越来越大。也因此,影响力可以帮助你找到下一份工作。

这样的方式有:

  • 文章、博客、书籍
  • 分享、演讲等
  • 开源项目

所以,到了今天我在微信公众号上,有近 3 万的粉(虽然与同类相比,并不多),知乎上有 56k 的粉。它们可以为我带来一定的广告收入,又或者是一些电子产品。

减少支出

作为一个程序员,我们往往在电子产品上投入大量的钱,其中最贵的就是电脑了。工作 5 年,我一直用的是公司的电脑。然后,再就是购买公司淘汰下来的电脑,然后卖了。一则是,好的电脑太贵了;二则是,没有房子来放下台式机。台式机,大搬家又不方便,我又不懂如何组装——购买各类主板、显卡等。不过,我一直想将 GNU/Linux 作为我的日常系统,那可能要等到买了房子之后了。

除了手机,我的主要投入在 Sony 的耳机上,差不多近万——好在多数都是因为有点广告收,然后买的。好在,我们还可以把旧的电子产品卖了,至少还不算太亏。

生活

艺术气息

嗯,今年我已经开始探索一些新的东西。它除了转换我工作的状态之外,相信还会带来一些新的灵感。

是的,我已经画了 180+ 张画了。

平衡

当你有了女朋友、男朋友,和家人住在一起,你就不会有那么多的时间。从过去的几年里,我与花仲马一起愉快地度周末的时间越来越多——过去,周末我仍然是自顾自地写代码,可能是因为:当时她还在上学的缘故。

结论?

那么下一个五年呢?


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK