任务编码_得到了带回家的编码任务,这是如何准备它

任务编码

Do you want to do great on your next take-home assignment? If so, this article is for you.

您想在下一次带回家的工作上做得更好吗? 如果是这样,那么本文适合您。

Reviewing take-home assignments is part of my job, and I’ve seen many candidates make common mistakes repeatedly on theirs. And they often happen even before the candidate launches their IDE to start coding.

复习带回家的任务是我工作的一部分,而且我已经看到许多候选人反复犯下常见错误。 而且它们甚至经常在候选人启动其IDE开始编码之前发生。

I want to mention three crucial points to help you prepare the best assignment:

我想提到三个关键点,以帮助您准备最好的作业:

  • Understand the assignment: Solving the wrong problem can cost you the job.

    了解任务:解决错误的问题可能会导致您的工作减少。
  • Think about the solution thoroughly: Solve the problem in your head before solving it in the code.

    彻底考虑解决方案:在代码中解决问题之前,先解决问题。
  • Choose technologies wisely: The best language to do the assignment is the one you have the most experience with.

    明智地选择技术:最好的语言是您最有经验的语言。

Let’s start.

开始吧。

为什么首先了解作业至关重要? (Why Is It Crucial to First Understand the Assignment?)

Software engineering is more about understanding the problem and coming up with the right solution than technical abilities alone. Here is the difference between software engineering and coding: Software engineering focuses on creating business value by addressing the correct problems. Failing to understand the needs of the business is the most common reason why software projects fail. Therefore, understanding the goal is undoubtedly the most crucial part of any take-home assignment.

软件工程更多的是了解问题并提出正确的解决方案,而不仅仅是技术能力。 这是软件工程和编码之间的区别:软件工程专注于通过解决正确的问题来创造业务价值。 无法理解业务需求是软件项目失败的最常见原因。 因此,毫无疑问,了解目标是任何实干任务中最关键的部分。

If you do not grasp what you need to do, you’re starting on the wrong foot. No matter how much your technical abilities shine — and even if you create the perfect code — the chances of getting hired with a solution to an irrelevant problem are quite slim. Your technical skills are useless if you’re not solving the correct problem.

如果您不了解需要做的事情,那么您就错了。 不管您的技术能力有多出色,即使您创建了完美的代码,也都很难找到解决不相关问题的解决方案。 如果您没有解决正确的问题,那么您的技术技能将毫无用处。

When you fail to understand an assignment’s requirements, the employer will assume that this is how you work on real projects.

当您不了解任务的要求时,雇主将假定您就是您在实际项目中的工作方式。

如有疑问,请提问 (Ask questions when you’re in doubt)

Making assumptions is a common mistake that can lead you to solve the wrong problem. Instead, do not hesitate to contact the recruiter and ask for clarification. Ask concise and precise questions. Some companies leave out details on take-home assignments on purpose to see if you analyze the requirements well.

做出假设是一个常见错误,可能会导致您解决错误的问题。 相反,请不要犹豫,与招聘人员联系并要求澄清。 提出简洁准确的问题。 一些公司故意遗漏带回家作业的详细信息,以查看您是否很好地分析了需求。

Asking the right questions can get you one step closer to getting hired — even before you start working on the assignment.

提出正确的问题可以使您比被录用更近一步-甚至在开始工作之前。

Understanding the problem is half of the solution. Nowadays, even machines can code what is being asked of them.

了解问题是解决方案的一半。 如今,即使机器也可以对所要询问的内容进行编码

为什么不立即跳入代码? (Why Not Jump Into the Code Right Away?)

Evaluating solutions before implementing them is an essential skill that can determine the software project’s success. Employers discover whether or not you possess this skill by reviewing your assignment. That’s why coming up with a comprehensive solution and verifying it before actually coding is essential.

在实施解决方案之前评估解决方案是一项基本技能,可以确定软件项目的成功。 雇主可以通过查看作业来发现您是否具备这项技能。 这就是为什么在实际编码之前想出一个全面的解决方案并进行验证的原因。

用简单的英语写下您的解决方案 (Write your solution down in plain English)

An excellent way to verify a solution is to write it down, preferably using a format such as Architecture Decision Record. Writing a technical solution in detail helps you find problems and bugs with your approach because it forces you to organize your thoughts into smaller pieces and think deeply. Try to answer as many questions as possible in your writing:

验证解决方案的一种极好的方法是将其写下来,最好使用诸如Architecture Decision Record之类的格式。 详细编写技术解决方案可帮助您找到解决方法的问题和错误,因为这会迫使您将想法整理成小块并进行深入思考。 尝试在写作中回答尽可能多的问题:

  • Does it solve the problem, including edge cases?

    它能解决问题,包括边缘情况吗?
  • Does it meet performance expectations?

    它符合性能预期吗?
  • What are the trade-offs?

    权衡是什么?
  • What are the alternatives?

    有哪些选择?

