摆脱对第一份工作的恐惧

摆脱对第一份工作的恐惧
电影《哈利·波特与阿兹卡班的囚徒》剧照

这个世界的问题在于,受过教育的人充满了怀疑,而白痴却充满了自信。

查尔斯·布科夫斯基

我最近教授了另一门一对一的编程课程。与常规课程不同,主题不是语言构建或解决问题。这位学生表达了他对未来就业的担忧。这个学生本身就很聪明。其中一位来参加课程的人比任何人都更快地完成了整个程序,并提供了原创的解决方案,但他一直真诚地低估了自己。在我看来,这种怀疑只是由于缺乏信息而产生的。我试图在课堂上即兴填补这个空白。

问题是这样的:

  • 每年都有很多学生从大学毕业,他们都去寻找工作。那是很多人。他们可能会雇用最好的人,但我不会得到一个位置。
  • 如果我搞砸了并立即被解雇怎么办?
  • 如果在工作过程中他们发现我很蠢并把我踢出去怎么办?

这位学生并不是我第一个回答此类问题的人。很多人都有这样的情况,而且通常是在没有准备的情况下就被告知的。这次我决定把我的独白写在笔记本上。我以为这会是几段,但最终足以写整篇文章。

这篇文章从我的角度并根据我的经验描述了这个观点。然而,我们的世界非常多样化,其中发生着令人惊奇的事情。如果您不同意某些内容或您的体验有所不同,请发表评论。

这篇文章是由一名开发人员为开发人员撰写的。但是,如果您计划进行测试、管理或 IT 领域的其他工作,那么其中的一些建议也会对您有用。

他们根本不会雇用你

当你想象许多大学每年都有数百名学生毕业时,你就会感到不舒服。如何与如此庞大的人群竞争?

不幸的是,并非所有毕业生都接受过足够的技术培训。试着问你认识的一些大学生:他的小组中的人如何获得“数据库”或“算法和编程基础”等学科的考试入场券?在一个30人的小组中,最多只有3-5个“先进”的人,他们实际上什么事情都是自己做的。其余的人只需复制他们的内容,填入问题的答案并提交即可。

我自学时就是这样。不过,我的经历可能不具有代表性。所以我向几个不同的学生问了这个问题。答案几乎是一样的。受访者来自不同的大学和学院。我将把有关原因的讨论超出本文的范围。我没有足够的时间进行全面的研究,所以我将根据现有的事实得出结论。

在数百名毕业生中,雇主感兴趣的只有几十人

很少有毕业生能够为有能力、准备充分的学生提供真正的竞争。然而,即使你认真学习,第一次面试后你很可能不会被录用。第二次之后,可能也是如此。一切可能都会好起来,但最好不要为攻击做好准备,而是为围攻做好准备。找工作的失败只是一个改正错误并再次尝试的理由。我不会谈论准备面试的事情。互联网上已经有很多关于这个主题的文章。我只想说,面试中存在一些细微差别,您的培训计划可能不会花时间来解释。自己查找一下这些信息,可能会减少尝试的次数。

疯狂就是对同一个动作的精确重复。一次又一次,希望改变

阿尔伯特·爱因斯坦

为了防止面试变得疯狂,你需要在每次新的尝试后进行改进。记住或写下面试过程中被问到的问题。当您回到家时,请查看此列表并使用互联网检查自己。这样你就会明白你和面试官在哪里犯了错误。这种情况也会发生。回顾或研究你表现不佳的主题,然后重试。

此外,劳动力市场具有明显的季节性。聪明的公司会根据毕业日期来计划招聘。春季的新人职位空缺比其他时间更多。然而,此时的竞争更加激烈。

愚蠢——被解雇

当一个没有经验的人被聘用时,对他就有相应的期望。

这份工作的新人预计将:

  • 通用技术基础知识
  • 研究公司主题领域的具体情况
  • 掌握所使用的工具和实践

