【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

荔枝 FM 丁宁:CTO 要扮演好技术领袖与精神领袖

  • 2015-12-09
  • 本文字数:3015 字

    阅读完需:约 10 分钟

【EGO 是高端技术人聚集和交流的组织,每周我们都会对一位会员进行人物专访,在展示会员风采的同时,也分享会员们对技术、对工作、对人生的感悟,本周,我们邀请到了荔枝 FM 的 CTO 丁宁。】

EGO:能先简单介绍一下荔枝 FM 吗?

丁宁:荔枝 FM 是一款手机轻电台应用,用户可以在手机上开设自己的电台并录制节目。荔枝 FM 集录制、编辑、上传、存储、收听、下载于一体,又融入了大量的社交元素,因此它可以满足各类需求的人群,毕竟电台收听人群的年龄段,跨度会比较大。

EGO:荔枝 FM 这样的模式对技术与架构会有怎样的要求与挑战?

丁宁:荔枝 FM 的业务特点比较明显,会有大量并发的页面刷新、以及音频数据的请求,这是最重要的两个方面。

这两个业务特点,一般会首先想到 HTTP 传输和 CDN 加速,但荔枝并没有完全采用这样的方案,因为 HTTP 虽然好处明显,但耗电量大、流量大、可控精度粗、产品体验受到制约等劣势也很明显。最后,我们在这两个方案的基础上研发了更适合这类业务的解决方案,决定采用 TCP,并在 TCP 的模式上做一些补充。

当然之前也有过 HTTP 和 TCP 共用的做法,但这样的多通道会带来状态一致性的问题。针对这个问题,我们又研发了一套单通道多路复用的技术。这个技术使用之后,对上层开发人员来说就和 HTTP 一样简单,但它在底层只保持了一个 TCP 的连接,就能防止多通道导致客户端网卡的拥塞。

最后在荔枝 FM,不仅信令通道会使用这条链路,后期甚至在上传音频节目这一业务上,走的也是这条链路,真正做到单通道多路复用。这样既保持了 HTTP 的易用性,又最大限度的利用了 TCP 的灵活性。

EGO:那这样会不会导致上传、响应等特别慢?

丁宁:其实并不会,数据在最底层是混到一起去上传了,但我们会在应用层处理它们,会把上传的数据分片去传输。我们做了大量的测试,会根据网络的状况和用户的操作实时调整分片的大小。

另外在服务端,为了应对大量的并发请求,我们采用了微架构的调整,不同的业务请求会转到相应的业务处理架构上去执行,而且每一个抽象的架构层之间,都会通过 SDK 的调用来解耦,这样就算某一个业务单元崩溃,也不会导致整个架构的崩溃。

但这么做有利也有弊,弊端就是最初的开发速度会比较慢,因为你需要整个团队都了解整个架构的组成,以及你设计的思想。而且从顶端设计开始,都是高级架构师们一起讨论并定案,什么业务能拆、什么业务不能拆、怎么个拆法、拆了之后、分布了之后可能会发生什么样的问题、如果发生问题该采取什么样的应对措施等,这些在前期的时候都要进行充分的讨论,会花费很多时间。

EGO:那荔枝 FM 具有核心竞争力的技术有哪些呢?

丁宁:荔枝 FM 真正核心的技术依旧是在音频方面。现在荔枝有两个音频团队,分别负责语音处理和语音识别。

在语音处理方面,荔枝 FM 现在有一整套的降噪、回声抑制、润音还有面向小音腔设备录音播放的解决方案。同时,现在我们已经研发出可带有音乐的、全时段剪辑的解决方案,目前还是荔枝独有,这个技术我们也申请了专利。

在语音识别方面,我们的精力主要放在提高语义识别的精度上,我们认为这是未来非常重要的方向,也是现在很多团队在做的事情。对于荔枝 FM 这类应用,难点就是找到用户的兴趣点,并精准推荐相关内容,所以我们需要对所有的音频资源进行定位和标签,再进行精准匹配,也就需要我们在语音识别上下更多的功夫。而且语音识别未来的想象空间会很大,真正识别之后就可以去做更多的事情。

EGO:对于技术团队管理,您有何个人心得?

丁宁:团队管理中,最大的难题并不是技术本身,也不是你带什么样团队,大部分团队的带法都差不多,碰到的挑战也都是一致的。在我看来,技术团队最大的挑战还是找人,找合适的人,所以很多技术管理者都会花费很多时间在招聘上。

过了招聘这个层面,主要的困难就是项目管理。因为,创业这个阶段,你要干得事情非常杂,从上到下每个细节你都需要去关注、去执行。

我从 08 年开始做项目管理,到现在依旧觉得对创业公司来说,项目管理是件挺困难的事。首先,人员是快速招聘的,从四面八方而来,他们在之前形成的一些做事习惯可能并不一致;另外,人员的水平参差不齐,你不可能在创业初期就找到很多的牛人和高手,这并不现实。那怎样才能让这些人高效的朝着一个目标去运作,对于技术管理而言是非常大的难度和挑战。

我们目前采用的是 Scrum 。Scrum 本身的方式很好,像每天的例会、冲刺前的沟通、冲刺结束后的总结等。但在实际的运作过程中,往往会产生很多问题,最后可能就慢慢流于形式了,你会发现团队越做越慢,质量也无法保证,这是很严重的一个问题,也是很多技术管理人都需要关注的。

EGO:在您看来,作为创业公司的 CTO,哪些能力和素质是必需的?

丁宁:对创业公司来说,CTO 这个角色要兼任两个方向的领袖,第一是技术领袖,第二是精神领袖。