You may develop ways to optimize your approach or find alternative solutions during this in-depth thinking process.

您可以在这种深入的思考过程中开发出优化方法或找到替代解决方案的方法。

一种解决方案通常是不够的 (One solution is often not enough)

Once you find a solution and write it down, don’t start coding right away. Try to find another approach because most take-home assignments are solved with a simple solution/approach. But there is often a better solution/approach that is usually found by senior engineers.

一旦找到解决方案并将其写下来,就不要立即开始编码。 尝试找到另一种方法,因为大多数带回家的任务都是通过简单的解决方案/方法解决的。 但是,通常高级工程师通常会找到更好的解决方案/方法。

If there are multiple solutions, compare them and write down the differences. Which one has the best performance? What are the time and space complexities of each possible solution? How much effort does each one require? Are there any drawbacks? You can then conclude the document by writing which solution you decide to implement.

如果有多个解决方案,请比较它们并记下差异。 哪一个表现最好? 每个可能解决方案的时间和空间复杂度是多少? 每个人需要多少努力? 有什么缺点吗? 然后,您可以通过编写决定实施的解决方案来总结文档。

The opposite of finding a solution is jumping into coding right away. Coding without prior thinking is a mistake because you start working on the problem blindfolded. It often leads to incomplete or suboptimal solutions. You may miss the big picture while working on individual details.

找到解决方案的反义词是立即跳入编码。 没有事先思考就进行编码是一个错误,因为您开始蒙住眼睛处理问题。 它通常导致不完整或次优的解决方案。 在处理单个细节时,您可能会错过全局。

Bonus tip: Don’t forget to include a summary of your writings in your assignment's readme.

温馨提示:不要忘了在作业的自述文件中包含摘要。

明智地选择技术堆栈 (Choose the Tech Stack Wisely)

Once you have a solution written down, you are ready to start the assignment. But before you do, you may need to choose the technologies you want to use.

写下解决方案后,就可以开始分配了。 但是在您这样做之前,您可能需要选择要使用的技术。

Some assignments give you the full freedom to choose whatever language you wish. Assignments requiring you to work with a specific technology often have room for selecting some other technologies. For example, an assignment may ask you to prepare a to-do app with Vue.js without mentioning a specific test framework.

有些作业可以让您完全自由地选择所需的语言。 需要您使用特定技术的作业通常具有选择其他一些技术的空间。 例如,一个作业可能要求您使用Vue.js准备待办事项应用程序,而没有提及特定的测试框架。

Don’t assume that your potential employer will be more impressed if you code in Rust rather than JavaScript.

不要以为如果您使用Rust而不是JavaScript进行编码,那么您的潜在雇主会印象深刻。

Play to your strengths when it comes to technologies. Choose the languages, frameworks, and tools you are most experienced in. Implementing your solution with the technologies you perform best with has the following advantages:

在技​​术方面发挥自己的优势。 选择您最有经验的语言,框架和工具。使用性能最佳的技术实施解决方案具有以下优点:

  • It makes sure that your review interview goes smoothly. The interviewer may ask about the internal workings of your chosen technology. Choosing a new language here will not leave a good impression. The employer needs to assess how deeply you know your everyday technologies. If an employer wants to determine how quickly you can learn about new technology, they will specifically ask for it.

    这样可以确保您的审查面试顺利进行。 面试官可能会询问您选择的技术的内部运作情况。 在这里选择一种新语言不会给人留下很好的印象。 雇主需要评估您对日常技术的了解程度。 如果雇主想确定您能多快学习新技术,他们会特别要求它。
  • It takes less time. You may need to spend more time to complete the assignment because you need to learn new technologies first. Submitting your assignment as early as possible helps with getting ahead of the other candidates.

    花费的时间更少。 您可能需要花费更多的时间来完成作业,因为您需要首先学习新技术。 尽早提交作业有助于领先其他候选人。
  • It allows you to avoid making mistakes. You may make beginner’s mistakes when you work with new technology. You can also miss the best practices about it. You may end up with a solution that takes an object-oriented approach in Scala.

    它使您避免犯错。 使用新技术时,您可能会犯初学者的错误。 您也可能会错过关于它的最佳实践。 您可能最终会得到一个在Scala中采用面向对象方法的解决方案。

If you have experience with multiple languages, choose the one that the job description mentions. If none are mentioned, select the language that the company you’re applying to uses. Showing your skills on their technology stack will be considered as a plus.

如果您有使用多种语言的经验,请选择职位描述中提到的一种。 如果未提及,请选择您要申请的公司使用的语言。 在他们的技术堆栈上显示您的技能将被视为加分。

Now that you have chosen the technology stack, you are ready to implement your solution.

既然您已经选择了技术栈,就可以实施解决方案了。

Thanks for reading!

谢谢阅读!

翻译自: https://medium.com/better-programming/got-a-take-home-coding-assignment-here-is-how-to-prepare-for-it-bd04c2f5d972

任务编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值