在Business Analyst的onsite面试中, 很多同学常常感觉不知该如何准备business case这类面试题,面试挂了也经常分析不出失败的原因。

Business Analyst的面试不像Software Engineering那样,刷题非常重要。真正的BA面试非常random,面试官也不见得会提前准备面试内容。他们往往是直接带着工作中的问题来问你。 这些问题看似都是情境题,甚至看起来像是聊天,但其实面试官是想根据你的表现判断出你在工作中会做出的真实反应,例如你解决问题的速度,同时处理不同项目的能力,是否符合公司的文化等。

 

接下来我们就来还原一个真实面试过程,按顺序一步步地来看这些问题。

 

理解情境

问题:If we are to use the internal HR system (which exists in every company), how does the UI look like?

 

这个问题看似是Product Manager, Front-end Engineer的面试题,但如果你是要申请一个focus on product的BA职位,工作中肯定也会接触到这一领域,因此这一类题型也是面试中的会出现的。具体的问题可能非常多样,比如让你设计一个网站,看似与所申的职位无关,但其实面试官是想看你能不能真正地从用户的角度来思考问题。

 

无论我们面对什么产品,首先要想的是它要解决什么问题。具体到这道题我们就要想,当我登陆这个界面的时候,我要做什么事情?一般我们的做法是先想出几个不同的情景,比如“作为第一个使用系统的用户”或 “我用这个系统来核对员工信息”,然后表述出来即可。

 

 

如图可以看到一个HR系统的界面,它的左边一栏用于选择HR可导入的员工信息,右边则可以搜索信息、查看已导入的信息及移除离职员工信息。为什么要重点提一下离职员工信息呢?因为员工离职的时候,如果不及时把hardware legal hold的问题解决掉,那么员工离职后就还能进入公司系统。这些都是非常具体的、在现实中要考虑的因素,也照应了我们所说的真正从一个HR的角度考虑问题。这个面试题背后我们需要从以下三个方面去思考:

 

你能想到哪些use case呢?

  • Input new employee information
    • 导入新员工信息
  • Update employee information: floor number, legal hold, department, manager, etc.
    • 员工换组、升职时需要更新相关信息
  • Deprovision employee: employee offboarding process
    • 将离职员工从系统中移除

 

会有哪些潜在的问题呢?

  • Manual problem
    • 使用电子系统前可能很多信息是人工记录的,因此没有可以直接导入的电子数据,需要将这些数据统一迁移到新系统中。
  • Wrong information
    • 员工信息的准确性问题
  • Not updated in time
    • 比如员工已经离职却未更新 termination date,员工还能使用数据、使用email、收到公司内部信息等,导致legal compliance的问题。

 

如何改善这些问题?

  • Automate process
    • 对应manual problem。如员工离职自动化的流程可能就是“搜索员工”、“键入termination date”,然后该员工就自动进入离职的database。
  • Dashboard to track process and make preparations ahead of time
    • 用dashboard追踪整个流程。比如下个月公司会有100人离职,我们就要看他们分别在哪些部门、哪些cost center,然后就可以给不同HR分配资源,帮助这些人快速离职。

 

我们需要与谁沟通?

这个问题的背后就是要找出stakeholder,也即:我们解决的这个business problem到底能帮助哪些人?

  • 人力资源系统首先肯定会帮助到HR
  • 某些想要了解同事信息的员工
  • 安排与客户的会议,并且利用会议时间快速地问问题,得到想要的答案
  • 数据存储在哪里?能否得到这些数据?是否可以写一个简单的script来得到这些数据?如果比较困难,则可以去找对应的Data Engineer进行协助。这时候你还需要详细地告诉他,你需要哪些数据 、为什么需要、什么时候要。此外,如果你需要其他系统中的信息,比如Salesforce,虽然Salesforce里的数据有structure,但是也需要System Analyst/System Engineer/Development engineer来帮你获取数据,同时将其转换成dashboard可以直接connect的格式。

 

如何获取数据?

要获取数据,基本上我们用的方法都是写SQL,也会有一些别的工具例如R, Python,但是SQL是比较常见的。

 

下面再举两个例子:

Q1: How many people were hired in the past 6 months?

Q2: What are the employee distributions?

 