首先成为技术领袖,才能将大家团结在你身边,并且给别人信心,让他们相信跟着你技术不会走歪,也不会做无用功,最终一定能把事做成。另外,身为技术领袖还需要具备一定的前瞻性,能预见后期可能会遇到的坑或问题,并帮助大家避开,给大家可靠感。因此,要成为技术领袖,对技术的敏感度以及实际解决问题等能力,都是不可或缺的,而其中,见多识广则是最不可缺的。

精神领袖,更多时候需要和大家冲在一线,以此鼓舞士气。而好处则在于能够让团队士气高涨,对所做的事情充满信心和激情。技术人本身其实是很单纯的,所以你需要把这两个角色演好,让整个团队既信任你,又愿意跟着你向着目标努力。

EGO:那如何才能把这两个角色扮演好呢?

丁宁:这对沟通等很多能力都有很高的要求,你需要有把复杂问题简单化的能力,才能有效的鼓舞大家,另外还需要优秀的管理能力,这些都是需要技术人锻炼的。

所以技术人到了一定阶段后,一定要去锻炼沟通能力,这非常重要。把一个复杂问题清晰的理解之后,简单化,再用简单的语言去跟技术之外,产品、市场、运营等人员沟通。技术人经常会站在技术角度说一些问题,产品和运营可能听不明白,彼此之间就可能产生误解,所以要尽量用大家都能理解的方式沟通,这对整个团队的运转也非常有好处。

EGO:对您最近的工作和生活,您是否有感触想要分享呢?

丁宁:这两年,从技术转到技术管理,也有挺多感触的。我觉得技术只是一种能力,但要做成一件事情,需要多种能力的综合,比如技术管理、沟通能力、社交能力、对目标的认识等,方方面面都是挑战。

之前一直觉得成为一个技术大牛是件非常牛的事情,没有我解决不了的技术难题,大家都来像我请教。但最后会发现,技术只是一种手段,最主要的还是目标的完成,而仅靠技术并不能解决所有的问题、达成既定目标,其他影响因素会非常多,尤其是创业的时候,这种情况会尤其明显。

所以,当技术达到一定层面之后,技术人一定要提升自己技术之外的能力,如社交、沟通等,当然,到那个时候,现实也会逼着你一定要那么做,然后慢慢在实践中领悟。

EGO:您对 EGO 有何想法和期待?

丁宁: EGO 这个平台真的很好,通过加入 EGO 能认识很多人,也能够学到很多东西,有点儿相见恨晚的感觉。期望的话,还是想认识更多的人,也希望有一些人才推荐的环节、技术管理的培训等,可以让我们的团队去学习、提高。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-09 16:565493

评论

发布
暂无评论
发现更多内容

Pandas入门教程-Series类型数据

Peter

Python 数据分析 数据 pandas

招商银行信用卡卡号识别项目(第一篇),Python OpenCV 图像处理取经之旅第 53 篇

梦想橡皮擦

8月日更

Java多线程从基础到并发模型统统帮你搞定!面试总结

Geek_f90455

Java 程序员 后端

架构实战营-毕业设计

En wei

架构实战营

波宝TronLink钱包APP系统开发介绍

Geek_23f0c3

钱包系统开发 DAPP智能合约交易系统开发 波宝钱包

缓存使用的一些问题

旺仔大菜包

redis

Seldon 使用 (五): engine & graph

托内多

tensorflow kubeflow seldon

外包学生管理系统架构设计文档

君子意如何

架构师训练营第 1 期 「架构师训练营第 1 期」

Java大厂74道高级面试合集,附面试题

Geek_f90455

Java 程序员 后端

Java工程师跳槽经验分享,看完跪了

Geek_f90455

Java 程序员 后端

啊哈!这段时间的学习感受

Nydia

8月日更

FastApi-01-初识

Python研究所

FastApi 8月日更

Java多线程实现方式及并发与同步,写的太详细了

Geek_f90455

Java 程序员 后端

【Vue2.x 源码学习】第二十二篇 - dep 和 watcher 关联

Brave

源码 vue2 8月日更

☕️【系统设计】如何设计出优雅且实用的API接口

码农架构

Java 架构设计 架构设计实战

架构实战营毕业总结

En wei

架构实战营

【Flutter 专题】79 图解 Android Native 集成 FlutterBoost 小尝试 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

在线短视频缩略图剪切工具

入门小站

工具

手撸二叉树之最小高度树

HelloWorld杰少

数据结构与算法 8月日更

大数据训练营 -0725 课后作业

cc

Pandas入门教程-开篇之作

Peter

Python pandas 数据分析师 #python

02-架构图

Lane

Rust从0到1-模式-使用场景

rust 模式 Patterns Matching

用5W1H告诉你如何规划合理的测试策略

华为云开发者联盟

敏捷 敏捷开发 测试 测试策略 缺陷

Linux中Shell重定向

入门小站

Linux

从 Druid 控制台(Druid console)中进行查询

HoneyMoose

docker部署redis记录,楼主亲测无异常

小鲍侃java

8月日更

十大排序算法--选择排序

Ayue、

排序算法 8月日更

ECMAScript 2020(ES11)新特性简介

程序那些事

JavaScript ecmascript nodejs ES11 程序那些事

分布式存储系统可靠性:系统量化估算

vivo互联网技术

分布式存储

几百行代码写个Mybatis,原理搞的透透的!

小傅哥

Java spring 源码 mybatis 代理

荔枝FM 丁宁:CTO要扮演好技术领袖与精神领袖_服务革新_陈园园_InfoQ精选文章