阅读 43

程序员要为了生活而工作,不要为了工作而生活。

(此文转载自乐字节)

如果有一门课一定要加到工程师教育课程中的话,那一定不会涉及编译器或时间复杂性。但这就是我们所在行业的基本要求,因为我们不教他们,这会导致很多不必要的痛苦和折磨。

这篇文章希望对作为一名年轻工程师的你的职业生涯有所帮助。我们的目标是让你快乐,填补你所受教育的空白,了解“真实世界”是如何运作的。我花了大约 10 年的时间,经历了很多磨难才弄明白其中的一些道理。“我知道这不是权威的指导,但希望它会比你的大学就业中心没有告诉你的东西更有价值。”

不要被你选择的软件堆栈限定自己的能力范围

我最近通过 Twitter 问年轻的工程师们想知道关于职业生涯的什么问题。许多人问如何知道要学习哪种编程语言或堆栈。下面我来做下回答。

Java 程序员比.NET 程序员挣钱多吗?

任何自称是 Java 程序员或.NET 程序员的人在开始就已经错了,因为 他们是程序员,而非 Java 程序员, 他们让自己无法被大多数编程工作聘用。

在现实世界中,学习一门新语言需要几周的努力,6 到 12 个月后,没有人会注意到你的整个职业生涯有没有学过这门语言。我在 2010 年 3 月做过后端 Java Web 应用程序开发,但相信我,没人在乎这个。

如果一家 Python 公司正在寻找技术人员来为他们赚一大笔钱,即便我从来没有写过一行 Python 代码,但我也觉得这一事实不会对我不利。

有才能的工程师是很少见的——想要用到这些人更难得多——而且现在这个领域几乎每个方面都是人才的卖方市场。

Matasano 的每个人都使用 Ruby。如果你不用 Ruby,但你是一个好工程师,他们无论如何也都会雇用你。(一名优秀的工程师有这样的能力——跟我重复一遍——增加收入或降低成本的能力。) Fog Creek 的大部分应用都是微软的,即便我甚至不会拼写 ASP.NET,他们仍然会雇用我。

有些公司的人力资源政策不完善,没有专业性就意味着你不会被选中。除非你不想为他们工作,如果你真的想为他们工作,你可以花几个晚上和周末的时间在简历上加上相关的关键词,或者通过控制当前工作中的技术选择来提升你的职业兴趣。

想在.NET 商店学习 Ruby 吗? 用 Ruby 实现一个一次性的项目后,你就是一名专业的 Ruby 程序员了——你编写了 Ruby 代码,并从中赚了钱。

同事和老板通常不是你的朋友

虽然你会花很多时间和同事在一起,甚至你可能最终会和其中一些人成为亲密的朋友,但总的来说,你会在三年后离开他们继续前进,除了保持友好关系外,你不会特意邀请他们来吃饭。他们会以同样的方式对待你。你应该对你遇到的每一个人都表现的友善——这是一件道德上的事情,这会对你的人际关系网有很大帮助——但是不要错误地认为每个人都是你的朋友。

例如,在一次工作面试中,即使你是在和一个和蔼可亲的 28 岁的人交谈,他也会觉得自己比你年长一些。

你不是他的朋友,你是一个工业过程的输入,他试图以最低的价格为公司购买商品。关于魔兽世界的玩笑只是为了建立专业的融洽关系,但他会(完全符合道德)尝试做你的实际朋友都做不到的事情,例如尝试让你少付几千美元的薪水或花费更多的时间在公司上,而你可能会花时间与实际的朋友在一起。

你也会遇到其他同事——友好且合乎道德地——会提出与你的利益背道而驰的建议,从“我应该从你刚刚做的那个项目赢得信誉”(可能没有用太多的措辞表述)到“我们应该这样做以提高我的职业发展目标,而不是你的职业发展目标。”这种情况发生时不要感到惊讶。

你完全高估了竞争对手的平均水平

因为你周围有一群人:许多已经被成功聘用为乐字节高级工程师的人实际上无法实现 FizzBuzz。关键提示:你可能足够优秀,可以在你认为自己不适合的公司工作。他们希望雇用更好的人,但他们仍然会雇用普通职工。

“看到广告,发送简历,参加工作面试,收到薪水 offer,是求职的特殊做法,而不是典型途径。 通常情况下:大多数工作永远不会公开提供,就像大多数有价值的候选人不会公开露面一样 。有关职位的信息在喝啤酒时会快速传播,有时通过电子邮件的方式。

公司的决策者知道他需要一个什么样的人,他告诉他的朋友和生意上的伙伴。其中一个认识某个人——家人、大学室友、在会议上认识的人、前同事等等。他们互相介绍,开了个会,然后就这份工作基本就落实了。然后是简历、人力资源部、正式录用。

对于你真正想要得到的工作来说,这是不太公平的。“成功创业公司的第一名员工”对很多极客来说都有一定的威望,而这些人几乎没有一个是通过向人力资源部门投递求职信而得到的,部分原因是两个人的创业公司还没有足够的能力组织来组成人力资源部门。(注:你可能不想成为创业公司的第一个员工,反而想成为最后一个。)

