结对编程

Some companies prefer to pair program with candidates to get a feel for working with them while gauging their skills. I have been in a couple of those companies, and more often than not, one of my tasks was to be the pair in those interviews.

一些公司更喜欢将程序与候选人配对,以在评估其技能的同时获得与他们合作的感觉。 我曾在其中一些公司工作过,而且我经常要做的一个任务就是成为这些访谈中的一对。

In my previous job with a consulting company, we had teams for each project. Some projects had NDAs, and as such, anyone joining that team had to sign in. This led to difficulties in using those codebases when pairing with potential employees. As a result, we mostly paired on either internal projects or on projects where the client was okay with showing code to candidates.

在我之前在一家咨询公司的工作中,每个项目都有团队。 有些项目具有NDA ,因此,加入该团队的任何人都必须登录。这导致在与潜在员工配对时使用这些代码库很困难。 结果,我们大多与内部项目或客户可以向应聘者显示代码的项目配对。

I was usually on the teams with no NDAs, so whenever we had candidates, I was the main pair. Being in that company for five years, you can only imagine how many candidates there were. There were times when, during my work week, I was pairing with a different person each day!

我通常是没有NDA的团队,所以只要有候选人,我就是主要的一对。 在那家公司工作了五年,您只能想象有多少候选人。 有时候,在我的工作周中,我每天都与另一个人配对!

We also do pair programming in my current company. Since I have been practicing pair programming since 2010, it has become natural to me.

我们还在我目前的公司中进行配对编程。 自2010年以来我一直从事结对编程工作,这对我来说已经很自然了。

But the one thing to remember about these interviews is that it goes both ways: the interviewer learns about the interviewee’s skills and personality, while the interviewee learns about whom they will be working with and what a typical work day looks like.

但是,有关这些面试的一件事情要记住,它是双向的 :面试官了解被访者的技能和性格,而面试官则了解他们将与谁一起工作以及典型的工作日。

So here are the lessons I learned from pair programming interviews, both as the interviewee and interviewer. Hopefully this will help you have a better idea for your next interview.

因此,这是我从结对编程面试中(作为受访者和面试官)学到的课程。 希望这可以帮助您对下一次面试有一个更好的主意。

做好准备 (Be prepared)

If there’s one thing that you can take away from this, please let it be this one. It may seem obvious that, as in any interview, you HAVE to be prepared — but I just felt that I needed to emphasize this point.

如果您可以从中拿走一件事,请让它成为这一件事。 这似乎是显而易见的是,在任何面试中,你必须做好准备-但我只是觉得我需要强调这一点。

As an interviewer, look through your candidate’s CV, résumé, or source code if they have submitted it. This will help you set your own expectations for their skill level and personality, which will help when communicating with them. Knowing that you have the same hobbies could be a good ice breaker!

作为面试官 ,请查看候选人的简历,简历或源代码(如果已提交)。 这将帮助您对他们的技能水平和个性设定自己的期望,这将在与他们交流时有所帮助。 知道自己有相同的爱好可能是一个很好的破冰者!

As an interviewee, go to the company’s website and read / click through. I have been in a situation where I applied as a web developer, and the first question thrown at me was, “So, have you seen our website? What do you think can you do to improve it?” Suffice it to say, I botched that interview. So please, at the very least, have a look at their website. Review your code if you submitted it and double check everything.

作为受访者 ,请访问公司的网站并阅读/单击。 我曾经申请过Web开发人员,当时遇到的第一个问题是:“那么,您看过我们的网站了吗? 您认为您可以采取什么措施来改善它?” 可以说,我把这次采访弄糟了。 因此,至少,请访问他们的网站。 查看您提交的代码,并仔细检查所有内容。

放松,做自己。 (Relax and be yourself.)

This may sound like generic advice, but it is much more important for a pair programming session compared to a general or technical interview. Why? Simply because, in some general interviews, an HR person talks to you and gauges your personality for the duration. While you would be in the same company as they are, you won’t be directly working with them every day.

这听起来像是一般性建议,但与一般或技术面试相比,这对结对编程会话更重要。 为什么? 仅仅是因为,在一些一般性采访中,人力资源人员会与您交谈并评估您的个性。 尽管您将与他们同在一家公司,但您不会每天都直接与他们合作。

