从2012到2021,今天的字节跳动已经走过了9周年,员工人数也已经突破了10W。

不过,回想九年前的创业早期,整个公司只有十几个人,探索方向期间,创始团队一口气做了包括今日头条在内的12款App,但支持这么多产品开发的安卓工程师只有一人。

他叫李秋良,凭一款自己全程设计研发的App打动了张一鸣,成为字节跳动创业第一年内唯一的安卓开发。并且当时除了写代码,他还常常直接接触用户、处理反馈,从用户的视角不断优化用户体验。

李秋良也是少数几位伴随公司成长到今天的研发之一。现在,我们又找到了他,和他聊了聊那些九年前的故事。

自学安卓,开启创业之路

2007年,从北京航空航天大学计算机系本科毕业后,李秋良并没有进入互联网行业,他先去做了两年用于芯片设计的EDA软件研发,之后又跟朋友一起创业做SNS社交游戏——那个年代“偷菜”、“抢车位”还是火爆一时的应用。

但移动互联网的浪潮也在影响着他。

游戏项目停掉后,李秋良自学了当时刚新兴的安卓开发。学成之后就开始寻找安卓工程师方向的工作。找工作的预期很简单:不一定必须是大公司,但技术氛围一定要好,工作的地方最好能离自己家近一点。

照着这两个标准搜寻,水木论坛上的一篇招聘帖将他带到了面试官字节跳动CEO张一鸣的面前。

李秋良入职后才发现,在很长一段时间里,张一鸣一直在参与每一位候选人的面试,保证招聘的高标准。

面试的时候,因为当时安卓开发还是新兴技术,并没有太多人了解它,为了考察李秋良的抽象表达能力,张一鸣就和李秋良聊了聊Linux,发现李秋良可以简单清晰的讲清楚Linux中的X Server和X Client的关系。

李秋良还拿出了自己开发的一款安卓电子书阅读器App,这款应用支持多种文本格式,也支持多种字符集,“除了logo之外,整个App的产品设计开发都是我做的”。

大部分研发都不会像他这样自己独立做产品,但后来这种不设边界的工作方式也成为了字节跳动文化的一部分。

面试通过,成功入职,李秋良成为了创业团队的一员。

公司不大,甚至办公都是在锦秋家园的民宅里,但他觉得团队的技术氛围很好,大家做事务实,沟通平等,也会快速迭代,当时虽然还没有「中台」这个概念,但是也会注意效率,注重可复用性。他自豪地说。

研发成果要复用,经验教训也要复用。有一天下午,大家正在锦秋家园写代码,突然电脑一黑,房间断电了。

当时,居民区的电表不能联网,需要用可充值的电卡供电。如果你给电卡充了500块,插卡后电卡里的余额转移到电表中,电表里的余额+500,电卡余额-500。当电表余额几乎耗尽后,才会提示用户拿着电卡去线下买电。这次断电事故发生时,电表的余量已经耗尽,电卡中又没有余额,只好所有人停下手头的工作,等着同事跑出去买电。

尽管这并非产品和开发的问题,但当时只有1个人的行政部门依然发了事故通报和后续改进措施:电卡每次插到电表里之后,一定要先买一次电,防止突然断电后还要专门跑去买电耽误工作。

不顾虑犯错,清晰地把问题暴露出来,是改进的第一步。这也形成了字节跳动的工作风格:坦诚不装,勇于反思,从错误中获得经验和教训,不断成长。

敏捷试错:一个工程师开发12个App安卓版

9年前创业的时候,整个字节跳动公司包括技术、产品、运营、HR在内只有十几个人,李秋良这个新任安卓开发工程师,其实也是团队里唯一一个安卓开发,准备开发的产品是内容平台App。

那时,创始团队看到了时代的浪潮:

移动互联网的普及之下,整个社会的信息传播介质会从纸媒迅速转移到手机,信息分发方式会迎来很大变化,朝着实时、双向、形式多样的方向发展,出现了一个做内容型平台的窗口期。

