写点什么

做了三十年程序员的我是如何避免出现厌倦的

  • 2016-05-06
  • 本文字数:2803 字

    阅读完需:约 9 分钟

读了大量关于编程倦怠的帖子后,我开始思考自己从事这个行业这么长时间(从 1981 年开始)是如何一直保持兴趣的。我为什么还在写代码呢?

当然,我在我三年前一篇很火的帖子“我 56 岁还是想干这一行”里有进行一些介绍。但是是从程序员如何编程方面来说的,这一篇是说我为什么能坚持做一个程序员,这里涉及的不仅仅是编写代码。到底是什么让你能够一大早就跑到办公室坐下,并且兴奋地打开你的文本编辑器或 IDE?

回想我喜爱的工作、我痛恨的工作以及哪些很舒服的工作,它们有什么区别呢?到目前为止我都做了什么?

正如一开始,这里我给出了按时间顺序排列的工作单位列表(注意我很少在这里使用真实名称,除非是与我们谈论的内容相关),我把时间用来做一些自己的事情,一些我会在后面提到。

  • 国防承包商
  • 我自己的第一家公司
  • 我自己的第二家公司
  • Help Desk Software 公司
  • 电子邮件公司
  • 苹果公司(乔布斯回归前)
  • 咨询公司
  • 咨询公司
  • 金融服务
  • 数码印刷
  • 卫生保健
  • 3D 在线游戏
  • 旅行
  • 施工

注意到奇怪的地方了吗,比如我好像从来没有在同一行业工作过两次?所有公司的项目都是在完全不同的领域。

我的两个创业公司可能是那时经历的唯一延续,它们都和 Mac 软件有关,不过第一个公司我们自己充当发行商,第二个我们为他们打工写代码。做一些真正属于你自己的工作是痛并快乐着的,当事情进展得很顺利的时候一切都是快乐而美好的,而我们确实没有足够的资金与微软竞争的时候,这种快乐就结束了。第二个公司和 Deltagraph 有关的工作,由于 Mac 市场已经干涸了,出版商想要转移到其它方向发展。

现在,创办这两个公司的我不仅仅是主程序员,而且要作为一名管理者去处理事务性工作。在第一个公司里我要接受媒体采访,参加股东大会并且担心公司利益。再那两个公司的经历之后我不再想尝试这样的事情了,只想为他人打工。那是我唯一没有跳槽的一段时间(大概在 21 年前)。

在过去的二十年里,我主要是为他人工作,无论是作为一名程序员或一名架构师,有时我不得不扮演其他的角色,但从来没有作为一名纯粹的管理者。因此,在经历所有这些之后,为什么我还能受得了?

(1)我不加班,除了偶尔工程项目面临结束的时候。当然, 在我很热门的帖子“为什么你和我都不应该无偿加班”里我有提到这一点。有一些雇主(尤其是咨询公司)它们几乎是让你无限制的加班,即使你干到身体不支他们也不在乎。但是,你不必为他们工作。用这种让你再也不想做这件事的方式毁掉对编程的爱实在是不值得。

(2)我试图找到一个具备我喜欢的工作方式的地方。问题是,在开始的时候你并不知道这个工作方式和内容是否和你认为重要的事情相符合,工作的过程、项目如何组织、甚至是这份工作对每个人的期望。我希望在一个没有人规定我做什么的地方工作,在那里我可以用我所有的能力,最大限度贡献我的价值。每个人都有长处、经验以及想法,能找到一份工作去做你自己是一件无比快乐的事。诀窍是在去那工作之前就做好判断,或者至少找到一个不会让你陷入其中的方式继续工作。人生苦短,它就像一双不合脚的鞋,你不会喜欢它,你也不会得到很大的好处。

(3)不要以为你总是需要在相同行业一遍又一遍地做同样的事情,甚至更糟的是你永远不会离开你的第一份工作,只能坚持。我知道,因为那些在同一家公司一直工作了 25 年或 30 年的人他们害怕离开自己的安乐窝。你总是这么墨守成规,但你不知道其实有很多更好的地方可以工作。我不经常换工作,因为有时候想学新的东西只要换一种业务就行了!不过,新的地方意味着新的机遇、新的挑战以及新鲜的要学习的知识。新的并不意味着更好,但同样的事情永远坚持肯定也不会变得更好。

(4)有时你必须停止因为你有其它的事情想做。当我对一些事情特别感兴趣特别激进的时候我会花一段时间去做一些事情。我的第二个创业公司倒闭之后我开始研究并建立期货交易系统,只是因为它很有趣。我没用钱来实战操作(因为那时没有足够的钱来交易),但是在学习中获得了很大乐趣。我玩一个在线 FP MMO 玩了 10 年,但总是对它的质量很失望(该公司一直没有足够的钱做更多的开发以及修复它),因为它们是本地的公司,于是我为他们工作了超过 2 年。这是我做过最难的工作,并且几乎没得到什么报酬。但它是如此具有挑战性且复杂的工作,我需要在两个平台和 OpenGL 上的一个巨大的 3D 代码库上开展工作,有超大量的问题要修复,而我就像一个在糖果店里的孩子。可悲的是我不得不退出,因为我需要真正的收入!