In a pair programming session, if the company does pair programming most of the time anyway, you would likely be working closely with your interviewer as part of your job. That is the main difference.

在结对编程会议中,如果公司无论如何大部分时间都进行结对编程,则作为工作的一部分,您可能会与面试官紧密合作。 那是主要的区别。

This works for both the interviewer and interviewee. Like in any relationship, it’s hard to have a long term relationship if you build it based on only part of the picture. Your foundation will be a shaky ground of uncertainty, and sooner or later it will come out and might result in some problems.

这适用于面试官和受访者。 像在任何关系中一样,如果仅基于图片的一部分来建立长期关系,则很难保持长期关系。 您的基础将是不确定性的不稳定基础,迟早它会出来并可能导致一些问题。

问问题! (Ask questions!)

As an interviewer, be aware that most of the time the candidate will be nervous. While asking too many questions can potentially scare them away, not asking any questions puts you in the dark and wastes your day of pairing.

作为面试官 ,请注意,大多数时候候选人会感到紧张。 提出过多的问题可能会吓跑他们,但不提出任何问题会让您陷入困境,浪费您的配对时间。

I’ve learned to list down a set of questions that I get to ask during the day of pairing. The list does not have to be in order, and you do not have to ask them all in one go. Most of the questions will come up while you are pairing, but it’s best to have them written down just in case.

我学会了列出配对当天要问的一系列问题。 列表不一定是按顺序排列的,您不必一口气问他们。 配对时,大多数问题都会出现,但是最好记下它们,以防万一。

As an interviewee, remember that some interviewers EXPECT you to ask questions. Not asking means you are not interested (why are you applying anyway?) or you know everything (which you don’t).

作为受访者 ,请记住,有些采访者期望您提出问题。 不询问就意味着您不感兴趣(无论为什么要申请?),或者您知道一切(不知道)。

Whenever I pair with someone, I take note of when they ask a question and how often. Questions can range from simple syntax questions like “What was the first argument for each_with_index again?” to work-related questions like “Do you usually pair every day?”

每当我与某人结伴时,我都会记下他们何时提出问题,以及发出询问的频率。 问题的范围从简单的语法问题开始,例如“再次为each_with_index的第一个参数是each_with_index ?” 处理与工作相关的问题,例如“您通常每天配对吗?”

没有对与错的解决方案 (There are no right or wrong solutions)

For me, it’s just a matter of getting the job done. While I expect candidates to be at their best, I do understand that they will be nervous which might slightly affect their thinking.

对我来说,这只是完成工作的问题。 虽然我希望候选人能做到最好,但我确实知道他们会紧张,这可能会稍微影响他们的思维。

I mean, having mental blocks during an interview is pretty common (at least for me). I’ve paired with a range of people from new grads, to juniors, mid-level developers and even seniors, and I myself sometimes black out.

我的意思是,在面试中出现精神障碍非常普遍(至少对我而言)。 我结识了许多人,从新应届毕业生到初级,中级开发人员,甚至是高年级学生,我本人有时都会感到沮丧。

Case in point: when I was being interviewed for my current job (I already had more than six years of Ruby experience at that point), I was chugging along with a simple exercise and I totally forgot how to create a Hash. Like, I just went, “Um. Wait how do I do that again? Um, can I Google something?” Pretty embarrassing, but when I asked, my pair also just blanked out so we both Googled it together. Fun times.

恰当的例子:当我正在接受我目前的工作面试时(当时我已经有超过6年的Ruby经验),我在进行简单的练习的同时一直在苦苦挣扎,却完全忘记了如何创建Hash 。 就像,我刚刚去,“嗯。 等待,我该怎么做? 嗯,我可以用Google吗?” 真令人尴尬,但是当我问到时,我的那对也就空白了,所以我们一起用Google搜索了它。 娱乐时间。

As an interviewer, don’t be stuck to the notion of your own solution to a problem. There are 11287398173 ways to write FizzBuzz and your solution is (probably) not the best one there is. Instead, be more open to other solutions and judge them as best you can.

