电影“哈利·波特与阿兹卡班的囚徒”的画框这个世界的问题是,受过良好教育的人们充满怀疑,白痴充满信心
查尔斯·布科夫斯基
最近,我举办了另一对一对一的编程课程。 与普通班级不同,主题不是语言的构建,也不是解决问题的问题。 学生分享了他对未来就业的担忧。 学生本人很聪明。 参加这些课程的人之一以独特的解决方案比任何人都更快地完成了整个课程,但始终真诚地低估了自己。 我认为,这种怀疑仅是由于缺乏信息而引起的。 在本课程中,我试图填补这一空白。
问题是这样的:
- 每年都有许多学生从大学毕业,他们都去找工作。 这是很多人。 他们可能会选出最好的,但我找不到位置。
- 如果我搞砸了立即被解雇怎么办?
- 如果在工作过程中他们意识到我很愚蠢又被踢出去怎么办?
这个学生不是我回答类似问题的第一人。 很多人有他们,通常不得不不加准备地交谈。 这次我决定在笔记本上写独白。 我以为会出现几段,但我打了整篇文章。
本文从我的角度并根据我的经验描述了该视图。 但是,我们的世界非常多样化,其中发生了许多惊人的事情。 如果您不同意某件事或您的经历有所不同,请发表评论。
本文是由开发人员撰写的。 但是,如果您打算在IT中进行测试,管理或其他任何事情,那么一些技巧也将对您有用。
他们根本不会雇用
当您想象每年有成百上千的学生从许多大学毕业时,就会感到不舒服。 如何与如此庞大的人群竞争?
不幸的是,并不是所有的毕业生都接受了足够的技术培训。 尝试问一些您认识的大学生:他的小组中的人们如何被“数据库”或“算法和编程基础”等学科的考试录取? 在一个最多30人的小组中,有3-5个“先进”的人自己真正做过一切。 剩下的只是简单地从他们身上写下来,野牛回答问题并通过。
那是我学习的时候。 但是,我的经验可能没有代表性。 因此,我向几个不同的学生问了这个问题。 答案大致相同。 受访者来自不同的大学。 我将讨论超出本文讨论范围的原因。 我还不足以进行全面的研究,因此我将从现有的事实中得出一个结论。
在数百名毕业生中,只有几十个雇主感兴趣
很少有毕业生能为有能力的学生做好充分的准备而进行真正的竞争。 但是,即使您是真诚地学习,在第一次面试之后您也很可能不会被录用。 在第二次之后,大概也是。 一切都能顺利进行,但最好不要进行突击,而要进行围攻。 尝试解决失败的尝试只是解决错误并重试的借口。 我不会谈论面试的准备。 Internet上已经有很多关于此主题的文章。 我只能说通过面试时会有些细微差别,因此不太可能分配时间来解释您的培训计划。 自己查找此信息,可以减少尝试次数。
疯狂是同一动作的精确重复。 一次又一次地希望改变
阿尔伯特·爱因斯坦
为了确保面试不会变得疯狂,每次尝试之后,您都需要变得更好。 记住或写下面试中被问到的问题。 回到家后,浏览此列表并使用Internet进行测试。 这样您就可以了解您在哪里错了,在哪里-面试官。 这也会发生。 重复或研究您回答不佳的主题,然后重试。
此外,劳动力市场存在明显的季节性。 胜任的公司会根据从教育机构毕业的日期来计划招聘。 在春季,对于初学者的空缺比其他时间更多。 但是,此时的竞争较高。
哑巴-被解雇
当一个没有经验的人被录用时,对他会有相应的期望。
从新人上班期望:
- 通用技术基础知识
- 研究公司主题领域的特征
- 掌握使用的工具和实践
一些组织为初学者提供有关技术,工具和本地实践的培训课程。 例如,使用公司邮件时的格式规则,在Wiki上更改文档的过程,使用VCS的本地功能和错误跟踪器。
仍然有技术入门课程,但是它们的用处不明确。 如果涉及到就业,那么雇主应确保您具有足够的知识水平。 最好简单地以真诚的态度参加此类课程,这只是一个小小的手续。 也许它们确实会有用。
当您开始工作时,请记住,初学者将不会被委托去解决紧迫,复杂而又重要的任务。 这些属性很可能只有一种。 或者简单但紧急:纠正布局,向某人发送文件,重现问题。 还是很困难,但是没有完成的希望-为了让初学者收集更多的耙子。 或重要,但实验。 例如,一个每个人都渴望的项目,但不能为实施分配时间。
工具开发的任务将是“复杂的”和人为的。 最有可能它将是主系统的简化版本。 在此类任务中,将使用与整个项目中相同的技术堆栈和相同的领域术语。 在这种情况下,执行结果将不会提供给最终用户。 它可能会降低动力,但是最好还是抵制这种情绪。 必须真诚地完成人为的任务,就像项目的命运取决于它。
解决您的第一个任务的结果将是不在面试中的同事对您的第一印象。
掌握工具包任务的另一个版本是“在本地计算机/测试环境上运行项目”。 有时说明中会描述此过程。 但是它们通常很旧,有时是无关紧要的。 如果编写新的说明并澄清出现的问题,则可以为项目带来真正的好处。 当然,在大学里,我不得不写一份RGR报告某些学科。 这里几乎一样。 该文档应反映必须运行才能执行的操作。
通常,在测试环境中启动产品的步骤大致如下:
- 克隆存储库,切换到某个分支或标签
- 制作一些配置文件
- 准备数据库结构
- 用测试数据填充
- 建立或编译项目
- 按特定顺序运行一组控制台脚本
在启动系统的过程中,不可避免的问题将不可避免地在本地发生。
找到的问题解决方案需要添加到部署说明中。 然后,下次您按照说明进行操作时,将不再出现这些问题。 在填写配置文件和调用脚本时,您需要注意在何处使用了什么值,以及该值应与哪个值重合。 例如,如果一个项目是使用CI系统构建的,然后通过脚本启动,则了解在何处写入分支名称或提交编号非常重要。 碰巧的是,脚本涉及数据库的IP地址或DNS名称,其用户名和密码的传输。 在这种情况下,您需要知道用于测试环境的地址,那里有哪些登录名以及需要为其指定哪些密码。
对于有经验的开发人员而言,某些任务可能看起来很简单,并且会导致受训人员感到困难。 这是正常现象。
开发人员每天都必须解决技术问题。 经验丰富的员工以前已经解决了许多问题,而新员工尚未解决。 最好的策略是记下文档“使用$ {task name}解决问题”中遇到的所有错误。 对于每个问题,您都需要提出有关原因的假设,在Internet上找到解决方案,然后依次尝试。 每次尝试的结果也需要记录。
以文档形式进行研究将允许:
- 从头上卸下小零件。 例如,配置参数,DNS / IP地址,控制台命令和SQL查询。
- 当任务延长几天时,请记住“昨天我做了什么”
- 不要四处走动。 您总是可以阅读以前所做的事情,并了解您已经回到了最初的问题。
- 明确回答以下问题:“您今天做了什么?” 即使还没有现成的解决方案。
您需要能够将任务的状态告诉同事
同事会不时对您的成功感兴趣并分享您的成功。 每天或每周分配一点时间。
如果您不跟踪遇到和解决的问题,那么您对成功的描述将如下所示:“我尝试完成任务,但是我做不到。 到目前为止,我正在寻找解决方案。” 从这样的故事中,并不清楚受训者是做过什么还是只是坐在哈伯阅读。 他需要帮助吗? 自昨天以来情况有变化吗?
如果保存文档以寻找解决方案,您可以说:“我正在尝试执行此任务。 我有这样的错误。 所以我决定这样。 我还没有做到这一点。 有这样的假设和解决方案。 现在,我正在检查它们。”
如果可以至少以某种方式衡量任务,那么状态中的数字应该会响起来。 例如,对于“编写模块的单元测试”任务,我们可以说“我计划做20个测试,现在我写了10个”。
您提供的详细信息越多,您的同事就会越了解您的工作。 这将对同事形成积极的态度,并使他们了解您是否需要帮助。
随时寻求帮助。
我在上面写道,当出现问题时,您需要提出关于其原因和解决方案的假设。 但是,碰巧这种假设是没有道理的,而且独立找到的问题解决方案不起作用。 在这种情况下,最好寻求帮助。 为了不浪费同事的注意力,您需要自己解决每个问题。 如果在几个小时内找不到解决方案,那么该是时候向更有经验的战友寻求建议了。
最好从以下问题开始:“以前有人遇到过问题吗?” 简要说明问题。 建议附上一条错误消息或屏幕截图。 这是第一次,最好是将其发送到一些常规聊天上班。 因此,您不会打扰那些真正忙碌的人的工作。 同时,免费的同事会看到您的消息,并会提供帮助。
如果在常规聊天后没有人提供帮助,请在休息时间尝试与有经验的同事约会:午餐,茶/咖啡,打网球或抽烟。 如果这不起作用,则立即报告您的困难或站起来。
解决已知问题时,这可能会结束。 如果问题是新的,则将开始调查,有必要根据情况采取行动。
最终用户需要的对于初学者来说“重要”的任务将是无聊的并且很小。 例如,“在报告中添加其他列”或“更正印刷形式的错字”或“实施用于从DBMS加载客户端属性的模型方法”。 此类任务的目标是使初学者熟悉主题领域并融入日常工作中。
重要的是,不仅要从技术上解决问题,而且要扩大学科领域的知识。
在任务描述中,在聊天和对话中会找到术语。 它们看起来像是熟悉的长期名词。 但是,在信息系统的框架内,它们具有特殊,更精确的含义。 检测到的术语的含义最好写在特殊文档-术语表中。 将其添加到字典中后,就足以表达您对单词的理解,对于真实的笔录,最好与分析人员联系。 如果他不在的话,那就去老项目吧。 维护术语表是熟悉项目主题领域的最简单方法之一。
一旦发现与同事有共同语言,他们就会开始在您看来不是新手培训生,而是平等的专家。
有一些特殊的任务,例如“为模块编写单元测试”。 寻找解决方案很难长时间坚持下去。 而且,她足够认真,不仅要培训受训者。 书面测试通过减少应用程序中的错误并减少人员进行测试的时间来提高项目的稳定性。 在理想的世界中,单元测试是在开发过程中立即编写的,但现实情况一如既往。 碰巧模块的开发人员将其完全掌握在自己的脑海中,看不到需要编写它们。 “一切都很明显,有什么要测试的?” 有时,模块是在紧急模式下编写的,没有足够的时间进行单元测试。 因此,在现实世界中,单元测试可能不是。 因此,编写单元测试的任务委托给初学者。 因此,受训人员将能够快速适应该项目,并且该项目将节省更多高薪专家的时间。
恰恰是实习生和初学者被指定为成熟的测试人员。 通常,在此之前,您需要在本地部署产品并阅读要求。 由于新员工的预期:
- 诸如“如果您喜欢这样的问题,那么结果就会像这样。 要求中不需要这样做。 应该怎么办?”
- 错误跟踪器中的任务“在要求中是这样写的,但实际上是不同的。”
测试是本文的一个过于广泛的领域。 如果您承担了类似的任务,请在Internet上搜索实现此任务的最佳方法。
Nakosyachite-被解雇
在一个正常的组织中,如果突然发生一个没有经验的员工获得关键的东西并毁了某些东西的情况,那么犯了这个错误的人就会被指责。 因为默认情况下,新手无法访问关键基础架构。 在适当的指导下,没有经验的培训生不会放任所有的狗。
如果突然发生某些事情,它们将不会因一次事件而被开除。 人们从错误中学习。 正在运行的学员接受了宝贵的课程,这与其他学员截然不同。 如果解雇了这位猛击者,那么另一个人将取代他,并以同样的方式割草。
最主要的是从错误中学习,而不再重犯。
如果一个人没有从错误中得出结论,那么他们将试图向他告别。 但是,世界是多种多样的。 在某些黑帮组织中,他们可以立即丢出第一个错误的窗口。 但是最好避免这样的公司,您应该在面试时首先向他们询问或了解更多信息。
最好避免事故
即使您没有亲自为门框开除,这样的事件也会给您的团队和整个项目带来不希望的问题。 因此,在删除或创建项目知识库中的数据库,文件,服务实例和文档中的表的操作时要格外小心。 如果您符合新连接的地址,请与至少两个不同的人确认在那儿可以做什么。 不是通过反复试验而是通过适当的命令来检查您在环境上的权限。 例如,使用`ls`命令删除文件的权限,使用`SHOW GRANTS FOR'user'@'host';命令使用mysql中的表的权限,等等。 在几乎所有乐器中,您都有类似的机会。
编辑文件时,以防万一,请保留原始文件的副本。
在实习生和最终用户之间建立了一些障碍。
如果您可以立即将产品提供给消费者,那么您将无法找到工作,而是开始“自由游泳”。 但是,尽管您没有这样的机会(同时也没有责任),但是您需要经历对项目的几个控制阶段。
第一个是导师检查。 他从技术角度评估了初学者的解决方案。 如果尚未任命导师,则需要找到他。 为此,您需要从项目的老员工中选择一个人,并在休息时间请他去看看解决方案:问题是否得到正确解决? 如果您开始寻找答案,就会找到导师。 如果您忽略它,那么您应该问别人。
下一阶段是质量保证。 俄语-测试人员。 在苏联-标准控制和质量控制。 他们必须确保实习生的工作结果与分配给他的任务相符。 它们很少会被读入代码中。 测试人员通常会检查组装好的项目,开发人员会将其保存在版本控制系统中。
第三阶段是发布管理器。 可能没有个人来执行此任务,但是仍然有人扮演该角色。
他检查测试人员是否已确认可以发布该项目。之后,他执行将产品交付给最终用户的操作。在小型组织中,由于各种原因,可能没有这些障碍。但是,他们不会为初学者设置更改重要任务的任务。因为没有人需要这种风险。您必须首先参与战斗,然后才能看到。
拿破仑·波拿巴
希望本文能帮助您克服不安全感并提交您的第一份简历。当然,您必须先准备。但不要过度拧紧。您很可能已经在大学学习了几年。在哪里进一步拉?最后,最好是一次听到专家的反对,而不是继续犯错误,而不是每天对自己说“不”并停止职业发展。就业后,您需要集中精力从实习生发展为团队的正式成员。这种增长通常伴随着您的薪水增加。祝您有耐心和恒心。