这篇作为之前一篇文章的延续,以及对过去3个月我模拟面试过的30多位同学的面试情况总结,我们来聊一下怎么做出亮点

你负责的业务是什么?(学会发现问题)

之前在群里参加活动的同学,有不少说在小公司,被业务需求压着。既然大家都说在做业务,那么,正看到这里的你,能不能5分钟说明白,你负责的业务是什么?

这个问题我在活动群的github issue活动中,带有业务理解标签的题目里经常会问到,可是大部分同学都没有说到位,甚至答非所问。

这里谈谈我个人对业务的理解,或许没有普遍意义,所以仅供参考。

业务最核心的要素是业务本身的价值

一家公司,或者一个部门,做的事情有许许多多,零零散散。也有很多事情合到一起,促成了一件大事的时候。那么,我们是把那些零散的事情都看成业务?还是只把那一件大事看成业务呢?我认为都可以。决定权在于这件事是否逻辑自洽,以及是否具有独特的价值。

接下来让我们拿着一个例子来说,假设你在开发一个营销活动页,这个页面能够给公司带来3000人的新用户,这些人有可能会购买公司的产品,从而带来收入。

这里明显可以感受到,营销是一个业务线,他的商业逻辑是 投放页面 -> 拉新回流 -> 商品销售 ,价值在于新用户的触达,以及商品销售利益。基于这两点,我们就值得投入精力,因为做的越好,公司业绩越好。

那么,做个页面就是亮点了?

当然不是,但是亮点已经离我们很近了。如果你想要有亮点,那你需要保持思考。在上面的例子中,我们有许多可以优化和验证的事情。

  • 营销页每天换内容,怎么快速替换?
  • 营销部门人越来越多了,页面每天要10个,一个人怎么做得完?
  • 前端的人也越来越多了,改个组件不能只靠复制黏贴,怎么管理?
  • 拉新回流效率具体有多高?新人真的有买我们的商品吗?这么多人投入,都是要工资的,卖出去的商品能够发我们的工资吗?
  • 转化率低了,怎么才能提升?
  • 这个按钮写错个样式到了右边,居然点的人特别多?那下次是不是都应该放右边?

上面列举的几个问题,估计很多同学日常都有做类似的事情。但问题是,这些事情是你想做的,还是产品让你做的?这些事情能诞生什么出来呢?

  • 运营配置后台与投放策略
  • 营销搭建体系
  • 工程化研发套件
  • 业务埋点与数据分析系统
  • 数据仓库与数据分析后台
  • A/B test系统

至少在我看来,如果面试的同学上来自我介绍的时候,能够讲一下上面例子中遇到的问题,之后再说做了下面对应的某一个系统,那么,这就是绝对够分量的亮点。只可惜这样的同学少之又少,大部分同学是因为产品说要做就去做了。

所以,你真的想过业务是什么吗?有为业务想过什么吗?有了你,业务有什么不同吗?

可以开始写代码了?(学会思考的方式)

好了,假设我们思考了一下,想了点东西出来,接下来我们可以开始写代码了.....吗?

做一个有亮点的技术产出,可不是撸起袖子就能快速干出来的,当然,如果你是个天才,那请自便。如果和我一样是普通人,那么请先做好技术方案设计。而设计的第一步,就是做一个ppt工程师,画图。

图,是思想的结晶

在上面提到过的github issue活动里,大部分同学的业务大图或者技术架构图,都没法说明白先表达的意思。

几个最典型的问题是:

  • 思路混乱:下面几个框在写业务的系统,上面画了一个vue或者webpack的框。
  • 层级混乱:底层写的是native容器,上层画了个api gateway。
  • 答非所问:要求画业务大图,结果画了一堆前端脚手架的关键字,或者画成了流程图。

如果看到这里,不明白画图是干什么的同学,可以去查一下架构图是什么,以及如何做程序设计。这经常是被大家忽略的事情,虽然很多同学在大学里学习的时候,都学过相关的课程,但是估计大部分都还回去了。

怎么画好一张图?