作为面试官 ,不要固守自己解决问题的想法。 有11287398173种编写FizzBu​​zz的方法,您的解决方案(可能)不是最好的。 相反,请对其他解决方案更加开放,并尽其所能对其进行判断。

When I do pairing interviews, I usually have an answer in mind when I ask a question, but I listen and see what the interviewee’s answer is, because it is almost never the same answer as mine. You’ll be surprised at how creative people can get!

配对采访时,通常我会在问一个问题时牢记一个答案,但是我会聆听并看到受访者的答案是什么,因为它几乎与我的答案不同。 您会惊讶于富有创造力的人如何获得!

As an interviewee, be aware of this fact and just do your thing. Don’t get stuck worrying that you won’t be efficient (unless that was the interview question!) but at the same time, don’t be sloppy. If you come in to a pairing session for a company that does TDD/BDD, for your sake, start with tests first! They will be looking for that (I do!) and you could end up at the bottom of the pile if you just smash things out.

作为受访者 ,请注意这一事实,然后做您自己的事情。 不必担心担心自己效率不高(除非这是面试问题!),但同时不要马虎。 如果您参加为TDD / BDD进行服务的公司的配对会议,请先进行测试! 他们会寻找的(我愿意!),如果您只是砸东西,您可能会陷入困境。

将此视为正常的配对日 (Treat this as a normal pairing day)

Based on my initial experience, I treated it as a technical interview. I sat beside the candidate and took notes while they typed out their thoughts.

根据我的初步经验,我将其视为技术面试。 我坐在候选人旁边,记下他们的想法时做笔记。

But this is NOT how I usually pair, and when I realized that, I changed my ways. When someone was stuck, I would nudge them along without exactly giving the answer. I’d ask some probing questions like “What is the error message?” or “What do you think is the problem?” or “What could you do to fix it?”

但这不是我通常配对的方式,当我意识到这一点时,我改变了自己的方式。 当有人被卡住时,我会轻推他们,而没有给出确切答案。 我会问一些探索性问题,例如“什么是错误消息?” 或“您认为问题出在哪里?” 或“您该怎么做才能解决?”

As an interviewer, let your candidate drive 90% of the time — but never 100%. That gives off the impression that it is a stricter tech interview (you’re just beside them looking at their every move — which actually makes concentrating harder). Have a go with the keyboard a bit and let them talk you through their solution. This will put them at ease.

作为面试官 ,让您的候选人有90%的时间开车-但绝对不要100%。 这给人的印象是,这是一次更严格的技术面试(您就在他们旁边,看着他们的一举一动,这实际上使专心致志)。 稍微使用一下键盘,让他们通过解决方案与您交谈。 这会让他们放心。

As an interviewee, don’t just start typing the moment the keyboard is given to you. Start discussing your solution first. Ask your partner if they want to have the keyboard while you let them know your thoughts. Remind yourself that this is more of a pairing “test drive” instead of a tech interview. Which brings me to the next point …

作为受访者 ,不要只是在给您键盘后立即开始输入。 首先开始讨论您的解决方案。 在让他们知道您的想法的同时,询问您的伴侣是否想要键盘。 提醒自己,这更像是一对“试驾”,而不是技术面试。 这把我带到了下一点……

跟你伙伴聊聊 (Talk to your partner)

This is the first thing I check when I do pairing interviews. In my previous company, I usually started the day by explaining what the app we’re working on does, what the feature I am working on is, and what we’re supposed to do. I then started typing out my specs and let the candidate have the reigns.

这是我进行配对采访时要检查的第一件事。 在我以前的公司中,我通常以解释我们正在使用的应用程序的功能,正在使用的功能是什么以及我们应该做什么的开始。 然后,我开始输入我的规格,让候选人掌权。

I would pay attention to see what they did: sometimes they just went ahead and started typing, others they would think silently first, and still others would straight up ask questions about the problem or let me know their solutions.

我会注意他们所做的事情:有时他们只是继续打字并开始打字,其他人他们会首先默默思考,还有一些人会直截了当地问问题或让我知道他们的解决方案。

