我读了一些关于程序员的对编程感到倦怠的文章,读完后我开始思考为什么我在工作了这么多年之后(从 1981 年开始),还依然对编程充满兴趣。为什么我依然喜欢写代码?
当然,在三年前我写的《是的,56岁的时候我依然要继续编程》的热文中,我已经提到了一部分。但是那次提的是关于程序员的编程方面,而这次是关于如何坚持程序员工作,不仅仅是写代码。想知道怎么让你在每天早晨兴奋的打开你的文本编辑器或者集成开发环境,而不是恐惧工作拖着你的屁股把你带到办公室吗?
回想起那些我曾经经历过的喜爱的和讨厌的工作,它们的区别是什么?我又做了什么使它们之间的差距这么大?
作为开始,我将以时间顺序简述一下我的老板们(注意,除非需要,我极少会放真实名字)。漏掉的是一些我为自己工作的一些经历,随后我就会提到。
-> 国防项目承包公司 -> 我的创业公司 1 号 -> 我的创业公司 2 号 -> 技术服务台软件开发公司 -> 电子邮件公司 -> 苹果公司(乔布斯回归之前) -> 咨询公司 -> 咨询公司 -> 金融服务公司 -> 数码印刷业 -> 医疗行业 -> 3D网络游戏开发 -> 旅游公司 -> 建筑公司建筑公司
值得注意的是,我从未在同一行业工作过两次?咨询公司的项目也是在两个完全不同的领域。
我的两个创业公司可能是唯一的有关联的,都是在做 Mac 软件,但在第一个公司我们充当自己的发行商,在第二个公司我们为别人写软件。为自己的公司做事情,既是幸福的也是苦恼的。当一切都在变好的时候,那感觉很棒、很美妙。但是第一个公司在明显没有足够的资金和微软竞争的情况下失败了,第二个公司在经历了 5 年的 Deltagragh( DeltaGraph 是一款适用于 Mac 操作系统的功能全面的统计工具和图表绘制应用程序。)开发后也是一样,发行商想要进军另一个方向,同时 Mac 应用市场也开始不景气。
在我创立那两家公司的时候,我不仅是主程序员,同时我还是董事长,我必须做所有的业务,从一开始我就要做所有的新闻采访、参加股东会议和为公司的福利烦恼。在这两个公司之后,我决定再也不一个人做所有的事,以后只为别人打工。在那时(大概 21 年前)我只在一家不是我自己开办的公司工作过。
在过去的二十年里,我主要是给别人打工,无论是作为程序员,还是作为某种架构师/程序员,有时我不得不做其他的一些角色,但是我从来不做纯粹的管理工作。所以在这么多年之后为什么我还能始终坚持编程工作呢?
(1)我从不加班,除了偶尔的项目快结项的时候。
当然我在热帖《为什么我从来不无偿加班?你也不应该!》中提到过。一些老板(通常是咨询公司)坚持让你几乎无尽的加班,不在乎你是否已经厌倦。你没有必须要为他们(继续工作下去)。你以破坏自己对编程的热爱为代价去加班,这根本不值得,这会让你不再继续热爱编程。
(2)我试图找到一个兼容我喜欢的工作方式的公司。
问题在于,在一开始的时候,你并不知道这家公司是否满足你认为重要的那些条件,工作的过程、项目的组织方式,甚至人们对其他人的期望。我更愿意在这样的地方工作,人们不会以命令的方式让我去做事情,我可以最大化的利用我的技能作出贡献。每个人都有自己的长处、经验和想法,在一个可以做自己的地方工作是一件非常开心的事情。秘诀就是在开始之前找出它,或者至少在没有陷入困境前找到一个合理的出路继续前进。人生如此短暂,你不能被不合脚的鞋子束缚,因为你不喜欢它,也不能从它那获得利益。
(3)不要总是在同一个行业一直重复的做同样的事情,或者更糟糕的是你从未换过一份工作。
我知道很多人在一个公司待上 25 到 30 年是因为他们害怕离开他们的舒适区。所以你们意识不到其实有更好的工作。我离开一家公司,经常因为我想要新的尝试,当然有时只是公司破产了。新的公司意味着新的机会、新的挑战和新的可学的知识。新的不一定是好的,但固执的坚持旧的事情意味着永远没有变的更好的机会。
(4)有时你需要停下来然后去做些你喜欢的事情。
好几次我所做的事情,完全是因为我感兴趣或者想完全彻底的研究一下。在第二次创业结束后,因为兴趣,我研究建立了一个期货交易系统。我赚不到钱(在那些日子里没有足够的交易)但是学习的过程很有趣。我玩一个在线 FP MMO(Fist-Preson Massive Multiplayer Online 第一人称视角大型多人在线)游戏玩了 10 年,但是对质量非常不满(那个公司没有足够的钱去修复问题),因为当时我为他们工作了两年多。那是我做过最难的工作,几乎没有报酬。但是那是一份非常有挑战性且复杂的工作,我们需要修复跨双平台的庞大的 3D 代码库和成吨的 OpenGL 问题,我当时就像在一个糖果屋中的孩子。遗憾的是最终因为收入问题,我不得不辞职。
(5)除非你拥有这家公司,或者手中有大量的股票或者期权,不然不要害怕离开。
你欠老板的只有他支付了工资的工作(每周 40 小时!);你不是一个奴隶,除了忠诚的做好本职工作,你什么都不亏欠。找到一个好的公司,然后待一段时间,如果感到这里不好、工作没有挑战性、认为这里很糟糕、这里的人不友好、管理层无能,或者其他任何(不好的),那么不要害怕去找其他的工作。我知道这并不容易(时间很珍贵),但是请开拓你的视野,不要害怕跟招聘人员或者朋友或者网络交流,告诉他们你现在开不开心。没准很酷的事情就会发生。
(6)通常你并不会创立一家属于自己的公司,但那真是一个从新角度了解事情的好方式,那时你不得不每天担心你的生意。你会了解到老板看待问题的角度。加上你会了解到很多平时错过的新事物(如销售和利润)。我花了 9 年时间运作两家公司,我喜欢那的大多部分(除了结局),我和了不起的人一起工作,做很实用的东西!我没得到任何额外的可观收入,但是那些经验是无论如何也换不来的。你可以为其他人的创业公司工作,通常你会做很多不同的事情,但请牢记它并不值得你拼死去做。
7. 不要对新技术和行业的变化产生恐惧。
你必须要保持每天至少学习一些新东西(我喜欢每天被铺天盖地的新技术追着跑)。新的思想、新的编程语言、新的框架、新的平台;你永远不会知道新的技术会给你带来什么新的变化。当然新的东西不一定是更好的,有时新的技术出现的太快(很庆幸我不是一个 Javascript 程序员),但是新的技术带来了新的机会。如果你不愿意学习新的东西,最终你不仅会讨厌你的工作,甚至连一份工作都都没有了。
希望上述罗列的对你有帮助,至少这些东西帮助我规划了一个很长但没有结束的职业生涯。我必须补充说,这个博客写了近十年了,我去找大师们聊天(偶尔从别人那听说),去发现那些明显值得我去阅读的,我当然会记下这些。
记住,你的职业生涯完全由你自己决定。职业生涯规划是一件终身的事情,你会成为你想要的那样。只要你还有选择,绝不要去自己不喜欢的公司工作,开拓自己的眼界。这样在某一天退休后,你会说:“我(的职业生涯)过的非常愉快!”。