这里不做具体的展开,毕竟我自己也不是画图高手,每次画图也是迟迟不知如何下笔。只给到几个建议,供大家参考。同时,以一个模拟面试同学的案例来做参考。

原图:


第一步,先想明白这张图要表达什么?

这位同学说他参加过很多技术会议,看那些分享的ppt里面的大图,都很酷炫,自己平时也有总结(这点非常好),但是总画不出那种图来。面试过程中我问了这位同学,这张图他想表达什么,答案是他想说明白消息通信业务的技术方案。但是,这张图并不能表达出一个技术方案来。

这张图第一个问题是不够完整,他只有一条主链路,对于IM这样的复杂技术产品,主链路只是冰山一角,如果真的只做了主链路,那么代表思考不够,早晚会出现线上故障。

第二个问题在于含义不明与层次混乱。最下面的UI层有个箭头指向存储层,那是指渲染进程会去调用localStorage?那再向上2级的网关层呢?UI层会调用网关层?这里显然逻辑是不通顺的。

第二步,图里的每一个大块必须是同一个领域或类似概念的,每一个框都有意义

在这个问题上,这位同学做的还是很好的,但也还是有些小问题,比如UI层里的两个进程。这两个框显得意义不明,在没有描述的情况下,至少我是不明白他想表达的意思,而实际在沟通过程中,他也觉得这里挺奇怪的。

第三步,画完回顾一下是否描述清楚了第一步里的核心逻辑

很多时候我们一气呵成画了一张大图,结果一不小心容易画成一张流程图,把怎么写代码的思路也画到图上了。这就会导致图上有些地方是模块划分,而有些地方则是细节流程,整体就很失调。这只能通过反复的回顾和思考,进行自我调整了。

最后,我给出当时模拟面试时,对于这个业务的粗略设想:


知道原理有什么用?(技术如何赋能)

有了大图,我们终于可以开始实现亮点了......吗?

现实很残酷,哪怕我们想出了一个大饼,并不代表我们能吃到嘴里,从图变成面饼,我们需要太多的中间步骤。而摆在技术人面前的问题是:如果有面粉了,你会揉面吗?你揉面的技术能保证烤出来的饼好吃吗?

知其然,而后使其然

我认为这就是为什么我们要了解原理。曾经有一位模拟面试的同学,在最后互问互答的时候问了我一个问题,怎么看待面试造火箭,平时拧螺丝?我觉得有点冤枉,因为一面大部分问的都是怎么拧螺丝,以及螺丝的型号,二面开始也就问问怎么造飞机,但是真的进入工作状态,阿里的场景里,至少在我们团队的场景里,我们就是在造火箭,只是造火箭的时候必须要拧拧螺丝,没螺丝你敢上?

有同学又不服了,我会拧螺丝,和我需要知道用什么螺丝有什么关系。那么上面那个烤饼,你能告诉我放白芝麻好吃还是放黑芝麻好吃吗?我相信大厨一定能回答上来,他甚至连小麦原产地都会和你掰扯一下。为什么到了同样需要匠心的编码领域,我们就不用关心用什么螺丝了呢?

当时我给这个同学举了个实际的例子:简历中有提到上传,那你能不能当场告诉我,这个上传是服务端http接口配合你上传,还是用阿里云oss?用oss是服务端每次加签,还是用sts,还是前端直接加签?http上传你用什么contentType?用form表单组件提交还是自己通过xhr发送?如果需要登录鉴权怎么办?如果出现跨域问题怎么办?两种场景都有,都要实现,怎么封装组件?

什么?你说你要百度一下?你要百度一天?那我为什么不聘用那个不用百度的人呢?一天的工资算上5金这些成本,月薪20k来算,估计也得有小2000了,如果我把这2000增加到一个懂原理的大神手里,我们岂不是双赢,为什么要等你去搜索呢?只是个简单的上传文件功能,也就是页面里的一个豆腐块,这么小的螺丝,里面却有大大的学问。而日常工作中我们遇到类似的问题有非常多,具体可以参考我上一篇文章的解读,这里就不重复了。

任务的拆解

对于平时愿意学习的同学,到这一步可能开始陷入迷茫了,我之前也遇到过类似的困惑,那就是:要不要造轮子