In my current company, the pair session usually focuses on a given problem. I give the candidate the problem to read and then I wait. If they start typing without saying anything, that is already a red flag for me. I give points to people who get a pen and paper and start explaining their solution to me with diagrams.

在我目前的公司中,结对课程通常专注于特定问题。 我给应试者阅读的问题,然后我等待。 如果他们不说什么就开始打字,那对我来说已经是一个危险信号。 我给那些拿笔和纸并开始用图表向我解释他们的解决方案的人打分。

As an interviewer, it is important to keep the conversation going to let the candidate feel that it is a pairing session. At this point in time, you two are a single unit. You should both be able to communicate well with each other and bounce ideas back and forth.

作为面试官 ,重要的是要保持对话,以使应聘者感到这是配对会议。 此时,您两个是一个单元。 你们俩都应该能够很好地相互交流,并能反复交流想法。

Of course, there will be times your candidate will need to think by themselves, so let them have that as well. Find the balance between keeping up the conversation and letting them focus and solve the problem.

当然,有时候您的候选人将需要自己思考,所以也让他们自己考虑。 在保持对话与让他们集中精力解决问题之间找到平衡。

As an interviewee, always let your partner know what you plan to do and what your solution is. This lets them know that you recognize the fact that this is a pairing session and that you can communicate your ideas well. This also gives them the feeling that you plan things carefully, instead of going YOLO.

作为受访者 ,请始终让您的伴侣知道您打算做什么以及解决方案是什么。 这使他们知道您已经认识到这是配对会议,并且可以很好地交流想法。 这也给他们一种感觉,您可以仔细地计划事情,而不是去YOLO 。

花一点时间思考是可以的 (It’s okay to take a moment to think)

In contrast to the above statement, you also should be able to have the time to think silently. It is absolutely okay to have dead air. You are not in a radio station after all.

与上述陈述相反,您还应该有时间静默思考。 死气绝对可以。 毕竟您不在广播电台中。

As an interviewer, you will rarely have to do this. But if you are in my situation, where you are pairing with a candidate on a feature you’re actually implementing, then you too will need time to think. Just let your partner know about this and it should be fine.

作为面试官,您几乎不必这样做。 但是,如果您处于我的情况下,正在与您正在实际实现的功能上的候选对象配对,那么您也将需要时间进行思考。 只要让您的伴侣知道这一点,就可以了。

As an interviewee, you can let your partner know that you will need a bit of time to think and that you will let them know your solution after. This shows that you are acknowledging their presence and that you will be communicating your thoughts after you process them. Communication is key!

作为受访者 ,您可以让您的伴侣知道您将需要一点时间来思考,之后您将让他们知道您的解决方案。 这表明您正在确认他们的存在,并且在您处理他们的想法后将进行交流。 沟通是关键!

最后的想法 (Final thoughts)

These are just some things I learned. Hopefully they can help you in your next interview. While this is not a comprehensive list about how to ace a pairing interview, I think that it can help candidates (and first time interviewers as well!) in their interviews.

这些只是我学到的东西。 希望他们能在您的下一次面试中为您提供帮助。 虽然这不是有关如何进行配对面试的完整列表,但我认为它可以帮助候选人(以及首次面试官!)进行面试。

Good luck! And also remember that no matter what happens, you will come out of that interview having learned something — and that is what matters.

祝好运! 还要记住,无论发生什么事情,您都会从面试中学到一些东西,而那才是最重要的。

翻译自: https://www.freecodecamp.org/news/things-ive-learned-from-pair-programming-interviews-35a4db7d7443/

结对编程