一些组织为新来者提供有关所使用的技术、工具和本地程序的培训课程。例如,使用公司电子邮件时的良好礼仪、在 wiki 中更改文档的程序、使用 VCS 和错误跟踪器的本地功能。

还有技术入门课程,但其实用性值得怀疑。如果涉及到就业,那么雇主会相信你有足够的知识水平。最好只是真诚地参加此类课程,作为一个小形式。也许它们实际上会有一些有用的东西。

当你开始工作时,请记住,初学者绝对不会被委托去解决紧急、复杂且同时重要的任务。这些属性很可能只有其中之一。或者简单但紧急:修复布局,向某人发送文件,重现问题。或者很困难,但没有任何完成的希望 - 以便初学者收集更多的耙子。或者说很重要,但是是实验性的。例如,一个大家想要很久的项目,却找不到时间去实施。

掌握这些工具的任务将是“困难的”和人为的。这很可能是主系统的简化版本。此类任务使用与整个项目相同的技术堆栈和相同的领域术语。在这种情况下,执行结果不会提供给最终用户。这可能会让人失去积极性,但最好抵制这种情绪。一项人为的任务必须认真完成,就好像项目的命运取决于它一样。

解决第一个问题的结果将决定不在面试现场的同事对你的第一印象。

工具掌握任务的另一个选项是“在本地机器/测试环境上运行项目”。有时,说明中描述了此过程。但它们通常很旧,有些地方已经过时了。如果您编写新的说明并澄清已出现的问题,您可以为项目带来真正的好处。当然,在大学里你必须为某些学科的报告写一份 RGR。这里几乎是一样的。该文件应反映启动时需要执行的操作。

通常,在测试环境上运行产品的步骤如下:

  • 克隆存储库,切换到某个分支或标签
  • 创建一些配置文件
  • 准备数据库结构
  • 用测试数据填充它
  • 构建或编译项目,
  • 按特定顺序运行一组控制台脚本

系统在本地运行的过程中,难免会出现一些意想不到的问题。

发现问题的解决方案必须添加到部署说明中。那么下次按照说明操作时,这些问题将不再出现。填写配置文件和调用脚本时,需要注意在哪里使用哪个值以及应该匹配什么。例如,如果一个项目是使用 CI 系统组装的,然后通过脚本启动的,那么了解在哪里写入分支名称或提交号就很重要。该脚本恰好涉及传输数据库的 IP 地址或 DNS 名称、其登录名和密码。在这种情况下,您需要知道测试环境使用哪个地址、有哪些登录名以及需要为其指定哪些密码。

有些任务对于经验丰富的开发人员来说可能看起来很简单,但对于实习生来说却具有挑战性。这个是正常的。

开发人员每天都要解决技术问题。有经验的员工以前已经解决了很多问题,而新人还没有处理好。最好的策略是将遇到的所有错误记录在文档“解决${任务名称}的问题”中。对于每个问题,你需要对原因提出一个假设,在互联网上找到解决方案并一一尝试。每次尝试的结果也必须被记录。

以文件形式注册您的研究将使您能够:

  • 从你的头脑中卸下小细节。例如,配置参数、DNS/IP 地址、控制台命令和 SQL 查询。
  • 当任务持续几天时记住“我昨天做了什么”
  • 不要原地踏步。你总是可以阅读你之前所做的事情并了解你又回到了原来的问题
  • 明确回答问题:“你今天做了什么?”即使还没有现成的解决方案。

您需要能够向同事传达任务的状态

有时,同事会对您的成功感兴趣并分享他们的成功。每天或每周为此留出一些时间。

如果你不记录遇到和解决的问题,那么描述你的成功就会像这样:“我试图完成任务,但我做不到。我仍在寻找解决方案。”从这个故事中并不清楚实习生是在做任何事情还是只是坐着看书。他需要帮助吗?与昨天相比,情况有变化吗?

