如何聘请印度软件外包人员?_聘请开发人员时我要寻找的5件事

如何聘请印度软件外包人员?

Hint: it’s not qualifications

提示:这不是资格

I’ve led many hiring processes, from junior technicians to senior software engineers. As a developer, I’ve also successfully been through the full recruitment process of many different types of company, from huge multi-nationals to tiny startups. In this post I’ll share my main takeaways from 20 years experience.

从初级技术人员到高级软件工程师,我领导了许多招聘流程。 作为开发人员,我还成功地完成了从大型跨国公司到小型初创公司的许多不同类型公司的整个招聘过程。 在这篇文章中,我将分享我20年经验的主要收获。

1.基本编码技巧 (1. Basic Coding Skills)

Method of assessment: informal programming test during interview

评估方法:面试中的非正式编程测试

It’s very difficult to assess someone’s programming ability. For a start what does “programming ability” actually mean? Language knowledge plays a part, but so do problem solving, time management skills, understanding of algorithms and data structures. You get the idea.

评估某人的编程能力非常困难。 首先,“编程能力”实际上是什么意思? 语言知识起着一定的作用,但解决问题,时间管理技能,对算法和数据结构的理解也是如此。 你明白了。

Some interview processes test programmer knowledge, but I find this highly problematic. Most languages are so vast that someone could be an expert and still get tripped up by a few niche questions. Other processes attempt to test skills, possibly through an automated test. These too are unsatisfactory. Being good at these kinds of tests is in itself a skill that can be learned and practiced. Someone could be great at passing these tests, but terrible at other aspects of programming.

一些面试过程会测试程序员的知识 ,但是我发现这存在很大的问题。 大多数语言是如此广泛,以至于有人可以成为专家,但仍然会被一些小众问题困扰。 其他过程尝试通过自动测试来测试技能。 这些也不能令人满意。 擅长于这类测试本身就是一种可以学习和实践的技能。 有人可能会通过这些测试,但是在编程的其他方面却很糟糕。

I’ve concluded that it’s pointless trying to exhaustively test someone’s coding ability, in a “1 to 10” kind of way. Instead, I look on the coding test as a way to rule out people who absolutely can’t code. So we’re testing for a negative.

我得出的结论是,尝试以“ 1到10”种方式全面测试某人的编码能力毫无意义。 相反,我将编码测试视为排除绝对不能编码的人的一种方法。 因此,我们正在测试否定因素。

I also feel that the coding test should be an opportunity for discussion, and an insight into the candidate’s thought processes rather than a straight pass / or fail. Yes, the code they produce should meet the spec, but through think-out-loud programming and a bit of Q & A, we can get much more interesting insights into why a candidate did things a certain way.

我还认为编码测试应该是一个讨论的机会,并且应该是对候选人思维过程的一种见识,而不是直接的通过/失败。 是的,他们产生的代码应该符合规范,但是通过大声的编程和一些问答,我们可以更有趣地了解候选人为什么以某种方式做事。

So, for the initial coding test I will present a relatively easy problem that all programmers should be able to solve quite quickly. A well formed problem will allow for a variety of different approaches, which then open the possibility of discussion.

因此,对于初始编码测试,我将提出一个相对简单的问题,即所有程序员都应该能够很快解决。 一个格式正确的问题将允许采用各种不同的方法,从而为讨论提供了可能。

Good examples of such questions would be:

此类问题的好例子是:

  1. Write a function to reverse a string (choice of in-place or modified copy would be up to the candidate and a good discussion point)

    编写一个函数以反转字符串(就地选择或修改后的副本取决于候选者和良好的讨论要点)
  2. Write a function to return the angle between the hands on a clock given the time. Again, this could be solved in a variety of ways.

    编写一个函数以返回给定时间的时钟指针之间的角度。 同样,这可以通过多种方式解决。
  3. Write a function that calculates the first n values in the Fibonacci sequence. (A definition of the Fibonacci sequence is given as part of the test). This could be solved iteratively or recursively, also good discussion points.

    编写一个函数来计算斐波那契数列的前n值。 (斐波纳契数列的定义作为测试的一部分给出)。 这可以迭代或递归解决,也可以很好地讨论。

Many such examples can be found online, for example here. Note, that with these questions I’m not looking for that one right solution. I’m looking to see how the candidate approaches the problem, one of the possible solutions, and some good follow-up discussion. Only candidates who fail to produce any kind of working solution in the time given will fail this part of the process.