例子比较简单,但是其实是想告诉大家,重要的不是在SQL Query中写出复杂、fancy的advanced function,而是要想清楚为什么需要这些数据。

 

如图还是先前HR system例子中的一部分数据库信息。

 

首先看第一个问题:找出近6个月内雇佣的员工

这里可以用到DATEDIFF的function,只要找到start date和current date之差小于6个月的员工即可。有的人可能会问,如果面试中写的function或syntax不对怎么办?其实我们工作中会遇到各种各样的syntax,包括MySQL、PostgreSQL、SQL in Hive、SQL in Presto等等,不同的环境下用的syntax都是不一样的,所以其实我现在也不知道我写的这个DATEDIFF是不是对的,但关键就是解释清楚为什么要这样写、它的逻辑是怎样的

(P.S.: 第一行的“distinct”是去重的意思)

 

再看下一个问题:What are the employee distributions?

什么叫employee distributions呢?其实在BA的面试中,大多数情况下面试官并不会是engineer出身的,因此他不会详细到要求你给出 ”employee by XX distribution”,而是会以一种非常模糊、宽泛的形式进行提问。这时候就需要你主动提问,明确对方的employee distribution到底问的是什么,确保回答到对方想问的点上。那这里因为我的数据库中只有cost center,所以我想要的distribution就是根据cost center来的,即需要统计在每个cost center里有几个员工。这个问题对应的SQL写起来是非常简单的,但是首先需要我们把问题想明白。

 

我们解决这个问题有什么价值呢?

通过看不同的cost center有多少员工,我们就可以观察不同部门最近几年的状况。比如工程师团队最近一年招收的员工非常多,超过1000人,这个数字首先就说明了该部门业绩不错。其次,还可以用这个数据去比对收入,看这些人创造了多少价值。再次,我们还可以据此做一些招聘计划,比如还需要雇多少员工、是否还要在engineering方面放更多精力等。

 

具体的写法如上图,就是一个非常简单的GROUP BY的function。但是还有一个问题,就是没有考虑到之前离职的人。虽然员工已经离职,但是其cost center的信息还在数据库中,因此那些termination date在今天以前的员工,我们就要将其移除。这里我们采取的写法是选出未离职的员工,即term_date等于Null的员工再进行分组,如下图。

 

 

所以大家会发现,真正的BA面试中问题可能会非常简单,简单到只要写个GROUP BY就解决了。但是一定要把自己放在具体的情景中,才能了解要解决什么问题。

 

为什么需要这些数据?

 

除了工具的选择以外,我们还要想清楚为什么要用到这个数据、得到这个数据或使用这个工具能带来什么好处。

 

哪些metrics是所有的领导层最关注的?

 

领导层不会去看后端的内容,也不会看infrastructure有多fancy,他们关注的重点在收入、用户活跃度等问题上。下面我们看三个具体的问题:

 

问题一:I want to know the overall healthiness of the HR system, what metrics can you think of and how would you define them?

 

在面试中,我们可以首先询问面试官这里的healthiness是如何定义的,再进一步作答。但其实在真实的BA工作中,你的director在提问时并不会给出定义。这种情况下,我们就要采取主动,自己想一想哪些元素能够衡量这一HR系统的healthiness。

 

在这道题中我们采取了两种metrics。

    • Error rate: % of employees that have wrong personal information

即系统中错误信息的比率,这可能是人工系统转电子系统带来的问题。如果回答得再详细一点,则还可以把时间具体化,如最近三个月的error rate等。越具体越能解决问题。

 

    • Efficiency: Average Time (min) spent for each HR/Account Manager to input information

这里选择了input information的平均耗时来衡量效率,但其实也可以采取其他不同的衡量标准,如retrieve information、update information。同理,这里也可以把时间具体化到分钟、小时。至于单位如何选择,我们可以联想自己下载档案信息的时候大概要花多久。一般我们会认为是几分钟,因此这里就选取分钟作为计量单位。

 

问题二:We just got the feedback of a survey regarding our new platform/feature, what values can we get from it?

