如何招到优秀的程序员(第一版)
看过“如何招到烂程序员”,恰好我也正需要招聘一些好程序员,根据自身的经验和“烂程序员招聘式”的反例,我制定了一套招聘好程序员的方法,欢迎探讨,也希望这个方法给新人一个优秀程序员的参考,以成为一个优秀的程序员。
笔试考察
- 设计模式的掌握:根据所给出的业务场景,使用设计模式的思想进行分析和设计,阐述你的理解。
- 应用程序的架构:为第一题的场景设计应用程序的分层架构,包括解决方案、项目和文件夹布局,描述项目之间的依赖关系,描述每一个项目和文件夹的用途,描述核心模块中采用的实现技术,如采用何种现成框架、思路等等。
- 代码规范的掌握:重新考虑第二题中解决方案及项目、文件夹的名称,试为其中一个项目设计和命名类,试为其中一个类写出二至三个完整代码的方法。
- 代码审查能力:审核几个类文件,找出所有你认为不合适的地方。
- 笔试时间为两个小时。
面试考察
- 现行项目特点方面:你如何理解和实施对于现有系统的重构?如有类似经历,请简述,考察求职人员的描述是否连贯、清晰有条理。
- 业务技术理解和目标方面:是否有过BPM(业务流程管理)方面的工作经历,请简述;对此类项目是否有兴趣?
- 合作稳定性方面:求职人员自身的发展目标。
业务场景举例
一家健身俱乐部将推出自己的电子商务系统,系统满足会员管理、健身场地展示、教学示例视频付费点播、多种在线支付手段(可与银行或第三方支付接口)、教员管理、课程安排和在线选课几个模块。在未来,该电子商务系统可能还会实现与健身器材提供商和维护商的系统协作,但在此期规划中可以不实现功能。
会员分为两种,购买一种或多种健身课程的会员,他们可以在营业时段免费使用俱乐部的所有器材和在指定时间参与健身教练举办的课程;另一种是按季度或年支付会员费的会员,他们也可以在营业时间免费使用俱乐部器材。
对于课程管理和在线选课功能,包含了场地管理和时间管理子模块,每个课程对应一个或多个场地,但仅对应一个时间段,参与课程的学员在课程时间范围内可能使用健身房的其它与课程无关的器材,这将会影响到未参与课程的会员对器材的使用。针对每个课程,根据场地所能容纳的人数,作为课程最大参与人数,但课程最大报名人数是不限的。