可以在网上找到许多此类示例,例如在此处 。 注意,关于这些问题,我不是在寻找一种正确的解决方案。 我希望了解候选人如何解决问题,可能的解决方案之一以及一些良好的后续讨论。 只有在给定时间内未能提供任何可行解决方案的候选人才能通过该过程的这一部分。

2.学习能力 (2. Ability To Learn)

Method of assessment: CV, interview, portfolio

评估方法:简历,面试,作品集

Technology is constantly changing, new languages are emerging others are in decline. Within languages, frameworks also come, go, and evolve. This wonderful infographic sums this up perfectly.

技术在不断变化,新的语言正在出现,其他的语言正在下降。 在语言中,框架也可以来,去和发展。 这个美妙的信息图表完美地总结了这一点。

Given this situation, I rate ability to learn new skills quickly as a very important quality for a developer. Developers absolutely must be able to track changing technologies in their field and know when to adopt them if needed.

在这种情况下,我将快速学习新技能的能力视为对开发人员非常重要的素质。 开发人员绝对必须能够跟踪其领域中不断变化的技术,并知道何时需要采用它们。

The way I assess this within an interview is simply by asking the candidate to talk through some examples where they’ve needed to learn and apply a new skill in their previous roles. A red flag in terms of adaptability would be someone who has used just one technology through their career even when it may not be the best tool fo the job. An ideal answer would include discussion on when the candidate has evaluated a range of technology options, and good reasoning for choosing a particular one. Portfolio and CV can also provide evidence for exposure to a range of technologies.

我在面试中对此进行评估的方式只是通过让应聘者讲一些示例,说明他们在以前的职位中需要学习和应用新技能的地方。 就适应性而言,危险的标志是在整个职业生涯中仅使用一种技术的人,即使该技术可能并不是工作的最佳工具。 理想的答案应包括讨论应聘者何时评估了一系列技术选择,以及选择特定选择的良好理由。 投资组合和简历也可以为接触各种技术提供证据。

3.解决问题的能力 (3. Problem Solving Skills)

Method of assessment: practical project, interview

评估方法:实际项目,面试

If candidates pass the initial “filter” test, described above, I then like to engage them in a more in-depth project. Ideally, this involves some time (maybe half a day) working with the team on actual product work, which they could of course be paid for. Alternatively it might be an artificial project that is similar to the kind of problem they would encounter in their job. Examples would be:

如果考生通过了上述的初始“筛选”测试,那么我想让他们参与更深入的项目。 理想情况下,这需要花费一些时间(可能是半天)与团队一起进行实际的产品工作,而他们当然可以为此付费。 另外,它可能是一个人工项目,类似于他们在工作中会遇到的问题。 例如:

  • write a class that encapsulates a piece of work to be carried out on a background thread and a lock-free mechanism for scheduling that work

    编写一个类,该类封装要在后台线程上执行的工作,以及用于调度该工作的无锁机制
  • write a UI for displaying table data from an API, and modifying cells in the table, writing changes asynchronously to the API

    编写用于显示来自API的表数据的UI,并修改表中的单元格,将更改异步写入API
  • design a micro-service based architecture for analysing photographs uploaded by users using deep learning to identify objects in the photo

    设计基于微服务的架构,用于分析用户使用深度学习上传的照片来识别照片中的对象

Obviously the precise details of this task will vary greatly depending on the nature of your business and the role in question, but hopefully this gives an idea of the level of abstraction.

显然,此任务的确切细节将根据您的业务性质和所涉及的角色而有很大的不同,但是希望可以对抽象级别有所了解。

What I’m looking for is:

我正在寻找的是:

  • Does the candidate manage their time effectively to produce a working solution, or they spend too much time on one aspect?

    候选人是否有效地管理自己的时间以产生可行的解决方案,还是在一个方面花费过多时间?
  • Do they work effectively with other team members (even if it is just to ask questions and establish scope) or do they fly completely solo?

    他们是否与其他团队成员有效地合作(即使只是问问题和确定范围),还是完全单飞?
  • Have they fully thought-through the problem, and possible approaches, or do they just dive straight into to a solution?

    他们是否已对问题和可能的方法进行了全面思考,还是只是直接研究解决方案?

As with the initial filter test, talking through the solution is a key part of this. I’m looking for an explanation as to why the candidate has gone a particular route as much as what they’ve implemented.

与最初的过滤器测试一样,讨论解决方案是其中的关键部分。 我正在寻找一种解释, 说明候选人为什么要按照自己的实现方式走特定路线。

4.完成事情 (4. Getting Things Done)

Method of assessment: interview, portfolio