如果您保存一份文档来寻找解决方案,您可以说“我正在尝试完成这项任务。我有这样的错误。我就是这样决定的。我还没有处理过这个问题。有这些假设和解决方案。我现在正在检查它们。”

如果任务可以以任何方式衡量,那么状态应该包含数字。例如,对于“为模块编写单元测试”的任务,您可以说“我计划进行 20 个测试,现在我已经编写了 10 个。”

您提供的详细信息越多,您的同事就越能理解您所做的事情。这将使您的同事对您产生积极的态度,并使他们了解您是否需要帮助。

随时寻求帮助

我在上面写道,当出现问题时,您需要对其原因和可能的解决方案提出假设。然而,这些假设往往是不成立的,独立找到的问题解决方案也行不通。在这种情况下,最好寻求帮助。为了不滥用同事的注意力,你需要亲自解决每个问题。如果你在几个小时内还没有找到解决方案,那么是时候向更有经验的同志寻求建议了。

一个好的起点是问“以前有人遇到过这个问题吗?”并简要描述问题。建议附上一段错误消息或屏幕截图。第一次发送此消息最好是在一些一般的工作聊天中。这样你就不会分散那些真正忙于工作的人的注意力。免费同事将看到您的消息并能够提供帮助。

如果在一般聊天中发出消息后没有人提供帮助,请尝试在休息时间联系一位经验丰富的同事:午餐、喝茶/咖啡、打一场网球或抽烟休息。如果这不起作用,请在会议或站立会议上报告您的困难。

如果已知的问题得到解决,这一切可能就到此为止了。如果问题是新的,那么就会开始调查,有必要根据具体情况采取行动。

最终用户需要的“重要”初学者任务将是无聊且琐碎的。例如,“向报告添加附加列”或“更正打印表单中的拼写错误”或“实现从 DBMS 加载客户端属性的模型方法”。此类任务的目的是让初学者熟悉学科领域并融入日常工作。

不仅从技术上解决问题很重要,而且扩展学科领域的知识也很重要。

术语将出现在任务描述、聊天和对话中。它们可能看起来像熟悉的名词。然而,在信息系统的框架内,它们具有特殊的、更精确的含义。发现的术语的含义最好记录在特殊文档中——术语词典。添加到词典时,写下您对单词的理解就足够了,但要进行真正的解码,最好联系分析师。如果缺少,则去找该项目的老前辈。维护术语词典是熟悉项目主题领域的最简单方法之一。

一旦你与同事找到了共同语言,他们就会开始将你视为平等的专家,而不是新的实习生。

有一些特殊任务,例如“为模块编写单元测试”。你很难长时间陷入困境寻找解决方案。同时,它也相当严肃,不仅仅是为了实习生培训。书面测试通过减少应用程序中的错误并减少人工测试的时间来提高项目的稳定性。在理想的世界中,单元测试是在开发过程中立即编写的,但现实总是不同的。碰巧模块的开发人员将其完全保留在自己的脑海中,并且认为没有必要编写它们。 “一切都已经很明显了,还有什么好测试的呢?”有时模块是以匆忙的方式编写的,没有时间进行单元测试。所以在现实世界中可能不存在单元测试。因此,编写单元测试的任务就交给了初学者。这样,实习生就能更快地适应项目,项目也能节省高薪专家的时间。

碰巧实习生和新人被分配了成熟的测试员的角色。通常,在执行此操作之前,您需要在本地部署产品并阅读需求。因此,新员工预计将:

  • 诸如“如果你这样做,结果就会像这样”之类的问题。这不在要求之内。它应该是?”
  • 错误跟踪器中的任务“需求是这样说的,但实际上它的写法不同。”

对于本文来说,测试的范围太广了。如果您面临类似的任务,请在互联网上搜索完成该任务的最佳方法。

如果你搞砸了,你就会被解雇

在正常的组织中,如果突然发生一名缺乏经验的员工访问某些关键内容并破坏某些内容的情况,那么允许这种情况发生的人将受到指责。因为默认情况下,初学者无法访问关键基础设施。如果有足够的指导,他们不会让所有的狗都浪费在一个没有经验的受训者身上。