(5)除非你拥有这家公司或有这家公司的大量期权或股票,否则不需要害怕离开。你偿还雇主为你支付的薪水的唯一方式,就是将自己的工作做到最好(每周 40 小时!);你不是一个奴隶,在承诺做好工作之外,你在忠诚度方面没有任何亏欠。找到一个好地方,并待一段时间,但如果它不是很好,或不具备挑战,或那里的人很无聊,或管理很呆板,不要担心任何事情,你还可以找别的工作。我知道这并不总是很容易(尤其是 2000 年不景气的时候),即使你现在很开心,但还是可以看看外面的情况,永远不要害怕和招聘人员、好友或网络多进行交流。你永远不知道后面伴随而来的事情会有多酷。

(6)虽然你不能总是创业开公司,但这的确是一个很好的选择,可以让你看到要担心的业务是什么样子;对于雇主所要考虑的东西,往往你会得到一个新的视角。另外,你还得到很多新的东西(如销售和利润),否则你可能错过了!我花了 9 年的时间经营我的两家公司,我在大多数时间里享受了很多(但不是结束的部分),我可以和很优秀的人一起工作,可以写人们实际使用的东西。我从来没有太多的薪水,但它是一段不能简单换成其他任何东西的难得经历。你总是可以为别人的初创企业工作,经常做很多不同的事情,但要记住这可能并不值得你自己一直工作到死。

(7)不要害怕新技术或者行业的变化。你必须每一天都保持进步,至少学到一些东西。新理念、新的语言、新的框架、新的平台;你永远不知道什么新的事物可能会让你变得更好。当然,新的事物并不总是更好,有时新的事物来的太快(谢天谢地我不是一个 JavaScript 程序员),但新的事物总能提供机会。如果你不学习任何新的东西,最终你不仅会讨厌你的工作,你甚至可能会得不到工作机会!

希望这个单子上列举的东西对你有用,至少这些东西帮助了很长的时间,让我没有提前结束职业生涯。我必须补充一点,写博客已经将近十年,一直感觉很棒,我可以跟很多人交流(偶尔可以从他们那里听取建议),那些人从博客中找到了一些值得读的内容,同时在我将这些话写下来的时候,我当然也得到了很多。

记住,你的职业生涯的一切都取决于你。想让它保持一段长的寿命,它就能够实现。如果你不想在一个糟糕的地方工作,就请一直睁大你的眼睛。最后,你在有一天退休的时候,会说:“我有一个精彩的人生”。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-06 17:092709
用户头像

发布了 268 篇内容, 共 123.3 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

2020年史诗级‘面试宝典’横空而出,金九银十就靠“它”涨薪了

学习 程序员 面试 架构师

Spring 5 中文解析核心篇-集成测试之TestContext(下)

青年IT男

单元测试 Spring5

MySQL中my.cnf的配置说明

Matrix Chan

运维 MySQ MySQL 运维 数据库运维

Apache Pulsar 社区周报|08-22 ~ 09-04

Apache Pulsar

开源 云原生 Apache Pulsar 消息系统 消息中间件

大厂面试爱问的「调度算法」,20 张图一举拿下

Java架构师迁哥

你不可不知道的Design Thinking

长沙造纸农

设计 思维方式 设计思维 设计实践 设计师

如何基于 Flink 生成在线机器学习的样本?

Apache Flink

flink

第13周总结+作业

林毋梦

随笔文,关于”中台“ 的一些“小偏论”

松子(李博源)

大数据 数据中台 中台 数据平台

Elasticsearch之文档操作

北漂码农有话说

Redis-技术专题-Redis知识体系

洛神灬殇

话题讨论 | 程序员们来说一说,你们从编程开始到现在共使用过多少种语言?

InfoQ写作社区官方

写作平台 话题讨论 语言

Mac搭建本地koa2项目

靖仙

koa2 本地环境搭建

作为一个架构师,我是不是应该有很多职责?

架构师修行之路

程序员 架构师

金九银十:搞定这两个GitHub标星50K开源项目,拿个30k轻松吧?

编程 程序员 面试 算法 架构师

面经手册 · 第10篇《扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法》

小傅哥

Java 数据结构 算法 归并排序 洗牌算法

前端 10 问之 TypeScript (第一篇)

局外人

typescript 大前端

中国移动张浩:AMQP on Pulsar 的设计与应用一览

Apache Pulsar

Apache 云原生 Apache Pulsar 消息中间件 AMQP

Hadoop 客户端节点

yuanhang

hadoop3

5G加速商用,云通信如何推动企业营销数智化

阿里云Edge Plus

CDN百科11 | 如何用CDN加速OSS源站资源

阿里云Edge Plus

Git 中submodule的使用,终于有人说明白了

Java架构师迁哥

甲方日常 12

句子

工作 随笔杂谈 日常

Nodejs使用es module开发CLI

zayfen

nodejs Module ES cli esm

记一次前端vue相关面试题目和简答案

靖仙

面试 Vue MVVM

机器学习及信息与认知的逻辑

superman

学习 认知提升 个人提升

Flink SQL 1.11 新功能与最佳实践

Apache Flink

flink

Hadoop3 环境搭建

yuanhang

详解增强算术赋值:“-=”操作是怎么实现的?

Python猫

Python 编程

MySQL8.0大表秒加字段,是真的吗?

Simon

MySQL

华为HMS:风雨突然,仍求自我

脑极体

做了三十年程序员的我是如何避免出现厌倦的_语言 & 开发_张天雷_InfoQ精选文章