拿到这个问题,我们应当想一想:如何评估这份反馈?用什么样的数据分析方法能够得出反馈结果?

  • Write Python Script to analyze HR system user survey results (NLP)

    首先,我们可以直接用网上的NLP package来对这份问卷调查进行分析。取得数据以后,则要用更可视化的形式呈现给director,比如针对某个具体的function,顾客的整体态度是喜欢、不喜欢还是厌恶,等等。这样的呈现形式远比仅仅呈现数据本身有说服力。在使用package的过程中,我们也不需要亲自搭建模型,只要能够快速了解package的用途、懂得如何阐释结果即可。

 

问题三:We need to plan our next year logistics, employee spending, procurement. Any suggestions in making better preparations for it?

我们可以先对已有的数据作分析,比如看一看cost by location、cost by cost center、花销的季节性变动是怎样的;整理差旅费、IT相关费用(如每年为员工购置笔记本的费用)等,研究这些支出是否有必要发生……这些都可以根据已有数据做出来,也是传统的数据分析会做的。

  • Build Model in R to forecast Employee Headcount

    伴随着技术转型,越来越多的公司会要求使用数据模型进行预测分析,因而面试时我们也可以提出用Python、R来预测员工人数。下一年的员工增长情况、采购量的预测、物资的分配方案,这些都是可以考虑的。面试中我们也并不一定要写出具体的代码,只要用伪代码等形式表述清楚自己的逻辑即可。

 

将数据呈献给对应的stakeholders

说到数据呈献,就不得不说数据可视化了。而要做到数据可视化,我们一般会用Dashboard,或者也可以直接做Presentation。

 

呈现什么数据?为什么要呈现?

    • Average time used to onboard a certain employee

这里还是用刚才我们提到的average time used to onboard a certain employee作为例子。如果这个过程原本要花15分钟,现在只要10分钟就行,这就能说明系统效率更高了,HR部门也就并不需要那么多人员。再进一步,我们就可以减少员工数、提高平均工资。

 

如何呈现?

    • By different segments & Compare with benchmark

在评估效率的时候,我们还应当按不同的cost center、楼层分布等形式进行划分。此外,还有很重要的一点是要与benchmark作比较,因为如果仅仅列出数据而不做比较,观看的人对数据规模会缺乏概念。

 

    • Trend or static numbers?

就员工人数来说,是趋势数据(如:过去一年内员工人数的增长情况)更有价值,还是静态数据(如:过去三个月内员工的数量)更有价值呢?其实这两者的价值并无绝对的高下之分,还是要针对具体的情境进行选择。

 

下面这张图是用Tableau绘制的趋势图,这条线表示了过去一年美国加利福尼亚州的销量情况(也即这里选择的segment是美国的不同州)。从这张图中我们可以看出很明显的季节性变化,由此可知去年的平均销量就是不具有代表性的,相比而言趋势线则更有说服力。因此在这个例子中,趋势数据就优于静态数据。

 

 

下面的第二张趋势图则呈现了我们前面所说的“benchmark”比较法。这里我们把加利福尼亚州的销量与其他所有州的平均销量进行了比较。有了比较,我们就能知道加利福尼亚相比其他州表现是更好还是更差,更有说服力。

 

 

 

取得反馈&进一步优化

获取反馈并进行优化,这是BA工作中占比很大的一部分。以下是一些可能出现的问题:

问题一:The directors who views your dashboard cares about a lot more metrics, don’t trust the data shown and ask more stuff from you, how would you respond?

现实工作中可能确实会出现这样的问题:director想要更多的反馈,但你却并无法取得这些数据,这时候应当如何处理呢?那么一方面我们要找到正确的对接人、根据需求提出准确的问题;一方面也要与director沟通,告诉他们你无法短期内得到这份数据,以及中间需要经历怎样的过程。

问题二:After the dashboard/analysis draft is done, who should you reach out to to get feedback?

完成了dashboard以后,应当从谁那里获取反馈呢?比如针对刚才提到的HR系统,我们就可以把dashboard交给HR部门的员工使用来获取反馈。一个常见的问题是不清楚按钮的用处。此外,现在也有一些HR部门是data-driven的,他们甚至会告诉你现在所用的metrics不够好,并且向你提出更优的建议。但同时也要注意,不可直接大而化之地问对方“你觉得这个系统怎么样”,而要先通过观察想清楚要解决的具体问题,再去询问。得到对方的反馈之后,进而再提取出能够得到data-driven策略的信息。