软件工程师的招聘

要建设良好的开发团队,首先得招聘到合适的人才。合适的团队成员能够事半功倍,管理也会省心省力。本次要说的主要内容是关于普通软件开发工程师的招聘目标、面试过程和新人试用期阶段。

招聘的岗位职责和技术要求一般是比较容易确定的,但在能力程度上就得好好考虑,是要招初级、中级还是高级?初级程序员主要作为辅助,写一些简单业务的类和方法,干一些杂货,一般工作经验不超过 1 年。中级工程师能够单独开发常规业务模块或完整的小项目,一般工作经验两三年就能达到,他们的重点是关注能否按时完成任务。 高级工程师更加重视开发质量,在开发前会详细沟通需求,了解为什么,在编码前详细设计,编码时重视代码规范、可读性和可维护性,在开发过程中经常重构,编写单元测试,一般工作经验三年以上。可以看出,中级和高级都能完成任务,只是质量不同。如果对项目质量有要求,或者要进行长期维护运行,开发产品的,则尽可能招聘高级软件工程师。如果只是做生命周期很短的项目,类似外包的,招中级工程师就够了。说到这里,吐槽一下,由于国内的很多项目,对质量和长期维护成本不关心,项目生命周期也短,对软件开发的质量要求并不高,因此招聘需求量最大的是中级工程师,也就是工作两三年左右的,这个时候往往也是程序员的黄金年龄,涨薪幅度最快的。明白了工程师的等级区别,再结合自己团队经常面临的项目的特点,来确定招聘工程师的等级。如果不考虑招聘预算,当然尽量招高级的,这样做事和管理都会轻松得多。

招聘时选择学历高的、名牌大学的还是普通大学的?很多小公司给的薪资没法和大公司比,差距很大,也就没法要求名校学历,只能从普通大学里面挑选。这就相当于沙子里面找金子,要面试大量的人员,才能找到合适的,招聘效率很低,这也是那些大厂要求 985、211 的原因。也正因为大厂有名校学历的要求,也就屏蔽许多普通大学的能力好的,从而也给了许多小公司能低成本招聘到高素质人才的机会。所以,小公司能提供的薪资有限的,还是一般大学的比较合适,即使你招到了名校的,他们很可能只是过渡很可能不稳定,或者能力不怎么样,毕竟名校的不一定所有人的能力都好。

小公司里面一般开发人员都是多面手,全栈开发 和运维都可能做,负责的业务模块也多,但做得不精深。大公司里,一般的开发人员就像螺丝钉,专注一点,要么专精某个技术,要么专精某块业务点开发,但广度有限。如果招聘目的是负责有深度的某个技术或业务点,则招聘有相关经验的大厂工作经历的人更合适,否则,只是为了更高效的产出,还是小公司工作经历的人更合适。当然,大公司出来的开发人员,他们的潜力更大,如果能给他们较长的成长时间,也能做到多面手,容易成为团队的主程人员。因此,小公司在招聘时不要过度迷信有大厂工作经历的人,只有合适的才是对彼此最好的。

什么时候招聘?很多小公司,在忙不过来时,老板才同意招人,这时已经太迟了。招聘合适的开发人员,需要一定的时间,不是想招就能马上找到合适的。当项目紧急需要时,因时间仓促,很可能对招聘放宽要求,影响整个团队的能力,长期来看是不划算的。即使招上来了,新人融入团队,熟悉现有工作需要一定的时间,而且还需要消耗现有人员的精力带他,不但不能加快现有项目效率,反而还会拖累,延长本轮的交付时间。那什么时候招聘合适呢?一般是开年时的金三银四,此时一般公司都做完了整年的详细计划和预算,可以根据公司目标,确定招聘岗位。此时,也是市场上人们换工作的高峰期,也容易招聘到合适的人才。当然,很多小公司并没有那么详细明确的计划,开发的项目也不稳定,很可能一段时间很忙,过一段时间又不忙了。一个项目在做前期准备时,就需要判断现在的人力是否能满足,如果不满足,项目周期超过 1 个月,那就需要开始招聘。即使忙完这个项目,人力释放了,也可以组织人员归还技术债务,重构优化原来的项目,补充测试用例等,能做的工作很多,不可能存在无事可做的情况。

面试前先进行机试 ,机试是最直接体现编程能力的方式。同时安排多个面试者机试,起到了初步筛选,降低了面试成本。机试题最好挑选实际项目中开发过的小任务,任务量在 2 小时内。尽量不要在网上挑那种算法逻辑题,那些容易被专门刷题者掌握,在实际工作中提供的价值有限。机试的目标考察以下几点:1,逻辑能力,得有一点逻辑复杂度的编程任务;2,熟练掌握常用的编程工具的能力;3,可以在网上查资料,展现他使用各种资源解决问题的能力;4,沟通能力,在开始开发前能和面试官沟通确认机试题的需求细节;5,编码规范,能从他写的代码中,看出编码质量。机试基本通过了,就可以面谈了。如果你挑的机试题合适,机试通过后,合格率可达到 50%。

面试时首先自我介绍,主要形成一个大体的印象,体现总结归纳的表达能力。往往很多面试者,自我介绍很一般,经常是长篇累牍,背诵简历上面的内容,突出不了重点。好的自我介绍,应该是我是谁,突出能力是什么,能带来什么价值。

