雪琪中午在微信上找我,说她最近面试经常遇到问她项目开发的流程,怎么进行的沟通以及怎么做的项目开发技术的选择,她之前的公司不正规,没有这些经验,咨询我该如何回答。我对这几个问题做了一些解答,并告诉她该怎么准备。这篇文章中,整理下我的回答:
项目开发流程
一般公司里项目开发流程是 PM(产品经理)出一个需求文档,告诉研发要做什么功能。研发根据这个文档来调研现状,设计技术方案,并完成开发。在设计技术方案的过程中需要和产品确认需求细节,确保符合要求,和合作方研发比如后端确认交互的接口,和 QA 确认测试用例,写出技术方案文档。开发完功能后需要进行自测和联调,没有问题后再提交给 QA 进行测试,测试过程中要支持 Bug 的修复。一般大公司里都有 CI/CD (持续集成/持续部署)流程,提测的时候会借助 CI 平台来提测,CI 平台简单来说是一个构建系统,提交代码后就能构建出可用的产物,QA 能在 CI 平台上找到你的交付产物来测试。测试没问题后,进行代码 Review,再把代码合入到主分支,这个一般也在 CI 平台里完成。合入代码后,还要进行上线,这个过程一般称为 CD(持续部署),通常也有平台来完成这一步骤。
沟通要点
沟通主要是和你的合作方来沟通。沟通过程中需要注意的点,第一是不要带个人情绪,别聊着聊着吵起来了,而是要心平气和,就事论事;第二是要根据沟通的角色来调整语言,比如和 PM 和 QA 沟通,他们不懂技术实现,就不能一味说技术术语,而是需要转化为非技术背景也能理解的语言;第三是尽量在一个有足够多上下文的群里进行沟通,比如需求群,所有的相关方都在,避免私聊,避免有些信息只有某些人知道而没有及时同步给所有人。当你负责一个项目的推进时,还需要注意信息的同步,风险的同步。(相关方就是一个项目中的所有参与者,在一个分工很细致的公司里,一般包含 PM,前端开发,后端开发,UI 设计师,数据分析师,测试等等角色,都是相关方)
关于技术选型
项目的技术选型这个话题可大可小,大的比如是选择 React 还是 Vue,这个其实一般的开发确定不了,都是架构师或者 CTO 来确定大的技术选型。而我们可以决定的是一些小的技术选型,比如某个功能的实现该用哪个方案。在技术选型时,需要进行比较细致全面的调研,要知道这个功能有多少种实现方式,都列出来,然后结合实现难度,扩展性,理解成本,维护成本等因素进行优势劣势的对比,以确定最终的方案。
考察软素质
面试过程中,技术问题是考察技术实力,也叫硬素质。这些问题也是另一类比较常见的问题,目的是考察候选人的综合素质或者说软素质。比如沟通表达能力怎么样?对业务的理解怎么样?在工作中能不能有自己的思考总结?面试官通过这些问题的回答能够知道你做事是怎么样的,靠不靠谱。他肯定不希望招一个做事没有条理,糊里糊涂的人。所以这种问题在回答过程中一个是要结合实际情况来说,不要编,肯定会露馅,但也要突出我们的仔细,认真,有条理,思路清晰这样的软素质。
如何准备
在准备这类问题时,你需要做的是好好回想下自己之前做的工作,比如把做过的功能都写下来,再把整体的项目介绍清楚。思考你做的功能是整个项目的什么部分?能产生什么作用?你在其中负责了哪些工作?其中最难的部分在哪?比如你可以说小公司不规范,没有文档,沟通靠口头交流,这是符合实际的,而且其实也是难点。那你是如何解决的呢?比如可以说在每次沟通后你都会把结果总结后发到群里,并且有不确定的地方一定会找人确认清楚并记录到文档中等等。