既然是做内容平台,那做什么内容呢?

在开始做之前,初创团队开了一次会,张一鸣讲了初步的策略:

内容的形式上,可以是短文、长文、图片、音频还有视频;

内容的类别上,可以是搞笑段子、汽车、家装、时事新闻……

在此基础上排列组合,就可以得到许多种产品形式,在各种产品形式中不断试错,总有一种可以成功。

创始团队要做的第一种产品形式是搞笑图片。

选择图片的原因有两方面,一是团队在图片处理技术上已经有了一些积累,包括图片的存储、识别、消重等等;二是看到当时市场上有一些图片类App很受欢迎,觉得自己可以做得更好。

方向定下后,新产品的开发立马就开始了。

那段时间里,李秋良这个唯一的安卓开发和3名iOS开发同学坐在同一个房间里,每天早上9点大家就开始工作,直到晚上12点才离开。就这样封闭开发了5周,公司第一个App搞笑囧图上线了。

搞笑囧图上线仅一个月就收获了100万用户,DAU也达到了几十万。

这种形式初步获得了市场认可,团队迅速在汽车、家居等不同的内容领域尝试了新的产品。

他们每做完一个App,迭代一两个版本后就去做下一个。因为团队规模不大,每个月初公司所有人聚在一起讨论用户反馈和技术问题,商议接下来迭代哪个App,评估开发的工期,确定当月的工作规划。

就这样,创始团队在仅有十几个人、其中安卓开发只有李秋良一人的情况下,就迅速完成了12款App的开发,当中也包括今日头条。

“如果我是用户,这样的体验并不好”

在早期的产品研发过程中,创始团队就坚持不断打磨产品体验。李秋良说,因为安卓手机机型非常多,部分机型出现了种种不适配的情况,让用户体验非常糟糕,花了很多时间不断优化。

而图片类产品面临着尤为明显的困难:“比如说有一些很长的图,如何在手机上打开、实现不错的展示效果,都需要花很多精力来优化。”

这些体验优化项目中,今日头条客户端评论区的迭代让李秋良印象最为深刻。

早先许多的文章阅读类App中,读完一篇文章需要专门点击“评论”按钮,才能看到网友们说了什么。在开发今日头条时,初创团队认为“专门点击按钮”让用户多了一步操作,为什么不把它去掉,实现直接划到文章底部就出现评论的效果?

“我们发现,没有一家公司这样做,其他产品要么把评论单独做一个页面出来,要么直接放到网页里,体验都不好。”李秋良说。

要如何把评论直接放进文章页面,还能平滑地把文章和评论两个模块拼接在一起?李秋良想出了第一种方式:

划到文章底部,再划一下进入评论区。

这让用户体验有了一定优化,读文章和看评论的过程是连贯的,技术开发的成本也可控。

一周后,李秋良把这个方案实现了。但当他以用户视角来看的时候却发现,这种划到底部再划一下的交互还不够友好,需要让文章和评论区更连贯一些。

于是,他临时修改方案,一个星期之内完成了从文章直接流畅划到评论区的新方案,也就是现在今日头条客户端上的这种形式。

自己动手实操,理解才够深入

内容类产品开发过程中,需要为大量内容做数据标注和分级,这些工作看起来重复且枯燥。

很多公司都把这些工作交给外包公司来做,但字节早期创业时除了专职的内容运营,包括产品经理在内,很多不同序列的团队成员都在做内容的标注。李秋良说:“一鸣自己都在做标注,因为自己做过了,才更好理解内容分级分类的标准。”

同样,作为一名安卓工程师,李秋良没有把自己局限在技术的工作范畴内,很多时候都是直接处理用户反馈。

有一天晚上,李秋良刚刚准备下班,突然收到了一封用户反馈邮件:

今日头条App突然不能刷新了。