面试的过程主要是发现面试者各方面的能力,然后评估和招聘目标的匹配度,而不是主要看面试者缺乏什么能力。面试过程中考察工作能力的主要问的是两方面,一方面是项目经验,另一方面是技术知识。好的面试交谈,能够让面试者充分展现能力。在提问项目经历时,我一般会问:”最能代表你现在工作能力的项目是什么?详细说说这个项目和你负责的具体任务?这些任务体现了你哪些技能?“。面试时一定多问具体任务的细节,以考察他是否真正做过,考虑是否全面。如果面试者说的任务比较简单,体现不够,可以继续询问在简历上更可能体现他能力的项目。多问一些开放性问题,例如,说说工作经历中挑战最大的任务是什么?怎么完成的?遇到最难的问题是什么?最后怎么解决的?等等。再描述一些场景,考察一下协作沟通能力,例如:” 有人测出有个缺陷,前端看了说他没有问题,你负责的后端看了也觉得自己没有问题,你现在怎么办?主管给你的任务,你觉得不可能按时完成,你会怎么办?工作中压力最大的时候是什么,怎么克服的?“。 在另一方面技术知识的面试,根据岗位职责,要把工作当中常用的技术进行抽查,这些都是工作中必须掌握的。进一步就需要询问这些技术深层次的原理和应用场景,如果能够回答好,就是加分项。最后让面试者,详细说一下他觉得自己掌握最好的某个技术点的方方面面,看看他能对技术精深钻研的能力。项目经验和技术知识过关后,可以考察潜能,问问最近看过哪些工作相关的专业书籍?书中有哪些印象深刻的,并谈谈自己的理解?平均每周花多长时间来学习? 等等。以我的面试经验,大多数面试者都没有闲余时间看书的习惯,凡是有的人,往往是比较优秀的,成长速度也很快。最后,问问面试者的职业规划,看看能否提供适合其职业发展的空间,从而评估其稳定性。当然,离职原因,入职时间,期望薪资、给面试者提供机会问问题都是必不可少的。面试官也需要对面试者做好公司介绍,所做项目、产品及其意义,研发团队的文化,开发流程,使用的技术栈,以及给面试者带来什么能力的成长等等,面试毕竟是相互者,也需要提供足够的信息让面试者判断自己是否适合。如果在面试过程中,明显在任何一个重要环节不合适,那就提前结束面试,节省彼此的时间。整个面试过程,一般不要超过 1 个小时。

面试结束后,就需要评估面试者是否通过。一般情况下,面试者对技术能力是否符合,都会有一个清晰的认知,能够确定面试是否通过。如果对某些能力不认可或有疑虑的,一般不建议通过面试,宁可错过,也不愿意冒险招一个可能不合适的,除非很急需。在薪资方面,在不对团队薪资结构形成挑战的情况下,在岗位招聘的薪资范围内,尽量满足面试者的期望薪资。毕竟,具有竞争力的薪资,才能让其更稳定,管理更容易,产出效益更高。

面试通过后,就是新员工入职,进入试用期。不管怎么面试,毕竟时间和资源有限,还需在试用期进一步相互考察,同时也要积极协助新人融入团队中。

首先,前几天让新员工熟悉要参与的项目的业务。给新员工相关项目业务资料(测试环境的账号、使用说明书、需求文档等),强调业务的重要性,安排导师给其解答熟悉业务过程中的问题,下班时让其讲解自认为掌握的业务模块。从我的经验来看,多数开发人员不重视业务,只重视技术,第一时间想要看代码,对业务理解很浅,同时也比较内向,不愿主动去找导师或其他同事去请教,所以一般情况下,第一天下班时新员工的讲解效果不好,只是照本宣科说怎么操作,讲不上来为什么这样操作?数据走向和流程是什么?等等。 此时,就需要强调业务的重要性,技术是为业务服务的,如果业务掌握不好,技术再好没有用。同时也要询问他请教导师和其他同事的求助次数,如果太少,也需求强调求助的重要性,求助也是工作中非常重要的能力,同时也是融入团队的重要途径。当然,也要多关心新员工,问问有哪些问题,帮其解决。在后续几天内,看看有没有明显改善,能否基本掌握了项目的业务逻辑,如果还不能且没有明显改善,那么果断放弃,重新招人吧。

其次,业务基本掌握后,初步考察技术能力。把一些小的、独立性好的功能点安排开发,和一些不紧急的 bug 让其解决,看看他实际工作的能力,看看能否快速胜任简单的初级工作。通过指导几次后,还不能胜任,那么证明不适合,需要放弃。

之后,给一些常规的需求特性,在导师指导下进行开发,熟悉团队的开发流程和协作方式。能够比较顺利地完成,导师的评价还行,那么陆续逐渐放手,让其慢慢地独立负责。最后,在试用期结束前,独立负责一个模块的开发,独自走完开发流程,团队协作良好,能够承担起招聘时定义的岗位职责,那么算试用期通过,可以转正。

新员工在试用期阶段需要更多关心和协助,使其尽快地融入团队。新员工刚入职的前一周,最少每天沟通不低于一次,问问对方的感受,有哪些问题需要协助,解答疑问, 传达团队文化,听取新人的建议等等。 超过一周后,可以两三天单独约谈一次,随着问题越来越少,最后保持一周一次,直到转正后为止。

以上是我对整个招聘软件开发工程师的一些经验分享和思考,由于篇幅有限,无法把我的所有招聘相关的经验细说,但主要的点都有所涉及,希望对大家有所帮助。更多的具体问题,在评论中相互探讨。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值