结对编程_我从结对编程面试中学到的东西相关推荐

  1. 学python编程_少儿学Python编程的一些思考

    自从孩子上了初中,孩子妈就开始盯着各种真假难辨的中考.高考新政传言.当她从铺天盖地的少儿编程广告里获悉,编程将纳入中考,高考范围,并且2018年高考,多个省份的数学卷甚至都出现了编程题时,就变得异常兴 ...

  2. 华兴数控g71外圆循环编程_数控车床加工编程典型实例分析(西门子802S数控系统)...

    这是一篇带有教学色彩的习作,文章对数控编程的方式和步骤进行了简明的阐述,并针对一个典型零件的数控车削加工给出了一套程序.程序是以西门子802S数控系统为例编写的. 数控机床是一种技术密集度及自动化程度 ...

  3. python青少年编程_机器人Python青少年编程开发实例

    章 打开极客之门 1.1 TurnipBit是什么 1.2 从拼插编程开始 1.3 做个真正的程序员 1.3.1 什么Python 1.3.2 面向硬件的MicroPython 1.3.3 支持Mic ...

  4. ai人工智能编程_从人工智能动态编程:Q学习

    ai人工智能编程 A failure is not always a mistake, it may simply be the best one can do under the circumsta ...

  5. python数据结构编程_写给Python编程高手之 数据结构

    python视频教程栏目介绍Python编程需要注意的关键点. 如何在列表,字典,集合中根据条件筛选数据 案例:如何在下列列表data中筛选出大于0的数data = [1, -1, 2, 3, 4, ...

  6. fp函数式编程_全面了解函数式编程(FP)

    fp函数式编程 This is the other major programming paradigm. If you are interested in Objected oriented pro ...

  7. python实例编程_浅谈如何编程Python3——Python实例(3)

    浅谈如何编程Python3--Python实例(3) # 测试实例一 print("测试实例一") str= "runoob.com"print(str.isa ...

  8. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  9. python重复元素判定编程_从零开始学Python编程四:条件判断与循环

    前面已经介绍了不少Python基础知识,大家不要觉得不耐烦,想要学好Python,做好Python开发,一定要打牢基础.大家也发现了,Python中很多基础知识和数学算法是一样的,比如今天要教给大家的 ...

  10. 换硬币c语言编程_如何才能成为编程高手?别人都不告诉你的东西,我来说给你听...

    在IT行业摸爬滚打十几年的应该知道,下面简单说说关于编程需要掌握的技术与相关知识.很多人感觉编程很难.很多人问我,我英语不好,数学不好能做编程吗? 我非常肯定的说,能做编程.编程的领域很广泛.细分出来 ...

最新文章

  1. 50位全球专家畅谈人工智能治理进程——结伴前行,合作共赢(附下载)
  2. android跑分和ios,手机:苹果VS安卓 跑分不代表手机流畅度
  3. vueCli3中使用代理,点击页面的刷新按钮时报错
  4. css 设置overflow:scroll 滚动条的样式
  5. 穿上马甲就没认出polya定理之典型题目手环
  6. Leetcode--221--Maximal Square
  7. 微信宣布:被禁 8 年的限制解除了!
  8. 拓端tecdat|用SPSS估计HLM多层(层次)线性模型
  9. go lang go get There is no tracking information for the current branch.Please specify which
  10. 计算机科学导论大一论文,《计算机科学导论论文.doc
  11. 带你阅读linux内核源码:下载源码、编译内核并运行一个最小系统
  12. 【学习笔记】C语言 随机数的生成原理分析和各类随机数公式
  13. HBuilderX快速上手
  14. (C语言编程)PTA里“三天打鱼两天晒网”
  15. 如何改变视频的MD5值?一分钟让你学会操作
  16. 基于逻辑回归模型对鸢尾花数据集进行分类
  17. 【2022 CCF BDCI 文心大模型创意项目】DIY绘本
  18. Mybatis 分页操作
  19. Ubuntu18 卸载maridb+重装maridb10.4以上版本
  20. Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10

热门文章

  1. python可不可以开发软件_python可以开发软件吗
  2. 【07月19日】指数估值排名
  3. 集群通信组件Tribes之整体介绍
  4. OneNote使用技巧 - 2.将网页内容保存到OneNote中
  5. ajax的Provisional headers are shown
  6. 笔记本的计算机打开没有硬盘分区,电脑开机找不到(没有)活动分区怎么办?4个解决方法!...
  7. 免费预约!百度全面开放北京地区自动驾驶出租车服务
  8. 蛋白质分子量检测服务
  9. Soul网关源码阅读06-使用zookeeper同步数据(01)
  10. 戴尔服务器安装linux不能识别硬盘,戴尔服务器重装系统找不到硬盘怎么办.