一开始,他还以为是个例;结果没过多久,反馈App刷新不了的用户越来越多。

随着用户数的增加,不同用户的网络环境、手机型号设置千差万别,李秋良马上联系了一些提出反馈的用户,直接给他们打电话,建议用户切换网络环境和手机设置反复尝试,“我电话打过去的时候,还有用户是一边炒菜一边在接电话,能听到很明显的炒菜声。”

为了解决这个问题,李秋良把反馈问题的热心用户拉进了一个QQ群,一边在邮件里和同事讨论、分析原因,一边做新的今日头条App测试版安装包,把测试版安装包发到用户群里不断尝试,迭代了三、四版,终于把问题解决了。

而来反馈问题的用户们也不厌其烦地配合他多次测试,李秋良说:“一个产品真正做得好,能给用户带来价值,用户就很愿意帮你解决这些问题,甚至有一些用户提出能不能把手机寄过来,请我们看看哪里出了问题。”

“不要让自己变成流水线的一环”

今日头条上线后两个月就获得了百万日活,李秋良觉得方向选对了:“之前工作的创业公司,花了一年多才有100万用户,大家对新方向更有信心了。”

但这也意味着产品会更加复杂。工程复杂度提升,对背后的开发者来说,需要更高的迭代速度,也要对用户体验做出更多的细节深究。

在支持大量产品快速发展的过程中,李秋良也提升了技术积累,让技术可复用,建设更好的基础设施,用前瞻性视角预先为产品的后期运营做准备。

“大公司都会有这样的成熟机制,但是在早期公司建立这些技术机制是很难的。”

直到2017年,李秋良一直在迭代今日头条的安卓App:“我几乎参与过2016年之前所有的产品。”

现在,字节跳动已经创立9年,李秋良也投入到了抖音新功能的研发工作中。但在他看来,多年来字节跳动技术团队的很多特质都没变:

比如强调敏捷,重视效率,虽然有分工,但边界感不会很强,“很多公司技术太强势,或者产品太强势,但字节跳动很少有这种现象,大家目标一致,多元开放。”

比如从用户视角看产品,“你要做一个To C的产品,自己一定要是它的用户。”2015年之前,字节跳动一直没有专职的测试,整个项目组甚至全公司一起试用新产品,还专门搭建了一个内测平台来请大家试用新App。

不设边界,用户视角,这也是他给自己总结的发展经验。

“其实大家毕业的时候学校背景、聪明程度都很像,但能经历什么公司、什么项目、什么挑战,这对人的影响很大,经历了这些磨练,你会和原来不一样,”李秋良说,“这些是外部因素,但最终还要回归到你自己,要锻炼自己,不要让自己变成流水线上的一环,PM让你做什么就做什么,你自己要去思考这个产品从大的方向到小的体验是怎么样的,这些思考和探索才是让你成长的东西。

而这也是九年来,ByteDancer们推动业务发展的真正自驱力。