我们经常会发现好像什么都能做,比如:你有的,我改改也能实现;社区有个差不多能用的,要不要直接用;好像大图上都有差不多的,那是不是拼拼凑凑就可以了,这个方案是不是没什么好做的了。

从我个人来说,每次画图我都会陷入这样的思考,还常常会钻牛角尖,为了整点差异化,故意换一些思路去做,这样能保证这个饼是我的。但最后我都会绕出来,这得益于上面画图的第三步,每次画完我都会重新回顾一下我真正想做的事情是什么。我认为这也是是否造轮子的一个评判标准:从业务的价值出发,思考真正核心的目标,并且为之努力 ,如果有现成的轮子,能满足业务核心诉求,那就放手去用。

首先,现实往往是这样的,当我们放手去用的时候,会发现这个轮子好像不那么好用,或者这个轮子没人维护了,又或者业务变化太快,轮子自己觉得顶不住了。机会自然会来到身边,而触发这些机会的,是我们不断的站在业务的视角去思考问题,业务的变化一定比一个平台化的轮子要来得快。

其次,真正核心的系统一定是紧贴业务,而且很难大范围复用的,好的技术架构在设计的时候,讲究的是够用即可,过度设计大部分就是没用的设计。在之后的迭代中,会随着业务的不断变化,被带动着自我进化,那最终的产物也自然是和业务形态非常贴合。所以,我个人在选择的时候,一些核心的轮子,该造就造起来,但这些轮子一定是带有业务特色的,比如我会去造一个业务组件库,但是我绝不会去造一个antd。

最后,随着事物的演变,分久必合合久必分,单一业务用的好的系统一定是可以在更高的视角上抽象、整合的,在整个过程中,每个人的成长就会是我们想要的亮点了。或许在简历上你写下的是一个已经废弃的系统,但是它的灵魂在你心里,也存在于把他整合了的系统里,这种亮点在个人介绍的时候,一定是能侃侃而谈的。

从1到10能做什么?(思考方式的抽象)

终于,我们经历的各种抉择,投入了大量的时间,把一个亮点做出来了,完成了美好的从0到1,可有时候我们会发现的问题:从0到1看上去有很多要做的,做完了,从1到10还能做什么?

这个问题我个人也没有太多话语权,因为这两年总是在做从0到1的事情,甚至和我老板也聊过这个,总感觉自己没有个确定的事情。从0到1做一次挺爽的,一直做,不会一直爽,却只会让人觉得心慌,毕竟谁能保证永远能想出从0到1的事情呢?

而静下来反思之后,我发现事情并不是这么一刀切的,谁能说明白现在做的事情是0到1,还是1到10呢?这里的边界其实并没有那么明确,但抽象看,他们都是同一个套路

业务/技术思考 => 发现痛点 => 产出方案 => 拆解实现

伴随着这个闭环,业务永远在变化,而变化又会带来新的问题,只要保持一个思考的状态,没有必要区分具体再哪个阶段,因为你总能找到可以实现自我价值的地方,发现属于你的亮点。

❤️爱心三连击

1.看到这里了就点个在看支持下吧,你的在看是我创作的动力。

2.关注公众号程序员成长指北,「带你一起学Node」

3.特殊阶段,带好口罩,做好个人防护。

4.添加微信【ikoala520】,拉你进技术交流群一起学习。

“在看转发”是最大的支持