想在谷歌找到一份工作吗?他们有一个成熟的流程来帮助你,因为谷歌员工看中了你。(对于一个非常喜欢你的谷歌人来说,他们也有多种非正式的方式来缩短这个过程。举个例子:收购你工作的公司。当你手头有几十亿美元时,你就会有很多有趣的选择来解决问题。)

大多数招聘都是私下进行的,原因有很多。

一个是,数以百计的简历会将优秀的候选人淹没在人海中 (尤其是在当前的经济形势下),而这些简历都是来自那些非常不适合这个职位的人。另一个原因是,其他公司在招聘方面做得很糟糕,如果你对候选人没有深入的个人了解,你可能会不小心聘用了一个非 fizzbuzzer。

工程师能挣多少钱?

很没水平的问题。比较靠谱的问法是“工程师通常为什么样的工作机会工作?”,因为薪水是人们用来激励你的众多手段之一。这个问题的答案是,“到处都是 Offer,多数人为 Offer 而活”,这样的答案其实帮助也不大。

一般来说,大公司比初创公司支付更多 (钱、福利等)。高感知价值的工程师比低感知价值的工程师挣得更多。高级工程师比初级工程师挣得多。在高成本地区工作的人比在低成本地区工作的人挣得多。擅长谈判的人比不擅长谈判的人挣得多。

我们的文化训练我们永远不要问薪水。这不是普遍现象。在许多文化中,专业语境是讨论钱的最佳时机。(如果你是一名日本中产阶级男性,你有理由在第二次约会时向你的足球俱乐部成员或寿司师傅透露你的确切薪水。如果你拥有一个公司,你可能会对你的净值谨慎不讲,但你会像程序员经常讨论编译器的方式讨论员工工资而不显尴尬。) 如果我是一个马克思主义学术或阴谋理论家,我可能会认为这个中产阶级美国文化是特别为雇主的利益设计的,对于员工的利益考虑不周。

在讨论任何特定目标雇主的薪资之前,你应该先和在那里工作的人谈谈,问问这个职位的薪资范围。你可以在网上找到这些人。(LinkedIn、Facebook、Twitter 和你的 (非图形数据库) 社交网络都是不错的选择。)

不管怎样。工程师通常会得到一系列福利。在美国,首先要担心的是医疗保险 (传统上,你得到它,你的雇主需要支付大部分或所有的费用) 和你的退休计划,这是“我们将为你的 401k 计划提供最高 X% 的工资”的变体。

其价值很容易计算: 工资的 X%。(这是一笔免费的钱,所以一定要根据雇主的匹配来最大限度地使用你的个人退休账户。把它投入指数基金,然后 40 年都不去想它。)

还有其他的福利,比如“免费的汽水”、“免费的午餐”、“免费的编程书籍”等等。

这些都是社交信号。当我说我要给你买汽水的时候,这说明了我如何管理我的工作场所,我希望谁为我工作,我希望如何对待他们。(上面写着:“我喜欢通过购买 20 美分一罐的苏打水,让这份工作看起来很有趣,从而改变年轻工程师们不成熟的行为。这样做可以为我自己省下数万美元的赔偿金,但是同时也是对他们健康的破坏。”但我喜欢喝汽水。)

阅读社交信号并做出适当的反应,列如有人表示,愿意为员工教育付出钱的人很可能是一个值得工作的伟大公司,但不要放弃巨额赔偿来换取你可能会获得的小的津贴。

为什么要对股权激励不要抱很大的期望?

因为你从根本上高估了你的创业公司成功的可能性并且从根本上高估了如果创业公司成功分配给你的那部分蛋糕。阅读有关 Hacker News 或 Venture Hacks 的股权稀释和清算相关的文章,然后记住,有些人对商务谈判协议的知识比你对编程的了解还要多,想象一下,如果一个程序有几亿用户,你会对它做些什么。

作为应届毕业生,创业对你的职业生涯有好处吗?

高百分比的结果是,你在接下来的几年里非常努力地工作,不光彩地失败,然后失业,之后进入另一家初创公司。

如果你真的想离开学校进入一个创业公司磨炼两年,你也可以在一个大公司工作两年,赚点钱,然后使用你的资金、专业知识接触并找到一家更合适自己的公司。

在创业公司工作,你会遇到很多创业者。他们中的大多数人两年后没有能力雇用你。在大公司工作,你往往会遇到你所在领域的很多人。在两年时间内,他们中的许多人要么能够雇用你,要么他们可以将你介绍给可以雇用你的人。

建议大学生们到创业公司工作吗?

在初创公司工作是一条职业道路,但更重要的是,这是一种生活方式的选择。这类似于在投资银行或学术界工作。这是三种截然不同的生活方式。许多人会因为他们自己的原因,试图向你推销那些符合你利益的生活方式。如果你真的想享受这种生活方式,那就大胆去做吧。如果你只是喜欢其中的一部分,记住,如果你真的想要的话,很多东西都是可以单点的。例如,如果你想从事尖端技术的工作,又想在下午 5 点半看到你的孩子,你可以在许许多多大型企业从事尖端技术的工作。