如果发生什么事,他们不会因为一件事情而解雇你。人们从错误中学习。搞砸的实习生吸取了宝贵的教训,与其他实习生有很大不同。如果你解雇了一个搞砸的人,其他人就会接替他的位置,以同样的方式搞砸。

最重要的是从错误中吸取教训,不再重蹈覆辙。

如果一个人不从自己的错误中得出结论,那么他们就会试图和他说再见。然而,世界是多种多样的。在一些黑帮组织中,如果你犯了第一个错误,他们就会立即把你扔出窗外。但最好避开此类公司,先进行询问或在面试时了解更多信息。

最好避免发生事故

即使您个人没有因错误而被解雇,此类事件也会给您的团队和整个项目带来不必要的问题。因此,对项目知识库中的数据库、文件、服务实例和文档中的删除或创建表的操作尤其要小心。如果您遇到新连接的地址,请与至少两个不同的人核实可以在那里做什么。检查您在环境中的权限不是通过反复试验,而是通过使用适当的命令。例如,使用“ls”命令删除文件的权限、使用“SHOW GRANTS FOR 'user'@'host';”命令处理 mysql 中的表的权限等。几乎在任何工具中您都会有类似的机会。

编辑文件时,请自己保留一份原件副本,以防万一。

受训者和最终用户之间存在一些障碍。

如果你能立即把你的产品交给消费者,你就不再能找到工作,而是可以开始“自由游泳”了。但是,虽然您没有这样的机会(同时也没有责任),但您需要经历项目控制的几个阶段。
第一个是导师的验证。他从技术角度评价新手的决定。如果尚未指定导师,那么您需要寻找一位导师。为此,您需要选择该项目的一位老前辈,并在休息时请他查看解决方案:问题是否正确解决?如果他开始寻找并做出回应,那么就找到了一位导师。如果他忽略了这一点,那么就值得去问别人了。

下一阶段是质量保证。用俄语-测试人员。苏联风格——标准控制和质量控制部门。他们必须确保受训者的表现与分配给他的任务一致。他们很少会阅读代码。大多数情况下,测试人员会检查开发人员存储在版本控制系统中的构建项目。

第三阶段是发布管理器。可能没有单独的人来完成这项任务,但仍然有人扮演这个角色。他检查测试人员是否已确认该项目可以发布。此后,它开展将产品交付给最终用户的活动。
在小型组织中,由于各种原因,这些障碍可能不存在。然而,他们不会给新手一个改变重要东西的任务。因为没有人需要这种风险。

你需要先参与战斗,然后我们再看看。
拿破仑·波拿巴

我希望这篇文章能帮助您克服不确定性并提交您的第一份简历。当然,你必须先做好准备。但没有必要过度扩张。您很可能已经在大学或学院学习了几年。接下来去哪里?最后,最好是从专家那里听到一次“不”并改正错误,而不是每天对自己说“不”并停止专业成长。

一旦被录用,您需要专注于从实习生成长为成熟的团队成员。这种类型的增长通常伴随着你的工资的增加。

我希望你有耐心和毅力。

只有注册用户才能参与调查。 登录拜托

您在 IT 领域的第一份工作中的首要任务是什么?

  • 复杂的

  • 重要的

  • 紧迫的

  • 以上都不是

75 位用户投票。 20 名用户弃权。

你在第一份工作中首先必须做什么?

  • 本地安装产品

  • 测试现有产品

  • 进行训练、假任务

  • 为客户做一个实验性的、真实的项目

63 位用户投票。 25 名用户弃权。

你们组中有多少学生在培训期间能够独立完成技术科目作业?

  • 1的10

  • 1的5

  • 每一秒

  • 一切,除了极少数例外

70 位用户投票。 19 名用户弃权。

来源: habr.com

添加评论