热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于大搜车「无线开发中心」团队

更多文章,参见大搜车技术博客:blog.souche.com大搜车无线开发中心持续招聘中,前端,Nodejs,

更多文章,参见大搜车技术博客:blog.souche.com/

大搜车无线开发中心持续招聘中,前端,Nodejs,android 均有 HC,简历直接发到:sunxinyu@souche.com

我们是谁

大家好,我们是无线开发中心,一个跨多栈、偏核心技术输出赋能的团队,包括 前端、客户端、Nodejs 服务端 等技术领域,向大搜车整体集团提供工程保障和服务支撑。

大搜车是一家提供汽车行业数字解决方案的公司,业务范围覆盖二手车、新车、租赁、金融、新零售、拍卖等方向,员工现有 4500 多人,拥有多个事业部和子公司。

无线开发中心团队是大搜车研发中心的一级部门,直接向 CTO 汇报,由芋头带队,内部有 7 个面向各个领域的子团队。

无线开发中心的使命:做集团业务的发动机,推动汽车产业数字文明的落地

无线开发中心的愿景:形成高度标准化的无线工程体系和完备的(开放、沟通、触达、体验)服务场景支持

我们做什么

总的来看,团队主要在三个方向上做核心输出:

  • 无线工程保障:包含 前端、客户端 领域的所有基础设施建设(研发基础支撑,各技术栈开发体系,UI 体系等),所有建设都基本是多栈完备的,支撑公司内部所有事业部、子公司、业务线 端上开发的基础设施,为开发提效。
  • 无线平台服务:为集团业务输出通用的、完备的基础服务,这些基础服务有带有明显”端“色彩的,也有纯粹的服务端基础服务,这个方向我们所有的输出都是”完备“的,意思就是需要从产品、到架构、到前后端开发,整体输出,很多核心系统支撑着公司内所有相关场景的服务。
  • 无线业务支撑:研发中心内部产品的共同研发,技术型产品、共享型产品、数据产品等方向,同时也承担一些业务产品的支撑。

接下来会分别再简单介绍下各个方向。

方向一:工程保障

工程保障其实涵盖的方面比较广,所有面向开发提效的系统都可以成为工程保障,不过「无线开发中心」的重点是站在集团的角度去做这件事情,保障集团内部所有无线开发标准化流水线化,让业务开发将精力更多投入到如何落地业务中去。核心输出这里简单介绍下吧:

标准容器

未来所有 app 都会成为平台,而业务则是寄生于平台的应用,所有的应用都是一个抽象的实体(例如微信和小程序的关系),而所有的应用都会有一种标准的开发运维运行方式,这就是我们所讲的容器,这不是一个纯技术的概念,而是一个大的体系,承载着未来所有业务应用的开发、运维、运行等一整套开发体系。

目前大搜车内部还未形成完全一致的容器体系,而是存在 ReactNative 体系、Webview 体系等多套开发体系,每套体系会有自己的一套从开发到运维的解决方案,这也是我们投入非常多精力的部分,但是未来可能还会有更加标准化的体系形成。

UI 资产

UI 资产也分为很多个层面,但是 UI 资产最具价值的点不是做了组件库或者怎么滴,而是与设计师和业务产品真正联动起来,设计上有一套标准规范,业务上落地标准规范,技术上实现成对应的产品,再与业务落地结合,最终形成闭环,这样才能做到快速生产业务应用的效果。

这方面我们去年与设计团队做了很多努力,真正形成设计和技术闭环落地。

具体的沉淀,包含各端的组件库,都按照社区开源标准去产出和维护,包括:

  • SRN.UI ,RN 移动端组件库
  • So.UI-React ,PC React 组件库
  • So.UI-Vue ,PC Vue 组件库
  • Som-B.UI ,移动端 C 端组件库
  • Som.UI ,移动端 H5 组件库
  • Som.UI-mini ,小程序组件库
  • Aqua,区块库

另外还有多端统一的主题切换能力等,大家对这方面了解应该比较多,就不细讲了。

开发框架

开发框架的意义一个是规范不同团队的一些基本开发方式以保持不同业务开发的一致性,另外将部分繁琐的开发事项简化,最后就是提供一些开发最佳实践的指导。我们在每个端都会适当的抽象自己的开发最佳实践,简化大家的开发过程,同时又要考虑保持开发灵活度,不过多的限制开发方式。

目前主要是以下几个框架:

  • srn-framework ,RN 开发框架,所有 RN 业务都基于此框架开发,并在内部集成与 native 互通,协议,配置,环境管理等能力。
  • muji,React 开发框架,”使用 TypeScript 编写企业级 React 应用“,为解决前端应用开发中的路由状态存储两大问题而生,同时解决一些企业内的特殊场景问题,在公司的 管理系统中有广泛的使用。
  • Trojans ,一套基于 React 的,在后端 Java 项目中融合前端代码的解决方案,基于此方案公司内部的管理系统基本完全无需前端参与,这套方案比较神奇,利用 React 实现类似于传统 jsp 的开发模式,不过现在部分 java 开发在向 muji 切换,大家对 React 的了解程度在提高。
  • 蓝风 blue-windy,一套企业级 Nodejs 开发框架,基于 egg.js 封装。简化了企业内部 node 应用开发的难度,很多前端可以自己开发稳定易用的线上服务。

研发支撑

或者说是工程效能,开发过程等,主要是提供开发时或者运行时的一些系统性支持或者环境支持。

例如 前端和客户端的测试环境如何统一管理,线上环境如何管理。

例如 前端\客户端\RN 等项目如何生成、托管、联调、测试、发布等一条龙(持续集成)

例如 项目上线后,如何热更新,如何快速排查问题,如何报警等

