QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

  • 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:092748
用户头像

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

关注

评论

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

看山聊Java:开始使用 Java8 中的时间类

看山

Java java8 DATE类型 10月月更

【LeetCode】窥探迭代器Java题解

Albert

算法 LeetCode 10月月更

【Flutter 专题】39 图解 iOS 打包 IPA 文件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

【LeetCode】密钥格式化Java题解

Albert

算法 LeetCode 10月月更

如何画好架构图

十二万伏特皮卡丘

读书笔记:彼得原理

程序员架构进阶

自我提升 管理者 彼得原理 10月月更

Ember Data 之模型定义

devpoint

model ember.js 10月月更

5分钟搞懂URI、URL和URN

俞凡

网络 10月月更

架构实战营 - 模块 9 - 设计电商秒杀系统

雪中亮

架构实战营 #架构实战营

架构实战营模块九作业

老猎人

架构实战营

linux时间格式化命令

入门小站

Linux

「绝密档案」“爆料”完整秒杀架构的设计到技术关键点的“八卦资料”

洛神灬殇

秒杀系统 秒杀架构 秒杀架构设计 web技术分析 10月月更

团队管理之如何成为合格的TeamLeader

小诚信驿站

团队管理 管理 引航计划 内容合集

4. Python 函数式编程之 functools 模块初体验

梦想橡皮擦

10月月更

SpringMVC源码分析-HandlerAdapter(7)-ServletInvocableHandlerMethod组件分析

Brave

源码 springmvc 10月月更

007云原生之Service Mesh(中心化Broker)

穿过生命散发芬芳

云原生 10月月更

【初恋系列】那年的试卷我们再肝一遍(试卷存储详细设计)

人工智能~~~

存储 详细设计 那年的试卷我们再肝一遍 试题

项目开发过程中,成员提离职,怎么办?

石云升

项目管理 管理 引航计划 内容合集 10月月更

在线摇骰子/色子工具

入门小站

工具

Kotlin中逻辑运算符操作分析

maijun

and kotlin逻辑运算符 &&

【Flutter 专题】38 图解 Android 打包 APK 文件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

15个开发者最常犯的错误,你中招了吗?

俞凡

认知 10月月更

Ember Data 之记录查询

devpoint

store ember.js 10月月更

MySQL性能分析和索引优化

程序员阿杜

MySQL

怎么给程序员做职业规划?

石云升

团队管理 管理 引航计划 内容合集 10月月更

Redis 面试那些事(30问与答)

Seven七哥

redis 面试 后端

🍃【SpringBoot技术专题】「开发实战系列」动态化Quartz任务调度机制+实时推送任务数据到前端

洛神灬殇

springboot quartz DeferredResult 任务调度 10月月更

回忆录:「技术主管」练成记

蔡建斌

管理 引航计划 内容合集

一种基于Kotlin DSL的静态代码分析AST规则扩展实现

maijun

Java dsl 静态代码分析 结构化规则 规则扩展

golang--进程,线程,协程调度

en

Go 语言

容器 & 服务:Helm Charts(三)K8s集群信息

程序员架构进阶

架构 Kubernetes 容器 Helm Charts 10月月更

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