新入码农这一行我在公司内外犯过这些错误

来源:未知 发布于 2018-08-03  浏览 次  

  编者按:当你初涉职场,一切都是未知,你会遇到各种各样的挑战,摸着石头过河应该最能形容你这个阶段的感受。本文作者 Jack Finlay 是一名软件开发人员,他在本文中总结了自己进入软件开发领域工作以来在早期所犯的错误以及自己的所思所想。想进入软件开发领域的新人可以以此为鉴,规避这些错误,让自己少走弯路。

  当你最开始进入软件开发工作领域时,一切都是未知,一切看上去似乎都令人望而生畏。离开大学校园,进入现实工作环境是一个很大的转变,在你找到自己的节奏并且塑造起充足的自信心之前,你可能会在这条路上经历很多的磕磕碰碰。也有可能你已经对自己的能力很有信心了,那我想问你一个问题,“你在这之前犯过多少错误?”

  进入软件开发职业生涯,也是让你掌握一门技艺的开始。它同其他任何的职业领域一样,你会发现在这里你也会遇到各种挑战,会有机会纠正自己,并且有些时候你会发现所作所为自己完全就是错的。本文是我对自己在软件开发职业生涯早期所犯错误的一次反省,另外我也根据自己的体会给出了如何规避这些错误的建议。

  走出大学校门,找到第一份工作并不是一件容易的事,一定要确保这份工作适合你。这家公司必须适合你,并且会带你去到你想要去到的职业发展方向。

  在这方面我犯过两次错误。我是在大二那年找到了第一份软件开发工作,因为当时我的财务状况捉襟见肘,所以对于第一份工作邀约,我就欣然接受了。当时我的想法是我应该接受这份工作,因为这份工作的工资待遇同我那微薄的学生福利相比已经算很高了。当时,我根本就不知道这份工作的待遇,结合这一职位以及公司所处地域来说,其实远低于当时的市场薪酬标准。

  正如我先前所说,我犯过两次错误。另一次就是毕业之后,当时我设法在别处找到了一份工作,这份工作的薪资待遇水平比我当时的工作要高 25%。但其实即便这样,按照市场标准来看,这一新工作的薪资待遇仍然处于低端水平。我的价值被严重压低,但当时的我毫不知情,很高兴的接受了这份工作。那时的我根本就没有意识到,其实并不是所有的权力都掌握在雇主手中。

  你也可以对自己的薪资待遇提出要求。如果我事先花时间进行一番市场薪资水平研究,那我会发现自己真正应该享受怎样的薪资待遇。我建议你可以参考 PayScale 这样的网站来获取这方面的信息,在进行薪资谈判时,你甚至可以直接引用一些类似网站的数据。

  Glassdoor 就是一处很好的资源,公司内部员工会非常认真的给出自己对于公司的评价。一般说来,就员工在这家公司的工作体验是好还是坏这一方面,评论内容可能会出现两极分化现象。你需要搜索积极以及消极评价,并找到其中的中间地带。如果我之前就了解过这些评价内容,那在面试以及接下来的工作过程中,我应该就可以规避一些糟糕的经历。

  在我职业生涯的早期阶段,我非常想去一家企业工作(因为我的朋友在那里工作,他很享受这份工作),我是如此热切的想去到那里工作以至于我都忘了问一下去到之后我实际会做的是什么样的工作。事实证明,我跟朋友并不在同一个部门,虽然同处一座大楼,但不在一个办公区,甚至不在一个楼层。当时,我甚至都没提前去考虑这份工作是否真的适合我这个问题。

  此外,我也没有充分询问关于接受这份工作软件开发环境、使用的工具以及语言等方面的信息,这又是一个错误。所以,在那之后接下来的职业生涯中,在接受一份新工作之前我都会确保自己先了解以下几个问题:

  符合行业标准吗?是 Git、TFS、SVN 还是 Mercurial?如果你之前有听过,那就应该没什么问题。

  7、公司下一步计划采用哪种技术?这些变化主要是为了怎样的发展前景?大约还有多久才能将这些技术付诸于公司日常使用之中?

  一旦你开始工作之后,挑战就会源源不断的出现。你会发现自己每一天,都需要应对一些新的挑战。

  “我的代码是自注释的,因此我不需要再加注释。”在我首次开始专业编程的时候,我就是这么想的。但我绝不会再犯这样的错误了。对于任何语言来说,注释都是一项最强大的功能,它可以传达你当时的想法,你需要在注释中体现这一点。

  我看过无数的代码段,我发现一条简单的注释往往就能让复杂的代码和算法变得更容易理解,也更容易更新。

  但是如果代码段被过度注释,那比没有注释还糟糕。当你处于深入探索模式,试图弄清楚某样东西的运作原理时,你会发现那些过度注释的代码只会增加你的探索难度。如果你对一行代码注释过度,那下一个看到这行代码的人可能就会感觉不知所云,不明白你为什么会这样做。

  所以,一定要谨慎处理你的注释,优质的注释内容不仅可以降低认知负担,还可以帮你发现错误所在。如果它看上去与注释不符,那很有可能是错误的,或者这会让你有机会将以下部分付诸实践。

  不要等到掉进兔子洞、错误已经铸成时再想起寻求帮助。不及时寻求帮助可能会导致你得出错误的结论,或者更糟糕的一种可能是,你会破坏一些东西。及早提问,即便是对于那种只需要一次 Google 搜索就能快速解决的问题也是这样。也许虽然你需要提出问题,但你不想问,因为你害怕自己会看上去像笨蛋一样,那最终结果很有可能是你做出的东西根本就是错误的。

  提出问题有助于让你学到新东西,并且快速参与到项目中来。如果在需要的时候你没有提出问题,那你可能会做出一些错误的假设。

  在你开展某一项目时,假设是决定你需要构建什么东西的一个重要组成部分。在你设计一套解决方案时,并非每一件事情都必须迎合你之前所做出的假设。只有正确的假设才有助于引导你找到正确的解决方案。

  我有过耗费几个小时的时间去编程,但最后出来的东西却是错误的这样一个经历,并且我之所以构建的是错误的东西只是因为我做出了错误的假设。通常情况下,从商业分析师那里拿过来的任务都非常具体,但其中往往也会有缺失。除非提前说明或者是你问过他们,否则不要做任何假设。

  你可以每隔一段时间就要求在家工作,不要害怕提出这一请求。有时候,这是摆脱办公室环境压力与诸多分心因素,让自己获得专注力的一个好方法。有些企业,整个员工团队采用的都是远程工作模式,显然这种模式是行得通的。

  当然,也有一些企业坚决反对远程工作模式。我之前在澳大利亚的一家企业工作了一年多的时间,办公地点在新西兰。无论是团队间协作还是与客户的合作其实都通过网络形式来进行,无论是电子邮件、即时聊天还是传统的电话形式,距离都不再是你与他人共事的阻碍。也就是说,无论我是在办公室工作,还是在家办公,其实没有实际的区别。但不管怎样,公司就是不允许远程办公模式的存在。

  所以,你可以留意那些合适的工作岗位,那些能够让你有机会在家或者除办公室之外的地方办公的工作。

  不幸的是,你不可能是将一周全部的工作时间都用在编程上。虽然,你可能对这种状况感到苦恼,但这其实并不全是坏事。毕竟,编程并非 100% 的时间都是用在写代码身上。

  其中,你的一大部分时间会用在会议事项上,而这些会议通常是为了减少你需要用在具体编程上的时间。这也是确保你可以通过编写尽可能少的代码来设计出最佳解决方案的一条有效途径。

  有些人可能会说这并不重要,但也有观点认为你在工作之外的所作所为与你在工作中的所作所为一样重要。

  一旦我意识到当前工作所用的专有工具和语言非常糟糕,真是令人沮丧,我就会开始研究那些我知道可以让我去到另一家公司的技能。

  如果你发现自己也深陷同样类型的工作环境之中,那了解一些更加主流的技术信息有助于帮你自己找到一条新的出路。虽然就这一方面观点呈现出两极分化趋势,但我相信,利用自己的业余时间来培养专业技能,绝对能够让你抓住未来更多的机遇。

  现在我自己也读过了一些书,我多希望自己先前读的书能更多一些。因为从书本中我们可以学到无尽的知识。在你的休息时间或者工作日的闲暇片刻,你都可以拿几本书看一看。大部分人都是坐车上下班,这个时间就可以用来看书。

  写作是进一步拓展你的职业生涯的一个好办法,这也是我现在正努力所尝试的事情。这不仅仅是一条建议,也是我自己的反思成果。将自己遇到过的困难或者某个问题记录到博客之中,在你以后再次遇到类似问题时,这篇博客就会对你起到帮助作用。

  一开始这样做看上去可能有些奇怪,但将这些事情记录下来确实是让自己减压、释放情绪的一个好方法。我的大部分作品都是直接面向公众开放,但你不需要这么做。

  在我刚参加工作的前两年,我并没有经常锻炼,结果身体很快就开始吃不消。我们都知道,作为一名程序员大部分时间都是坐在电脑前,一动不动,盯着眼前的屏幕。当然,你不可能一整天的时间都在编程,但是起身去会议室开会这种运动量显然不够。所以,我的建议是一定要尽量让自己多锻炼。

  尽管让自己在工作场合随叫随到是很重要的一个品质,但你要知道时不时的让自己休个假也很重要。如果你没办法为自己调休出一个长假期,那你可以将调休时间与周末连到一起,或者时不时的休息几天。公司对于休假以及调休都有不同的福利政策,确保自己尽可能利用到这些福利。

  我之前犯得一个错误就是,让自己积攒了很久的休假时间,但最终却没能派上用场。从经济层面来说这是好事,节省开支,但对于我的身心健康来说显然不是这样。