在这方面我们也有一些系统产出:

  • SoBox,一个环境管理&代理抓包的PC软件
  • easy-mock,开源了的接口模拟应用
  • mindmap,一个 vscode 脑图插件,用来管理测试用例
  • Zoro,sketch插件,设计素材管理,与设计师联动 UI 管理
  • srn-hub,RN 开发服务(热更,应用注册,依赖检查等服务)
  • Cuckoo,线上保障平台(摇一摇反馈,崩溃管理,报警等)
  • Reiko,app 应用托管平台,公司内所有 app 都托管于此
  • 发布单系统,项目管理系统等

这些基本都是比较完备的系统,还有些新系统在开发中,不一一列举。

大概先分享这些,其他暂时不够系统化的事情以后再分享吧。

方向二:平台服务

这也是我们团队一块比较重、业务价值比较大的事情,可能在一般的前端团队不会太常见,所以一直当做我们的特色去打磨发展,通俗来讲,就是我们会承担基础服务的角色,这些服务有些是偏服务端的,有些是偏无线端的,但是大部分都是前后端都需要的,我们团队自己即完成从产品规划到前后端开发,这些事情对于打磨团队多个技术栈之间的磨合能力帮助很大,对公司的业务来说也都有非常直接的影响。

这里展开几个典型的服务和大家分享(所有服务端都基于 Node.js 开发,另外因为和业务相关涉密较多,可能不会细讲):

开放平台

没错,就是大家理解中的开放平台,这是一个非常复杂的系统,承担了三个重要职责:

  • 内部服务对外开放
  • 外部服务对内聚合
  • 公司内不同物理域之间的服务互通

系统内部的子系统大概就有七八个,具有完备的机制,包括:开放聚合消息文件用户计费内部工作台商户工作台等等,具体因为保密问题,不展开。

开放平台主要能力是对开放和聚合做统一的管控,对商户做管控,对商户的调用做管控等,另外因为对接业务量非常大,还有很多针对开发接入商户接入的工具部分的开发。

消息触达

消息中心是一个比较模糊的概念,主要职责如下:

  • 集团内所有 app 的推送
  • 集团内所有业务的短信推送
  • 集团内所有业务的 聊天、客服能力

因为业务量比较庞大,围绕如何管控业务,做了很多管控措施,例如业务分类、模板、审批、报表、历史查询等。 并且可以提供给业务自有切换后端服务商的能力

因为这个系统的数据量非常大,可能是公司最先开始考虑分库分表,并且定期做数据静态化的系统。

体验科技

刚才两个系统是纯服务端的系统(或者带有少量的前端 SDK),不过类似的系统因为和公司业务比较紧密,很多只能保密,不能拿出来和大家分享。另外我们也会有一些端上的服务的输出,直接去影响业务。

例如,业界流行的 ioT,现在我们公司也有很多新媒体设备需要管控和触达等能力,例如:电视盒子、广告屏、pos 机、xxx 机(保密)、车载设备等,所以我们也在孵化自己的 ioT 平台,对所有类似的”终端“做管控和赋能。

例如,多媒体赋能,因为团队很多同学能力都会偏底层,我们会利用这些优势向业务输出一些开发难度高,但是体验更好的组件,例如 360 拍照,拼图海报,视频编解码播放,AR 应用,端上智能识别等,在这方面我们也有不少已经落地的输出。

方向三:业务支撑

业务保障主要是对研发内部的产品的支撑,以及对部分总部的业务的支撑。

这些具体可能不太好表述,不过在业务支撑的同时,我们也在尝试一些技术上的沉淀,例如:

  • 可视化组件库,在数据可视化业务中,下沉的标准组件库,同样是和设计师联动
  • 大屏组件库,在数据大屏业务中下沉,赋能快速搭建数据大屏
  • 数据采集工具,在营销业务中,一种统一的数据采集工具及配套设施
  • 活动搭建平台,将营销活动组件化,快速搭建各种营销活动,并且自动回流数据
  • 审批流程配置工具,快速配置一个自己的审批流程表单
  • 诸如此类

我们的工作方式

团队工作模式比较自由,除了 leader 之外,不会有太多管理上的约束,我们的初衷还是要打造工程师文化,因为我们是一个偏技术赋能型的团队,技术和创意很重要,而不是按时完成任务。

但是有一点是我们比较关注的,就是作为一个输出型团队,如何规范的管理自己的输出,才能和集团这么多业务方形成良好的联动效果,这对技术团队来说是个比较大的挑战,但是也是可以带来很好的成长的,例如我们通过 定方向 -> 同步所有业务 -> 同意后,出具体规划 -> 同步所有业务 -> 同意后,开始开发 -> 发布版本 -> 记录 changelog 和使用文档 -> 同步业务方 这样的方式做项目,可能大家会觉得这样的方式会不会对个人成长不利,恰恰相反,保持这样的节奏做事情,会让你更系统的去思考问题和解决方案,也会对你有更高的要求(要说清楚,还要睡服其他人),能做到这些的开发,能力绝对不会差。而在平常面试的时候,你会发现很多人无法表述清楚自己的想法和方案,就是因为缺乏这样的训练。

另外,团队里比较崇尚分享,形式比较多的是 codereview(面对面)项目复盘纯技术分享等,团队内有记星星的模式,对各种不同类型的分享记录星星,每年两次复盘,对贡献突出者做奖励。

另外,这样的一个团队结构和方向,我们鼓励所有人在自己的专业领域能够不断深入和挖掘,同时也鼓励大家能够了解更多其他技术栈的开发,扩展自己的技术视野。

想加入我们

简历直接投递:sunxinyu@souche.com,注明:应聘



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
author-avatar
诚实的愛是最棒的_977_415_874
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有