读后感之:求职 ¶
摘录笔记 ¶
从事一份自己喜欢的工作要比从事自己不喜欢的工作给你带来更大的快乐。然而,任何你认为自己喜欢的工作,最终都会变成你不喜欢的工作,有时甚至变成你厌恶的工作。这是必然结果。在确定自己是喜欢还是讨厌一份工作之前,你必须先得到一份工作。
努力获取实习机会 ¶
没有经验很难找到工作,没有工作就很难获得经验。
实习的机会可不是人人都有,所以如果你有机会赢得实习机会,尤其是在你刚入行的时候,我强烈建议你要抓住这个机会,即使薪水不是很高,甚至几乎无偿。在职业生涯的初期,以微薄的工资工作一段时间所付出的牺牲,从长远来看一定会有巨大的回报。
有些实习工作就跟真正的工作一模一样,那里的人们期望你成为软件开发团队中的一员,并且和团队中的任何其他成员一样工作。做这种类型的实习工作,通常会指派一位经验丰富的开发者作为你的导师,指导你、帮助你掌握做事的诀窍。
有些实习工作其实就是一场面对面的竞赛,公司雇用了好几个实习生,他们将为了某个职位而展开竞争。做这种类型的实习工作,一般所有的实习生都被安排在同一个团队中一起做一个“实习生项目”,这是一种双重测试,目的是观察每个实习生在这种环境下的适应性。
还有一种实习工作,基本上你就是办公室里的一个“跑腿的”,你只会被安排去做一些端茶倒水的琐碎工作。
当你考虑实习工作机会的时候,你必须先考虑清楚什么才是自己想要的。报酬是无关紧要的,因为如果将实习工作与报酬关联起来,那就太短视了。如果一个亿万富翁愿意招我为他做实习,我会公开表示:我将乐意接受没有任何报酬的实习工作,我愿意露宿在他家的草坪上,只是为了学习。
自己找个实习的机会:
- 弄清楚有关实习和雇用法律条文,去找一家没有实习计划的公司,向他们展示提供实习岗位对公司的好处,以及设立一个实习项目有多容易,以及我愿意成为他们公司的第一位实习生。
- 列出一份公司清单,找出本地公司里有哪些是我想为其工作的,或者哪些公司能够为我提供一些良好的经验与学习机会,清晰化哪些公司我可以获得最宝贵的经验,哪些我可以为它们做出最大的贡献。
- 拿着这份清单,试着找出在哪些公司里有我认识的人,或者我认识的人中有谁认识这些公司的人。
- 选择最有希望的公司并潜心研究它们,比如,解该公司的历史,生产的产品,谁曾经为它们工作过,它们有哪些工作岗位,以及这些岗位的工作内容是什么。在社交媒体上查到在这些公司里工作的人的资料,试着联系他们中的一些人。
- 开始直接联络这些公司,当然最好是通过我认识的人或者我请喝过咖啡的那个人,进行自我推销,重点是展示我会给他们带来的价值和我愿意工作的态度。
参加实习生面试需要注意的几个要点:
- 我强烈渴望尽可能多地学习知识和有所贡献。
- 我是你一生中遇到的最努力的工作人员。
- 我不需要被管理,给我安排到一个项目里,你可以看到我在自动自发地工作。
注意,不要试图炫耀你的技能或者经验,也不要试图用你的所学来打动面试官,专注展示上述这些特质,以及你的基本工作能力,你会给面试官留下更好的印象。
在取得实习机会后,如何成为优秀的实习生:
- 作为一名实习生,你的任务很简单:竭尽所能节省你老板的时间。你在这里就是为了让其他人的工作更容易,而不是相反。对你而言这可能不是理想的学习环境,但这是你要创造价值的最佳方式。
- 这就意味着,你必须做到自我指导,自己发掘自己该做的事情,并在最低限度的监督和反馈下完成高质量的工作。
实习的意义是获得工作岗位,而不是为了获得经验、学习技能。
如何从实习人员转变为正式员工:
- 如果你在做实习生工作期间为你的雇主创造出尽可能多的价值,那么在实习结束后,你就不用做任何事情了,守株待兔就好。
- 如果出于某种原因,他们没有来敲你的门,你可以发一封礼貌的电子邮件询问一下。不过,如果你已经到了要发这封电子邮件,那说明你的实习生工作可能做得不太好。
没有经验要如何找到工作 ¶
下面的内容并不是关于如何求职的,而是作为一名有抱负的软件开发者,在自己缺乏经验甚至没有任何工作经验的情况下,如何获得一份工作。
站在公司的角度,在招聘软件开发者时面临的最大风险,就是雇用一个不知道如何编写程序代码,或者是不擅长编写程序代码的人。
面试官的主要工作就是戳穿谎言,识别候选人是不是真的知道如何编写代码。在光鲜的简历背后,识别那些伪专家级开发者,那些号称15年以上的专家却无法写代码来解决实际问题。
面试官其实并不希望看到候选人在面试中失败,从内心深处他们希望候选人能通过面试。
任何一个你想为之工作的公司都会竭尽所能对那些不知道如何编写代码的开发者敬而远之。这就是为什么很多公司依然坚持“在白板上写代码”的面试方式,尽管有无数软件开发者都在抱怨这种面试方式。(对那些夸夸其谈的人来说这确实是一道难以逾越的关卡。)
在AI发展的当下,依靠搜索引擎的程序员必定会被AI所代替,现在AI所能提供的参考代码已经是仰视般的存在了。目前仍然在校的软件工程专业的同学是需要认真思考今后“竞争力”的问题了。
所以,如果你没有经验,你获得软件开发者工作岗位的主要策略就是去证明,即使你没有实际工作经验,你也是一个有经验的程序员,你能写代码,而且绝不信口雌黄,特别是提供一些外部证据能够证明你知道如何写代码。这样才有可能让自己站在机遇的大门口,才能做到尽可能地减少雇主对风险的担忧,即不会雇用一个不知道如何编写代码的伪程序员。
每一位软件开发者都应该开设自己的博客。不管你是身经百战还是初出茅庐,你都应该分享你正在学习的内容,在软件开发领域选择一个专业方向然后有所著述。除博客之外,其他所有有助于让你的名字能被搜索到的社交媒体,都对你求职有益。Twitter账户、Facebook主页,所有这些社交媒体都有助于彰显你正在积极主动地参与软件开发社区的活动,都大大有助于为你扩大知名度。在当今世界,不管你曾经创建过怎样的简历,这才是你真正的简历,成为无可辩驳的证据,证明你非常清楚自己正在从事的工作。
在网络空间崭露头角是一个良好的开端,但在资历浅薄的时候,你应该需要一些更实质的东西。强烈建议,你在学习编写代码时或者在学成之后,一定要创建一些小项目,通过从头到尾地完成一个完整应用程序的过程来充分展示你的能力,比如,在GitHub上展示你做的这些小项目。作为一名白纸一张的新人,那一定要尽我所能让我的GitHub自述文件令人印象深刻。
在GitHub上展示你的成果还有许多其他好处,比如,你可以借此赚点儿外快;你可以借此创业;向面试官当场展示你写的代码。
如果你写了一个应用程序并且创办了自己的软件开发公司,没有理由让你不能自称自己就是该公司的软件开发者,并将这些经历统统写在自己的简历上。这不是撒谎骗人,如果在面试时你被问及该公司的情况,你确实需要诚实地回答,这是你自己的公司,是由你自己创办的,但是,你没有义务自愿提供这些信息。
另一个克服没有经验,以白丁身份入行的方法,就是积极参加社区活动,如参加技术会议、加入开发者组织等。努力与那些不同公司的人建立良好的人脉网络。
此外,让公司雇佣没经验的你的一个方法就是可以无偿工作。这种方法不适用于通过正常的“简历/面试”求职过程,但适合远程工作,或者通过非正式的面试过程求职。这个方面听起来有点不切实际,退一万步讲,在其他方法都不奏效、你很绝望的时候,你还会怕失去什么吗?
还有一个方法可以考虑,对一家宣称“现在不招人”的公司,你可以先尝试在一个非常小的项目中作为外包员工或者兼职员工参与其中,来证明自己的能力,或许能收到效果,因为许多公司都会雇用员工作为临时工以先“实地测试”一下他们。这个策略的另一种变化就是通过做一名收费非常低的自由职业者来获取一些经验。
不建议采用“先做其他工作”的策略,因为它会让你深陷你不想担任的工作角色中不能自拔,而且,在某些组织中,一旦做了“其他工作”你就很难转变成真正的软件开发者,比如做QA(Quality Assurance)。但有时候,当你缺乏经验而又需要踏入职场大门的时候,这是最好的选择。又比如,你不想从事QA工作,但为了进入目标公司,选择了QA的职位,在工作中,或许可以通过帮助其他程序员来间接体现你的编程能力,来获得程序员岗位的机会。尽管刚开始的职位并不理想,但你可以从公司的另一个职位开始,并以你的方式转岗成为软件开发角色。当然,在这样做的过程中也会遇到一些挑战,如果你以其他角色加入某家公司,那么很难让别人改变对你的看法,想要转为软件开发者也就很难了。但是,尽管如此,如果你缺乏经验,这个方法也是值得一试的。
虽然证书的价值很难评说,但当你缺乏实际的工作经验时,证书也变得很有价值了。某种程度上,你取得的证书是个敲门砖,可以缓解潜在雇主在招聘缺乏经验的人时可能存在的不确定性风险的方法。
谚语 The squeaking wheel gets the oil,意思是:会哭的孩子有奶喝。 这句话直译则是:吱吱叫的轮子会得到(润滑)油。敢于站出来发出最强烈声音的人将会得到他想要的东西,以至于获得成功。
你就是要做那个吱吱作响的轮子,受挫不要紧,不是每次你都会被注意,许多人害怕持续跟进、害怕打搅别人,他们因而会与机会擦肩而过。打搅别人总比被人遗忘要好,勇敢的做那个“吱吱作响的轮子”吧。
如果你没有经验,你一定要设法获得经验。不要轻言放弃,持之以恒,脚踏实地做好你正在做的事情,成功终将降临在你身上。
选哪种公司 ¶
为小公司或者创业公司工作的好处:
- 角色灵活,拥有多个头衔。
- 拥有很高的影响力。
- 高回报潜力。
为小公司或者创业公司工作的弊端:
- 可能无法安安静静坐下来全身心编写代码。
- 工作在众目睽睽之下,工作绩效一目了然。
- 稳定性差。
为中等规模的公司工作的好处:
- 稳定性高。
- 很少疯狂加班。
为中等规模的公司工作的弊端:
- 变更的节奏很慢。
- 可能无法接触到最前沿的技术。
对很多软件开发人员而言,在大公司工作令人沮丧,因为他们感到他们个人的贡献无足轻重。你可能只负责大的代码库的一小部分功能。
在大公司里倒是很容易就隐藏在芸芸众生之中。 有一些开发人员基本上终日无所事事,除非赶上一轮全公司范围内的大裁员,否则根本不会有人注意到他们。 不过,这种自主权也可以被善加利用。你能够去琢磨自认为重要或有趣的项目,无须背负产品压力。
为大公司工作的好处:
- 完备的流程和规范。
- 培训机会多。
- 大型有影响力的项目。
为大公司工作的弊端:
- 充斥着官僚主义作风。
- 可能只负责代码库的一小部分。
- 很难获得关注。
软件开发公司与拥有软件开发人员的公司,该怎么选?
拥有软件开发人员的公司中,软件开发人员只负责内部软件或他们正在生产的部分产品的公司。 由于公司的业务重心并非软件,一般不会给软件开发人员足够的尊重和发展空间。这些公司的软件开发实践极有可能非常松散。
软件开发公司是生产软件,做软件开发就是公司的核心业务。 这种公司会更重视自己雇用的软件开发人员的价值。他们的工作环境不一定会更好,但会大不一样。 软件开发公司会使用更为前沿的技术和工具。如果你想研究新技术,你应该直接去找一家软件开发公司。
在推行敏捷软件开发方法的时候,这两类公司之间的差异非常明显。软件为非核心业务的公司在采用敏捷过程中困难重重,这是由于敏捷过程通常是由开发团队驱动的。敏捷过程需要自上而下地采纳推行。
哪种工作环境适合自己?哪种企业文化适合你?决定权在你自己。在接受工作之前与为这家公司工作的开发人员聊一聊是个好主意,你能够更真切地体会在这家公司工作的感受。
找工作时的创新思维 ¶
有一些经验丰富的人会抱怨总是找不到工作。为什么他们找不到工作呢?他们有着各种各样的借口与理由。
- 老人一直占着坑,其他人都没机会。
- 大龄开发者被歧视。
- 所拥有的技能已经过时无用了。
上述理由是真实存在的,但仔细观察求职市场,很多职位都空缺无人,但许多软件开发者都在抱怨无法找到工作,归根结底在于,开发者不了解找到一份编程工作的正确方法。
错误的方法:创建简历,在线填写求职申请,然后提交简历。每天在网站上浏览上百个职位,然后给每一个职位都发去一份简历,然而大部分的尝试都石沉大海。
看下面的真实场景再现:
- 你发出了总共100份岗位申请,可能大约只有30份在很多天以后给你发出反馈;
- 在这30份反馈中大约又只有7个会邀请你来做一次电话面试;
- 经过这7次电话面试之后其中的可能有两三家会请你去做面对面的面试;
- 最终,你可能会获得其中1家的录用通知书。
如果你想获得更多的录用通知书,那你能做的事情主要有两件:
- 申请更多的岗位,比如发出1000个职位申请;
- 提高上面某一步骤的通过率,从而以更大概率进入下一步骤;
为什么很多求职者抱怨说他们已经申请了成百上千份工作,但是仍然没有得到任何职位呢?
- 他们高估了他们发出的工作申请的实际数量;
- 他们能够通过上述流程中每一道关卡的百分比太低;
传统方法的改进措施(简历必须定制化):
- 简历要漂亮,让人过目不忘。最好让专业的简历写手来帮你写一份漂亮的简历,术业有专攻。
- 对公司做一点研究。了解公司的情况和申请岗位的背景,这样后续才能突出你与岗位的匹配。
- 岗位申请要有针对性。写一封定制版的求职信,再加上修改简历以更有针对性地申请这份工作。这样做工作量很大,但很有效果。
- 申请有章法。一定要突出描述你与岗位描述最相关的部分,删除不相关的部分,或者把这部分篇幅降到最低,让招聘经理一看到你提交的申请,就觉得你完美匹配,但不要做得太过曲意逢迎。
- 跟踪结果,适时调整。比如,申请了多少个岗位,哪些收到回复,基于怎样的简历(样式,模板,针对性)等,以便能够更加有的放矢地调整你的计划。申请了50个职位没反馈的简历,即使申请100个职位,也是类似结果。
- 求助猎头:有一点必须要牢记:在找猎头帮忙的时候,你需要让他们确信,你不会令他们在客户面前难堪,因为猎头不想在他们的客户面前留下“我推荐的候选人表现不佳”的印象。猎头比你自己都更希望你能够从他们的客户那里获得一份工作。
下面我们跳出传统思维,尝试一个独辟蹊径的方法。
第一步,构建人脉网络。获得没有公开宣传的职位的最有效方法就是你认识的朋友中刚好有人知道哪里出现了岗位空缺。大多数工作,尤其是好工作,其实根本没有登在广告上。如果你在自己的人脉网络里很有声望,那么一旦他们听说你在找工作,他们就一定主动来联系你。
没人在乎你想要什么。人们只关心自己想要什么。当你试图通过告诉人们你想要的东西来建立人际关系时,你所做的与人们的期望恰恰相反,你是在告诉他们尽量远离你。所以,构建人脉的重点是你要先给予别人价值。
第二步,定位好目标公司。把目标对准你想要加入的公司,而不是对准该公司发布的职位。
例如,找一份远程工作的开发职位。
- 定位到目标公司,了解公司的情况。
- 了解谁为该公司工作。
- 关注该公司开发者的博客,并发表博客,以及后续的一些互动。
当他们一旦想要雇用一位开发者的时候,猜想一下,该公司的多位开发者会推荐谁去做这份工作呢?
第三步,构建一些有用的东西。比如,你使用目标公司开发的软件开发了某种工具,或者,你为目标公司开发了一个工具。 核心思路依然是,你必须体现出来自己的价值,而不只是在炫耀,而且如果你,免费为自己心仪的公司创造了真正的价值,他们难道不会想要录用你吗?
再比如,如果某个流行的网站有问题,很多人都会发现,甚至还会告诉公司该如何改进它,但是很少有人真正为此做一些具体的工作,很少有人真正实现了解决方案以改进该网站。建议不如行动。
第四步,自顶向下的操作。这是来自销售领域的小技巧。
大多数开发者试图在某家公司找到工作的时候,通常都会从底层开始操作。比如,联系人力资源部工作人员,或者开发经理,或者某一位软件开发者,但这些人在做出招聘决定方面几乎没有发言权,尤其是在没有空缺工作岗位的情况下。
取而代之的是从顶部开始。看看你是否能找到某种方法与公司的首席执行官建立某种联系,甚至是公司的CTO或者技术总监。
如果你真的能和这些“顶级管理层人士”中的某一位有说话的机会,那么一定要自信,要有一个良好的开端。不要一上来就向他们求职位。要去谈一谈你能想出来的你能给他们和他们的公司带来有价值的东西。问问他们,是否能让你与继续跟进的人士联系,进一步探讨你能为他们的公司做些什么。
这种方法技巧就是销售人员经常使用的集客式营销(inbound marketing)方法。核心思想是通过创造内容或者其他类型的有价值的东西,让人们自动找上门来,而不是你去找他们。
身为一名软件开发者,你可以通过开设博客、制作视频教程、写书、写文章、开设播客等许许多多类似的方法来提高你的声望。挑选的领域越专注,你就越容易成为领域内的佼佼者,而成为佼佼者应该就是你的目标。而一旦你树立起在这个专业领域内的声望,工作就会自动来找你。
机遇的大门不会永远为你敞开。有时你得拿起铁棍撬开大门。不要放弃,直到你试遍上述所有这些技巧之后——而且还不止一次。
怎样写简历 ¶
简历其实就是广告,除此之外一无是处。大多数情况下,面试官只会对你的简历一扫而过,前后也就是15秒的时间。15秒,你的职业生涯轨迹就此发生转折:是给你面试机会,还是直接拒绝。因此,无论你喜不喜欢听,一份优秀的简历就是如此重要。
现实中,程序员们可能擅长编写代码,但未必擅长写简历。
写简历是一门艺术;写作,尤其是有说服力的写作,是一项技能。
简历和旅游小册子一样,都是广告,最终目的无非就是让人们心甘情愿掏钱。
你任职的公司的CEO并不会去写软件。当然,他可能会坐在电脑前打开IDE写代码开发出运营公司所需的软件。但是,更合理的方式是雇你来做这件事。那么,你可以考虑找一位专业的简历写手来帮你写简历,或者帮你润色。 如果你觉得找人写简历会令你不舒服,那么就自己写简历,但这并不意味着找人写简历或者润色简历是错误的。
写简历前,需要准备好以下信息:
- 之前你做过的所有工作的确切日期;
- 你既往做过的每一个岗位及其岗位说明;
- 每项工作所取得的主要成就(多项);
- 你所有的受教育经历;
- 你所拥有的所有证书或其他荣誉;
- 列出你认为自己最重要或最相关的技能;
- 几个你想要得到的职位,以及每个职位简单的岗位说明;
- 其他任何你认为有关的东西;
一份优质简历的构成要素:
- 要确保你罗列在简历里的所有内容都是基于事实的,没有相互矛盾之处。
- 简历不允许有语法错误或者拼写错误。
- 简历一定要炫。写好简历的最重要的事情之一就是看起来很漂亮。人们判断一本书是否值得一读也是只看封面。
- 根据不同需求使用高度定制的求职信,而且一个个都制作精美。
- 除了要有一份文字版的简历,建议还要录制一份视频简历,这种方式能够很好地展示你的个性。
- 简历是否优秀并不取决于你能在一页纸上塞下多少内容。
- “我觉得一份简历一开始让人看到的东西应该是最客观的实际状况。”这完全是胡说八道,因为没人在乎你想要什么。没有人关心你希望找到怎样一份工作。他们真正关心的是你能提供什么价值。
- 要清楚明晰地描述你的技能和专长是什么,在过去你又是如何运用它们取得了伟大的成就,以及你会如何将这些技能移植到你所申请的职位上。
- 以“你能提供的价值”为核心。你在简历上写的每一件事,都应该从“你能提供的价值”的角度来考虑,而不是“你想要的”。
- 你做过什么,如何做的,成果如何。
下面的例子展现了如何运用“你能提供的价值”为核心这个方法的。可以自行体会其中的差异。
原始描述:“利用Java和Spring框架设计并编写过一种独特的、创新的猫变形算法,改善了创建猫形标志的应用程序的性能与适应性,提高了500%以上。”
改写后的描述:“提出了一种基于旅行推销员问题的猫变形算法。重构猫变形模块以实现新算法,使用Java Spring框架来提高可维护性。性能提高了508%,修复bug的时间减少了34%。”
尝试在简历上列出你拥有每一项技术和技能的想法必须克制住。优秀的简历,就像一份优秀的广告,应该尽可能短小精悍,这样才会有人问津。当然,在求职的过程里,短小精悍才有面试机会。因此,大多数情况下,你的简历应该只有一页。这也意味着你必须要让你的简历简洁明了、切中要害。
可以这样类比这个问题:假设你遇到了税务问题的官司。这时你需要聘请一位律师代表你出庭。你是愿意聘请一位专长是“离婚法,税法,海洋哺乳动物保护法,刑法,房地产法,”的律师,还是愿意聘请一位专长是“税法、公司法”的律师呢?
在准备简历的过程中,还有一个技巧或者方法叫做“极化”。 极化(polarization),指事物在一定条件下发生两极分化,使其性质相对于原来状态有所偏离的现象。 “极化”应用在简历中,就是“独特性”。简历的作用就是令你脱颖而出。当你申请一个岗位的时候,同时可能还有100名其他软件开发者也在申请这一岗位,所以你一定要找到一些可以令你尽可能显得卓尔不群、独一无二的方法。 有些雇主或面试官欣赏独一无二的特质,而另一些人则憎恨标新立异,所以“独特性”也是一把双刃剑。有些人会选择宁愿在少量几个地方因为卓尔不群而被无情拒绝,也不愿意因为泯然众人而到处被人遗忘。
总结,在准备简历的过程中,要富有创造力,要独一无二,但是要把这种创造力用来突出你在简历中要重点传递的信息,而不是分散人们的注意力。
不管你现在是否正在找工作,把你的简历发给一些招聘人员,询问他们的意见。招聘人员看过无数的简历,他们是能告诉你是否需要改进自己简历的最佳人选。
怎样面试 ¶
下面是几种常见的不同类型的面试和特点。
-
电话面试
大多数大公司在招聘开发者时,都会确保用电话面试的方式过滤出他们想要参加面试的所有潜在人选,然后再安排真正的面试,以此来节省成本。电话面试的目的不是决定是否给予你工作机会,而是决定要不要把你淘汰出局。
-
在线技术面试
面试中,你会被要求解决一些编程问题,甚至与面试官一起进行结对编程,这样他们就可以在远程快速评估出你的技术能力。
-
标准技术面试(最常见的面试类型)
面试官会询问一系列关于你将要在工作中大量应用的技术的问题。这些问题都不会很深入。 面试官也会询问一些企业文化相关的问题,通常是在寻找一些迹象,表明你有某种对团队有害的性格缺陷。
-
小组面试(最难应对的面试之一)
小组成员可以轮流向你发问,或者要求你澄清别人以前提过的问题。你要应对的是技术类型的问题和个人性格类型的问题的混合体,每个人都会对你的每一个答案记下大量笔记。
-
编程面试
在编程面试中,你将被要求通过编写代码来解决一些算法问题。你有可能会被要求在白板上编写代码,而不是使用任何集成开发环境。大多数没有为这类面试做好针对性准备的软件开发者,都会在这一要求下败下阵来。在白板上写代码会让人感到非常局促不安,特别是当你没有足够的自信心解决被提问的问题的时候。 你应该花些时间掌握解决编程面试所需的技能,让自己对数据结构方面的知识牢靠掌握。
-
全天或半天面试
这种面试通常会包含几轮技术面试、一轮企业文化适应性的面试,甚至在最后还有一场小组面试。 这种面试会让人精疲力竭。
你还应该准备好回答所有常见的性格和心理测试问题,即大多数求职者默认都会被问到的问题。
- 你最大的优势是什么?
- 你最大的弱点是什么?
- 5年后你认为自己会变成什么样子?
- 当你在工作中遇到了挑战或者冲突的时候,你该如何应对?
- 你为什么想在这里工作/想要这份工作?
- 你能告诉我一些关于你自己的事吗?
- 你为什么要辞去目前的工作?
回答这些问题时你要尽可能真诚,不能透露太多负面的细节,你要尽可能保证一切内容都是正能量,比如,勇于承担责任,积极进取成长,不会因为任何事而责怪别人。
比如,关于“你最大的弱点是什么”这个问题,可以用类似的方法(套路)回答,“嗯,我倾向于追求完美主义,这很好,因为对细节的极度关注意味着我不会犯太多粗心大意的错误,我会创作出高质量的工作产品。但有时我也会为了让事情臻于完美而过分执着。”
不是鼓励撒谎—,永远不要撒谎,但也没有必要直接告诉面试官这些负面情况。
面试中还有一个事实需要接受,就是技术技能纵然重要,但是,当许多技术过硬的开发人员一同竞争某个工作岗位时,决定胜负天平的砝码已经不再是技术能力了。这时候面试官决定雇用某个人其实是基于各种各样的非技术因素。简而言之,通过面试的最快捷的方式是让面试官对你怀有好感。
- 衣着得体。面试时,你应该穿比雇主公司的着装标准高出两个级别的衣服。装扮得体,从而有意无意地制造出这样一种认知:你才是更专业、更优秀的候选人。
- 准时出现。提前10分钟准时到场。不是提前15分钟,也不是提前20分钟,更不是迟到10分钟,当然也不是踩着点儿到。
- 不要撒谎。不需要自告奋勇地把自己的每一条负面信息都说出来,但是如果真被问到,那一定要直言相告。不要对你不知道的问题乱说,胡说八道永远不会给人留下好印象。在面试中,至少有一个问题你是答不上来的,这其实是有好处的。
- 不必过分防备。对于回答不了的问题,克制自己陷入一种防御性的反应中。你的畏缩逡巡而又心存戒备只能告诉面试官你缺乏自信。
- 回答问题时要详尽阐述。不要只从表层回答问题,尤其是针对技术性问题,要增加更多的细节。虽然不必过分向面试官讲述你的整个人生故事,但是要详细阐述所有重要的问题。
- 真正自信。什么都可以假装,可是自信假装不出来。
面试过程中,一定要给面试官传递出这一条重要信息**我是善于自我激励的人。我清楚自己该做什么,而且我一定会去做。** 这是因为,与雇用技术高超但需要生拉硬拽才能干活的人相比,老板们宁愿雇用这样的开发人员:知道的东西可以少一点,但是明确知道要做什么,以及怎样去做。从某种程度上讲,在你可控的范围之内,面试的时候你要集中精力证明自己就是无须督促也能自动自发做好事情的员工。
不管你现在是正在积极寻找工作,还是给自己保留选择的余地,再没有比现在更好的时机去开始准备你的下一场求职面试了。 你应该做的第一件事是确保自己仍旧保持技术能力。如果你力所不及,那么世界上所有的面试技巧都不能帮助你找到工作。
- 整理一份清单,列出你想去工作的公司,以及你认识的这些公司的人。
- 在这份清单上的公司里,如果有的公司你一个人都不认识,那么想办法至少去认识这些公司中的一位员工,并与之建立联系。
- 在自己所在领域多参加活动(会议、培训、等),并把自己介绍给尽可能多的人。
怎样谈判薪酬 ¶
第一、了解你的薪资范围。
在网上找到想要去应聘的公司里某个岗位的薪资范围不是一个很困难的事情。如果你认识某个在这家公司工作的人,不要直截了当地问:“你拿多少钱?” 应该这么问:“据你所知,从X元到Y元的范围在贵公司是一个合理的工资预期吗?如果不是,你认为多少是合理的?” 在你得到的答案基础上再加10%。
应聘的过程中,在被问及你的薪酬要求的时候,你应该记住的一个重要原则:不要先出价。
如果是在收到录用通知书之前就去讨价还价,会有失去先机的风险。如果你在拿到录用通知书之后才开始薪酬谈判,那么你要面临的风险就是会得到一个偏低的薪酬。在我国,大多数情况下,薪资谈判会发生在录用之前发生。
大部分公司都会直截了当地询问你当前的薪资水平和你对正在申请的职位的薪资期望。下面的几种方法或许能帮助你应对这种情况。
- 你可以说,按照你现在工作的公司的规定,这属于机密信息,你觉得向外人提供这些信息是不对的。
- 你也可以说,薪资包含有形和无形的福利待遇,只谈工资金额是片面的。
- 你也可以说,你会接受任何合理的待遇,或者你想知道整个薪酬待遇的整体方案,而不是随随便便地报一个数字。
- 如果你正在等待其他公司的回复,你可以说,你还需要几天的时间来考虑。
进入薪酬谈判时,下列情况下你将会拥有最为优势的地位:
- 让这家公司专门找你;
- 这家公司之所以要聘请你,要的就是你独特的才华、能力或者声望;
进入薪酬谈判时,下列情况下你会处于不利地位:
- 你在没有任何人引荐的情况下申请了这份工作;
- 你不太符合这份工作的岗位要求;
- 你的面试过程不是很顺利,你是第三顺位的人选。只是因为前两位候选人拒绝了录用通知,所以他们才找到了你;
- 你已经失业了;
因此,在开始薪酬谈判之前,你要竭尽所能让自己尽可能处于优势的地位。下面这些做法,能够帮你提升自己的谈判优势。
- 在找到另一份工作之前不要辞职——哪怕你现在的老板是个混蛋。
- 如果可能,申请职位时一定要设法获得推荐;
- 一定要为面试做好充分的准备,这样你才能展现出自己最好的一面;
- 看看自己是否能够同时获得多份录用通知书;
- 建立良好的声望。你的名气越大,你在谈判中的优势就越明显;
在你收到录取通知书或者合同时,仔细阅读内容:报到日期、年薪与月薪、职位名称、休假及健康保险等福利,以及其他所有对你很重要的细节。
在评估薪酬的时候,不能只看工资数额,应该关注小时薪酬,在计算小时薪酬的时候需要考虑下面这些因素。
- 可以预期的每周或每月工作时间;
- 可以预期的所有收入,包括奖金;
- 休假时间;
- 所有福利(包括各种社会保险);
如果同时收到多份工作邀约,你就拥有选择的权力,你在谈判中就站在最有立的位置,你有转身离开的能力。 从根本上讲,同时拥有多份工作邀约的真正价值并不是利用这一份来胁迫另一份,而是让你拥有选择的权利。 小心谨慎地运用好这份优势,别把到手的一副好牌搞砸了。
离职该怎么做 ¶
离职的过程往往牵扯到很多情绪因素。愤怒、沮丧甚至内疚,这些极端情绪往往会激发一个原本老成持重的人在离职的时刻做出丧失理智、意气用事的举动来。 以错误的方式离职会给你的职业生涯带来灾难性的后果,并且可能会给你的声望带来永久性的损害。
很多软件开发者都在抱怨自己工作得不开心,自己很长时间都没有得到成长,但他们还依旧待在那里。
怎样才能确认自己是否已经身处“温水”之中?怎样才能让自己意识到现在该是离职的时候了?最好的指标之一是缺乏成长的机会。身为软件开发者(并且作为一个普通人),如果你正在从事的工作没有给你带来新的挑战,而且你没有看到任何成长的机会,那么这可能就是一个很好的标志,预示着你是时候该离开了。
然而,如果你已经身处舒适区,害怕改变,害怕未知世界,那就很容易陷入墨守成规的思维定式中。但是,生活中的所有成长都是在打破自己的舒适区之后才能够得以显现的。
没成长,毋宁死。成长才是硬道理。
另一个能够预示你该提出辞职的标志(也许也是最好的一个),就是当你发现当前的工作环境已经乌烟瘴气的时候。
人生苦短,没有时间与卑劣的人上演宫斗戏码。让你的人生远离这些是是非非吧。当你身处在这样乌烟瘴气的工作环境中时,不要试图能够改变它。迅速离开它吧。
当真正的好机会降临的时候,你要好好抓住。
如何正确的离职?
在做出离职的抉择时,你需要尽可能地把个人情感因素排除在外。你要确保不要为自己辩解,你需要确保让自己的决定有据可依。正如英国前首相本杰明·迪斯雷利的箴言:“永不抱怨、永不解释。”
在离职过程中,放弃“团队”会让你背负上巨大的负罪感,你会感觉别人会对你失望至极。但是,你必须要改变这种感觉,你要意识到,没有你,生活还能继续下去;而且,你还必须承认,你对团队并没有你想象中的那么重要和关键。没有人是不可替代的。
辞职前当然要提前通知公司,转身就走当然不专业,但只要按照法律规定提前一个月通知公司即可。注意,在你在提出辞职之后,不建议在当前的岗位上多待一段时间。在这段时间里,你要去就职的那家新公司会发生了很多事情,说不定会导致他们取消对你的工作邀约。你可能突然会从手握两份工作而变成一无所有。
如果你要辞职,直接辞职就好。千万不要用辞职来做威胁。
如果你对工作环境有意见,你可以开诚布公地提出意见并要求改变;如果你的意见无济于事,那么你有两个选择:要么忍耐,要么辞职。
一旦你威胁要离职,你的老板就会开始寻找你的替代者。没有人喜欢被威逼的感觉。一旦你被认为是一个喜欢靠威胁来得到自己想要的东西的人,你就会被贴上办事没谱、不负责任的标签。
提前流露出离职的想法,是愚不可及的做法,不管你和老板关系有多好。 当老板知道一名员工在两个月后就要离开时,让员工继续留着一段时间对老板而言是一个沉重的负担。老板不能委派他做任何重大项目,老板也不知道他是会尽职工作。
世界很小,小到你难以置信。
我目睹过一些软件开发者,就因为他们在离职时的所作所为,把他们自己逼入绝境,除非换个地域,否则很难再找到工作。
要想拿着优越的条件离开现在的岗位,你能做的最好的事情之一莫过于卓有成效地培养好你的接班人。许多软件开发者天真地以为,如果在他们离开之后,公司会遭到重创。事实恰恰相反。一位优秀的领导者在他履新之时就着手开始培养自己的接班人。一位优秀的领导者知道,通过团队建设、公司流程建设等基础设施的建立与完善,公司可以在他们不在场的情况下保持业务的正常运营,这才能彰显他们的价值。
认为自己是一个组织的关键节点,一旦缺少了他们这个组织就会踏上崩溃之路,这是缺乏自信的表现。
当你离职的时候,不管你是否是自愿离职的,都一定要确保在交接的时间里尽你所长,做到最好,培养你的接班人。这是在构建你的人设,因为这个世界很小。
离职面谈的时候别说任何坏话,你不可能从中得到任何好处,相反很多坏事可能就此发生。
离职面谈的时候,当你被问到“公司还是什么地方值得改进”“公司还有哪些问题”“你为什么要离开”“你在这段工作时间里最不喜欢什么”等诸如此类问题的时候,记着只要给出一些令人愉快的回答即可。千万不要说出你的真实想法!千万别犯傻。
设立离职面谈的初衷都是为了善意地改善公司工作环境,但公司文化方面的问题绝不是通过倾听前员工在临离开之前的抱怨来解决的。不要卷入一场对你没有任何好处的游戏之中,那只会有很大的机会令你自毁前程、惹祸上身,因为这个世界很小。
半路出家怎么做 ¶
有一些优秀的软件开发者当中,在他们的教育背景或者职业生涯刚开始的时候,并不是软件工程教育背景,或者从软件开发起步的。
中途转行的优势:
- 具备优秀的人际交往技能和软技能,而这两点在软件开发领域从业者中都是欠缺的。如果你工作在一个对软技能及人际交往技能高度重视的领域内,拥有这些技能能够给你带来独特的优势,能帮助你在转行进入软件开发领域的时候一般都能顺利通过学习曲线。
- 成功的心态往往是普遍适用的,如果一个人身处某一行业中能够取得成功,那么他们在任何行业中都会获得成功。
- 或许半路出家转入软件开发行业的人士具有的优势是不受软件开发行业思维定式的羁绊而具备创新思维。
关于软件开发行业思维定式的羁绊,这里聊一下“货物崇拜编程”模式。
“货物崇拜编程” (Cargo Cult Programming)是一种计算计程序设计风格,通常是一个程序员既没理解他要解决的 bug,也没理解表面上的解决方案的典型表现。 这个名词有时也指不熟练的或没经验的程序员从某处拷贝代码到另一处,却不太清楚其代码是如何工作的,或者不清楚在新的地方是否需要这段代码。也可以指不正确或过份的应用设计模式,代码风格或编程方法,却对其原理不明就里。“货物崇拜编程”来源于“货物崇拜”这个词。其衍生词还有“货物崇拜软件工程”。
软件开发者现在越来越倾向于“货物崇拜编程”模式,即程序员开发软件的模式并不是基于他们的工作本身,而是因为其他开发者也在这么做,而这些开发者的做法往往被认为是“最佳实践”。从其他行业转行来的软件开发者,拥有独特的外部视角,能够突破编程世界里已经普遍存在的先入为主的概念和想法,进行更有创造力的思考。
没有任何职业经验的软件开发新人也可能拥有相同的潜质,但是他们往往会因为缺乏经验而对自己的想法丧失信心,很容易陷入对行业大牛的迷恋与崇拜之中。
中途转行的劣势:
- 软件开发工作的高复杂度和所需要的大知识量是阻碍许多人转行成为程序员的难以逾越的障碍。软件开发的确要比一般的职业要难许多。在进入这一领域的时候,如果你认为你能像学习如何从事其他工作一样地学习软件开发,那么对你而言这肯定会是一个不利因素。你必须完成大量的学习工作,必须有的放矢地完成实践工作,这样你才能成为编程这个行当里的行家里手。
- 时间问题。虽然你可以利用自身优点加速通过学习曲线,但是如果你想弥补由于缺乏直接经验而造成的知识空白,那么你仍然需要埋头苦学迎头赶上。
如何转行?坚持不懈地学习,持续不断地提高自己的技能,孜孜以求寻找各种机会、创造各种机会,你终究会梦想成真。耐心和毅力是关键!
- 从当前从事的工作入手实现转行。从自己手头工作的点点滴滴入手开始学习编程的——编写程序来帮助自己有效完成工作,或者开发某种工具来帮助每个人有效完成工作。甚至都可以在当前工作的公司内部为自己创造一个软件开发的角色,如把一些工作自动化或者构建某种工具。
- 寻找一种可以有效利用现有背景知识的方法。拥有领域业务知识可是一项具有极大价值的优势,对软件开发公司来说,找到具有10年软件开发经验的开发者可能会很容易,但是找到拥有10年或者更久领域内业务经验的人可是宝贝。软件几乎存在于每一个主要行业。
- 愿意从底层开始。如果你正在转行从事软件开发工作,你需要可以从底层开始做起的决心和意愿。别担心,你之前的工作经验将会确保你不会在底层工作岗位待得太久。如果你在另一个行业里已经身经百战、高歌猛进,那么你原先的许多软技能都将有效加速你在软件开发领域内的职业发展进程。你只需要在刚开始的时候多一些耐心而已。
- 内部转岗,比如从测试转开发,你将面临的最大障碍将是人们对你的看法。
- 坚持走自己的路,别管那些偏见,让你想要转型的目标尽可能地广为人知。语言一定要用实际的行动来支撑。当你和你的老板进行这样的谈话前,看看你是否已经列出了一份清单,所有可以帮助你从目前的角色转变成为软件开发者的课程都已经罗列其上。如果你能罗列出所有你需要学习的内容,以及计划好学习过程的里程碑,那么在你准备就绪的时候就能为你的转岗梦想提供更有说服力的理由。
- 寻求机会。如果你真的梦想进入软件开发领域,那就不要期待着有人会主动给你加冕“开发”的头衔,也不要期待有人会主动给你分配开发的任务。恰恰相反,即使在你目前的角色中也要努力寻求机会去做一些编程工作。
- 自己创造机会。自己去找寻那些你可以做出贡献的领域,并且不会妨碍到任何人,也不会为了问问题而占用他人的时间。这些机会往往就是没人愿意去做的“脏活累活”,比如,调试一个bug,写API文档,写个小工具,等等。
- 利用自己的时间。如果你真的想在软件开发方面获得机会,你就必须多付出一些,利用你自己的业余时间来推进你的转型历程。即使你在工作时间里被赋予完成一些软件开发任务的工作,你也应该付出一些额外的、不计报酬的时间用于完成另外一些软件开发任务。
- 换一家公司。即使你不能转型成为本公司的软件开发者,你也应该尝试着在你目前的工作岗位上锻炼自己以获得开发经验,这样你就可以在向另一家公司申请软件开发职位时把这段经历写在简历中。
合同制员工入职与正式员工入职的对比 ¶
软件开发行业有两种基本的就业类型:你可以选择成为某种类型的合同制员工(contractor),也可以选择成为一名正式雇员(employee)。
合同制员工的各种类型:
- 由代理机构派遣的合同制员工。这种类型的员工为一家机构工作,这家机构会把他们派遣到客户现场工作,机构向客户收取费用。员工并不直接为客户工作。通过卖人头而获利。
- 独立承包商。如果你是一个独立的承包商,你将拥有一家企业或者法律实体,你就是一个自雇型的工作人员。通过卖人头而获利。
- 自由职业者。自由职业者就是一个受雇于某一个特定项目或者特定工作的承包商。
合同制员工与正式员工的对比:
- 钱。在大多数情况下,在同等工作岗位上,作为一个合同制员工你将得到更多工资数额。但正式员工会获得更多的其他薪酬保障。
- 工作环境。在有些公司里,在合同制员工和正式员工之间存在巨大的鸿沟,但是在有些公司里,差别又不是那么明显。不过,差别总是存在的,比如,正式员工心中浓厚的精英主义心态。此外,合同制员工会缺失团队的归属感。
了解招聘 ¶
很多招聘人员都会联系尽可能多的潜在求职者,以便找到最合适的人选来填补正在招聘的岗位空缺。 尽管招聘人员发给你的领英电子邮件写得天花乱坠,让你觉得自己是一位人见人爱的白马王子,但是在大多数情况下,他们只是在一个固定的模板上复制/粘贴上你的名字。
无论是招聘机构主动联系你,还是你主动联系招聘机构,招聘人员更感兴趣的是尽可能多地去填补空缺的岗位。你要尽可能强势地展示自己的优势,这会影响招聘机构向你推介怎样的工作岗位。
招聘人员可能会竭尽所能让你尽快通过所有招聘流程。这意味着,你可能并不是这份工作最适合的人员,他们可能只会告诉你关于这份工作、这家公司所有正面的事情,以使你欣然前往就职。并不是说所有的招聘人员都是居心叵测,但是你一定要自己留意,不要轻易基于自己的假设给出判断,主动向招聘人员多问多交流总是好事。
通常情况下,在你申请某个职位的时候,你既可以直接提出申请,也可以通过招聘人员提出申请。 有一些岗位是独家委托某个招聘人员或者招聘机构才能去申请的。要想申请这些岗位,你没有别的选择。 此外,可能一些大型人事代理机构已经与某些用人单位建立了良好的合作关系,已经在事实上成为用人单位的指定代理。
在谈判薪酬的时候,招聘人员/招聘机构通常也比你自己做得更好,而且通常情况下能把你的薪酬谈得越高,他们的收益也就越大。事实上,在谈判的时候,借助代理机构的力量是非常有效的。通常,如果你能让别人代表你去谈判,你可以得到更高的报价。
此外,一个优秀的招聘人员/招聘机构可能会有助于展示出你的最佳状态。非常有可能,他们会帮你修改简历,还可能把你包装成最优秀的候选人,甚至会利用他们获得的一些内部消息帮你顺利通过面试。