9年前,字节跳动第一个安卓工程师是这样工作的相关推荐

  1. 字节跳动python后端_【字节跳动】[字节跳动][实习]后端研发工程师(python+go)...

    职位:[字节跳动][实习]后端研发工程师(python+go)-字节跳动 [岗位职责] 一年的时间,我们已经发展成行业第二,并且今年业务的发展速度是大头条体系最快的,成功的业务造就成功的团队,成功的团 ...

  2. 九章云极发布YLearn因果学习开源项目;字节跳动大量招聘芯片工程师;苹果被俄法院罚款约21.6万元 | 每日大事件...

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 01.九章云极DataCanvas公司开源发布YLearn因果学习开源项目 7月12日,九章云极DataCanvas公司发布YLearn因果学习开 ...

  3. 2019秋内推字节跳动第一题

    题目大意: 球场中有若干个球队的球迷,同一球队球迷坐的位置都是连在一起的,即这个球迷的上下左右以及斜方向 的人都是同一球队球迷.现在要求其中人数最多的球迷人数,以及共有多少个球迷团体. 思路 当时没有 ...

  4. 字节跳动校招——运维工程师-系统架构岗位面经分享

    说在前面: 由于最近事情比较多,好久没有更新博客了,见谅. 前段时间面试了字节的运维工程师-系统架构校招岗位,由于看到这个岗位在网上没有太多的面经,所以在这做一波分享.当然,具体面试的问题已经有一部分 ...

  5. 【校招】面试_字节跳动_客户端开发工程师_二面

    1 面试信息 面试形式:视频面试 面试时间:2020-03-10 14:00:00GMT+08:00 面试时长:约半小时 面试职位:客户端开发工程师-产品研发和工程架构部 2 面试问题 1.A.B轮流 ...

  6. 字节跳动抖音 测试工程师 视频面试

    字节跳动2021提前批测试开发 ---------------------------------------面经1 2020-07-03------------------------------- ...

  7. 入职字节跳动一年,谈谈我的工作收获,另附入职面经

    转眼已经工作入职一年的时间了,还是有非常多收获的,感谢这一年的时光,感谢所有遇到的人,让我变成更好的自己. 正所谓满园春色关不住,一枝红杏出墙来,带着满满的收获我开始了大规模的面试,拿到了大部分 Of ...

  8. 字节跳动、阿里等大厂的真实工作体验如何?5 位程序员的自述

    作者 | 抓码君‍ 在今天这个年代找工作,相比起遥不可及的"机遇"."梦想",越来越多人选择了进入接地气儿的大厂,旱涝保收.稳定增值,不会受市场震荡而变得岌岌可 ...

  9. 字节跳动、阿里等大厂的真实工作体验如何?看看四位程序员的自述

    而那些内部资料则来源于字节内部各条线的技术大佬,他们会将每个模块梳理成学习路线,根据路线去学习开发基本不会遇到什么障碍. 另一方面,公司年轻人占比很大,这意味着工作交流会很顺畅,经常会有各种稀奇古怪的 ...

最新文章

  1. 一系列视频教程 收藏
  2. sql注入——day01
  3. lisp读写cass属性_130507Auto Lisp在CASS图形要素规范化中的应用
  4. js怎么取到遍历中的特定值_LeetCode 1028 hard 从先序遍历还原二叉树 Python解题记录...
  5. JSON文件学习(jsonc、json-c)(不要学这个,去学cJSON)
  6. 【UOJ 51】最接近神的人
  7. 探索Julia(part11)--自定义函数
  8. 最短路(遍历边)计蒜客—DD坐地铁
  9. 十七、K8s+gitlab+Jenkins建立CI/CD解决方案
  10. C语言qsort和C++sort的用法小结和区别比较
  11. cannot help doing用法
  12. win10系统用cadance画封装软件卡死问题
  13. 手机如何将图片缩小到20k?怎么指定压缩图片大小?
  14. python中的cd是什么意思_cd是什么意思 如果learnPython放在其它盘内该如果解决
  15. check if DVE variable is valid
  16. 计算机系统里绘图基本操作,计算机的基本操作
  17. Resnet_50网络结构详解
  18. 80后程序员感慨中年危机,应聘java工程师自我介绍
  19. 银联快捷支付退款 Pay
  20. 张俊林:由ChatGPT反思大语言模型(LLM)的技术精要

热门文章

  1. 学术论文摘要写作技巧:
  2. 【PyTorch】5 姓氏生成RNN实战——使用语言生成名称
  3. [R语言基础]——数据处理实例
  4. 手里有200万,如何理财
  5. 优雅华美 简约奢华 轻奢风
  6. 超声波测距传感器模块在畜牧业的应用
  7. 自然语言处理(九)——数据平滑
  8. 今天是个天气晴朗的日子
  9. 存储过程常用开关(set命令解析)
  10. 接口测试实战| GET/POST 请求区别详解