面试项目亮点_大厂面试官常问的亮点我们项目中怎么做出?(软技能)相关推荐

  1. 平面设计面试官常问的问题有哪些?

      平面设计面试官常问的问题有哪些?一般情况下都会有一个开篇的自我介绍,这里建议就用平常聊天说话的语气语速来介绍就可以,介绍自己扬长避短,多讲自己的前工作项目经验,在校获奖也可以讲.与工作岗位不强相关 ...

  2. 面试官常问的 web前端 问题(二)

    面试官常问的 web前端 问题 11-20 11.什么是响应式设计? 12.为什么我们要弃用 table 标签 13.iframe 有哪些缺点 14.meta viewport 是做什么用的,怎么写? ...

  3. 面试官常问的 web前端 问题(四)

    面试官常问的 web前端 问题 31-40 31.使用 Vue 的好处 32.MVVM 定义 33.Vue 的生命周期(重点) 34.Vue 的响应式原理 35.第一次页面加载会触发哪几个钩子? 36 ...

  4. 太奇怪了!小公司面试全挂,大厂面试全过,为什么小公司要求比大厂还高?...

    大厂的人才去小公司面试,一定是降维打击吗?还真未必. 一位网友很困惑: 真的奇怪,小公司面试全挂,大厂面试10个过了9个,感觉小公司要求比大厂还高,这是怎么了? 来看看网友们的看法.有人说,小公司的面 ...

  5. 3c技能和背包需要改建吗?_开发人员在背包中需要什么软技能?

    3c技能和背包需要改建吗? by Ewa Mitulska-Wójcik 伊娃·米图尔斯卡(EwaMitulska-Wójcik) 开发人员在背包中需要什么软技能? (What soft skills ...

  6. 面试项目亮点_当面试官谈到项目经验的时候,你知道怎么回答吗?怎么反过来控制面试流程?...

    如何在面试中介绍自己的项目经验 在面试时,经过寒暄后,一般面试官会让介绍项目经验 .常见的问法是,说下你最近的(或最拿得出手的)一个项目. 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴 ...

  7. Android岗大厂面试官常问的那些问题,知乎上转疯了!

    前言 对于android开发,我们大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到具体问题时不至于束手无策,因此有必要了解底层的工 ...

  8. java后端简历项目经历_从面试官甄别项目经验的角度,说说如何在简历中写项目经验(Java后端方向)...

    在大多的JD(职位介绍)里,会写明该职位需要xx时间的相关经验,换句话说就是需要在简历中看到一定年限的相关商业项目经验,否则估计连面试的机会都没. 在本文里,不讨论这种门槛是否合理,而会以Java相关 ...

  9. 那些年Android面试官常问的知识点,分享一点面试小经验

    开头 年前面试了一些公司,目前已经拿到了阿里跟头条的 offer.去年我也出去找工作了,面试五家拿到了四家公司的 offer.所以在面试方面我应该可以提供一些愚见吧.本篇会讲解一些常见题目以及一些答题 ...

最新文章

  1. 数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
  2. c libxml2解析html,简单的libxml2 HTML解析示例,使用Objective-c,Xcode和HTMLparser.h
  3. python查看数据大小_科多大数据带你看Python可以列为最值得学习的编程语言
  4. 关于div布局中float的使用
  5. 分布式监控:Zabbix_sender介绍及配置
  6. python selenium --鼠标事件
  7. PPT 不支持打开显示 webp 图片
  8. 小程序正则验证 身份证号、统一社会信用代码
  9. Js之 push、pop、shift、unshift的区别
  10. Flutter ListView (动态)列表组件、水平列表组件、图标组件详解
  11. 71-项目的广告管理模块和用户管理模块
  12. js中类似${xx,xxxy}的语句——${}占位符的使用 ``模板字符串的使用
  13. 学习Java的学习顺序
  14. 【学习笔记】proxy的用法
  15. dxc 3.0 线程的生命周期
  16. 取消Outlook脱机工作
  17. 西方文化笔记——CDUTYB版
  18. Redis(四)------三种特殊数据类型
  19. linux glibc2.12编译,glibc 2.12 升级 2.14
  20. Office 2016 简体中文批量授权版镜像下载(含Visio、Project)

热门文章

  1. 【讲大道理】参加什么信息学比赛对升学有帮助?
  2. http://www.runoob.com
  3. 三菱数据移位指令_三菱移位指令的应用
  4. 哲理故事三百篇(三)
  5. Windows服务器安全策略设置
  6. 解决Yolov5的RuntimeError: result type Float can‘t be cast to the desired output type long int 问题
  7. AVPlayer封装
  8. [Linux]Web性能测试http_load
  9. 景点旅游项目深入开发精品夜间旅游文化艺术
  10. Gunicorn 配置