最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

荔枝 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:565503

评论

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

Python1024办公自动化系列

程一初

Python 自动化 办公

宿舍晚上温度高,那是你没听“鬼故事”

华为云开发者联盟

人工智能 AI 华为云 modelarts

Axure导出为PDF

波菠菜

交易所合约跟单开发方,数字资产合约跟单系统搭建

13530558032

影响音视频延迟的关键因素(三): 传输、渲染

ZEGO即构

buffer API RTC sdk

如何与面试官更好的沟通

escray

学习 面试

Python处理Excel文件的实用姿势

程一初

Python 自动化 办公

Python处理图像文件的实用姿势

程一初

Python 自动化 办公

Python处理PPT文件的实用姿势

程一初

Python 自动化 办公

Python处理邮件和机器人的实用姿势

程一初

Python 自动化 办公

当地铁站都比你更努力

escray

学习 面试

MySQL如何快速插入数据

Simon

MySQL 数据库

带你全面认识 Linux

简爱W

MacOS 环境下 Python 访问 MySQL

李绍俊

Python处理音频文件的实用姿势

程一初

Python 自动化 办公

Python处理Word文件的实用姿势

程一初

Python 自动化 办公

巧用SQL拼接语句

Simon

MySQL sql

浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎

Learun

工作流 开发工具 计算机程序设计艺术 表单

深圳区块链支付系统开发,USDT支付系统服务商

13530558032

Truncate用法详解

Simon

MySQL

非IT行业大企程序员讲述MIS系统开发案例

Philips

Java 企业信息化 .net core 计算机程序设计艺术 企业开发

定时任务最简单的3种实现方法(超实用)

王磊

Java 定时任务

区块链交易所系统开发内容,数字货币交易所搭建

13530558032

LeetCode1160---拼写单词---Easy

书旅

LeetCode

MySQL从入门到精通

书旅

MySQL 索引

业务架构是什么?

周金根

BIZBOK 业务架构 IT帮 周金根

Python处理视频文件的实用姿势

程一初

Python 自动化 办公

从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美

华为云开发者联盟

数据 网络 芯片 算力 三体

Python处理PDF的实用姿势

程一初

Python 自动化 办公

数据库设计

Jayli

数据库

教你用SQL实现统计排名

Simon

MySQL

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