评估方法:面试,作品集

As stated by Joel Spolsky in his excellent Guerrilla Guide to Interviewing, what we’re really looking for when hiring a developer is people who are

正如Joel Spolsky在其出色的《 游击面试指南》中所述 ,雇用开发人员时,我们真正要寻找的是那些

  1. Smart, and

    聪明和
  2. Get things done.

    把事情做完。

We’ve already discussed a few ways of measuring the “smart” dimension, and maybe the problem solving test goes a little of the way on “get things done”, but how do we drill down on that? It’s the ability to see a project through from beginning to end, to ship code or project on time. Not everyone can do this, and many people skip things out, or they overcommit to the wrong thing and end up going down a rabbit hole.

我们已经讨论了几种衡量“智能”维度的方法,也许解决问题的测试在“完成任务”方面略有进展,但是我们如何深入研究呢? 这是从头到尾查看项目,按时交付代码或项目的能力。 并非所有人都能做到这一点,许多人跳过了某些事情,或者他们过度致力于错误的事情 ,最终陷入困境。

Aside from the practical skills test, a good way to assess this is the candidate’s portfolio. Do they have a track record of finishing projects, and shipping code to actual users? Or is their GitHub profile littered with unfinished work that no-one has ever used. Glancing at portfolio can be followed up by interview discussion. If someone was involved in a successful project, what was their role, how did they contribute to it getting shipped? Can they give other examples where they’ve Got Things Done, go into detail about how?

除了实践技能测试以外,评估此技能的一个好方法是候选人的投资组合。 他们是否有完成项目的记录,并向实际用户发送代码? 还是他们的GitHub个人资料中散布着从未有人使用过的未完成的工作。 可以通过访谈讨论跟进投资组合。 如果有人参与了一个成功的项目,他们的角色是什么,他们如何为项目的交付做出贡献? 他们能否举其他例子说明他们做过的事情,详细介绍如何做?

5.组织适应度 (5. Organisational Fit)

Method of assessment: interview

评估方式:面试

The final thing I look for when hiring is organisational fit. This concerns how well they will fit in with both the individual team they will be placed in as well as the organisational culture as a whole. This is very much a subjective judgement by the hiring panel, and of course we all bring our own biases to the table, so it’s important to have the policies in place to deal with that.

招聘时我要寻找的最后一件事是组织适合度。 这关系到他们将如何适应他们所处的单个团队以及整个组织文化。 这在很大程度上是招聘小组的主观判断,当然,我们每个人都会提出自己的偏见,因此,制定适当的政策来应对这一点很重要。

For example, a company may have a policy to increase the diversity of its workforce in terms of gender, ethnicity or some other factor. In this instance “cultural fit” may actually mean seeking out someone who is different to rather than aligned with the existing company demographics.

例如,公司可能有一项政策,以从性别,种族或其他因素的角度增加其员工队伍的多样性。 在这种情况下,“文化契合度”实际上可能意味着寻找现有公司人口统计数据不同而不是现有公司人口统计数据保持一致的人。

Team fit would be more about complementing the team in terms of skillset. Again diversity is a good thing to aim for here, so if you already have someone on the team who is very strong on architecture, and two shortlisted candidates that major on architecture or UI respectively, there may be a case for hiring the UI person on the grounds of increasing the skills base within the team.

团队合作更像是在技能方面对团队进行补充。 再次,多元化是在这里瞄准的好事,因此,如果您团队中已经有一个非常擅长建筑学的人,并且有两个分别入围建筑学或UI专业的入围候选人,则可能有必要在此聘请UI人增加团队内部技能基础的理由。

最后的想法 (Final Thoughts)

Hiring is difficult and costly. None of these things are easy to measure. My final advice would therefore to be to make the hiring process a conversation and not a test. Each stage, (informal chat / screen, initial test, practical test, interviews etc) should be viewed as an opportunity for discussion rather than a hurdle for the candidate to jump over. If we’re going to hire the best candidates we need to give them the opportunity to show what they can do.

招聘既困难又昂贵。 这些东西都不容易测量。 因此,我的最终建议是使招聘过程成为对话而不是测试。 每个阶段(非正式的聊天/屏幕,初步测试,实践测试,面试等)都应被视为讨论的机会,而不是候选人跳过的障碍。 如果我们要聘用最好的候选人,我们需要给他们机会展示他们的能力。

翻译自: https://medium.com/swlh/5-things-i-look-for-when-hiring-a-developer-5d15e383d5a4

如何聘请印度软件外包人员?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值