(当然,如果它能为他们创造价值,他们会投资。他们也会投资大量的 CRUD 应用程序,虽然创业公司也会这样做——但他们只是把 CRUD 应用程序做得比大多数大型公司都好。(《社交网络》的第一个小时讲的是如何让一款粗俗的应用程序看起来性感,第二个小时讲的是一出关于两个异性恋男人离婚的人生戏剧,这简直不可思议。)

你最重要的专业技能是沟通

记住工程师不是被雇佣来创建程序的,那么他们如何来创造商业价值呢?让你获得工作的主要品质是给人一种你会创造价值的感觉。这并不一定与创造价值的能力正相关。

我认识的一些最好的程序员天生就不擅长沟通。人们不愿意和他们一起工作,甚至低估了他们的价值创造能力,因为人们通过对话了解这种能力,而这个人恰恰不喜欢落于这种俗套当中。相反,人们通常认为我是他们所知道的最好的程序员之一,因为 a) 有明显的证据表明我能编程,b) 我的书写和口语非常非常好。

(曾几何时,我认为自己在编程技能上“略低于平均水平”。从那以后,我认识到我对技能分配有一个严重扭曲的问题,编程技能并不是人们真正优化的目标,谦虚也不是我的兴趣所在。如今,如果你问我,我是一个多么优秀的程序员,我会告诉你,我是如何编写程序,帮助数百万儿童学习阅读,或者让公司赚了数百万美元。我在技能曲线上的位置对任何人来说都不重要,所以为什么要关注它呢?)

沟通是一种技能。多练习:你会变好的。一个关键的子技能是能够快速、简明、自信地向一个不是你所在领域的专家、没有先天理由爱你的人解释你如何创造价值。如果你尝试这样做时,总是出现一些技术术语 (“通过优化……上的索引,将第 99 个百分点的查询时间减少了 200 毫秒”),那么删除这些术语,然后再说一次。你应该能够向一个聪明的 8 岁小孩,公司的首席财务官,或者一个不同专业的程序员,在任何适当的抽象层次上解释你所做的事情。

谦虚并不是职业发展的必备特征

很多工程师都有自信问题。许多人也来自于在文化上崇尚谦逊的成长环境。美国企业基本上不重视对个人成就的过分谦虚。在面试、与他人的互动以及生活中,正确的原则应该是“克制、自信的职业精神”。

如果你也参与了和团队一起努力,而且团队努力取得了成功,正确的说法不是“我的一切都归功于我的团队”,除非你的立场是,所有人都能理解你为了谦虚而这样讲。你应该这样说:“我很荣幸能够帮助我的团队完成

所有的商业决策最终都不是通过规则或算法做出的

人就是人。社交礼仪是一项非常重要的技能。人们通常会支持朋友的建议,因为他们是朋友,即使其他的建议实际上可能更好。人们往往会对与他们共进午餐的人怀有好感。(有一本商业书籍叫《永远不要独自吃饭》。这可能值得一读,但人们总是喜欢那些他们认为与自己相似的人,而不是那些他们认为与自己不同的人。(这可以是好的、中性的,也可能是很令人讨厌的。但接受它永远是我们更好优化自己的基础)。

真正的仪容整洁也是至关重要的,因为人们很容易被一些不注意的穿着搞得滑稽可笑,比如根据情况适当地着装、保持职业形象、用自信的语气说话等等。你的西装可以大概和电脑显示器一样贵。你只是偶尔的需要穿它一次,但当你需要它的时候,你会真的、真的、真的很高兴你拥有它。

请相信我的话,如果我在参观市政厅时穿着日常便装,我就会被当成一个倒霉的、笨拙的 20 多岁年轻人来对待;如果我穿西装,我就会被当成一家跨国公司的首席执行官来对待。

实际上,我是一家跨国公司 20 多岁的首席执行官,有点笨手笨脚,但当我希望得到领导般的优待时,我可以选择突出自己想要的一面。

熟悉我工作的人可能会反对我把它描述成一家跨国公司,因为当“跨国公司”在对话中被使用时,大多数人并不是这么想的。抱歉,这是一个简单的会话技巧。如果你认为当人们发现自己被操纵时,他们会很生气。

有些人也非常讨厌商务套装,这并不意味着西装毫无价值。顺便说一下,当你面临移民驱逐时,技术上正确的答案是最好的答案。

归根结底,你的生活幸福将不受你的职业支配

与老年人交谈或信任拥有以下知识的社会科学家:家庭,信仰,爱好等,通常会在实际产生幸福的事情上淹没职业成就和金钱。你的职业生涯很重要,现在看来这可能是你一生中最重要的事情,但是很有可能这不是你永远相信的。为了生活而工作,不要为了工作而生活。

PS:给大家推荐个很不错的1056集Java自学课程、B站:BV14h411U75p

文章分类
代码人生
文章标签