【编者按】唐巧,是国内移动开发黄金时代
几乎所有IOS工程师都知道的名字,众多的程序员从他这里走上了iOS之路。
而于唐巧本人而言,他编程二十余年,从最初的服务器端研发,到客户端研发,再到现在软硬件、供应链,一直在不停地尝试新的职业挑战,《新程序员004》带你走进唐巧的程序人生,希望他的程序人生能给大家不一样的参考。
作者 | 唐巧 责编 | 唐小引
出品 | 《新程序员》编辑部
我是移动互联网时代兴起时的第一批开发者,见证了移动互联网将传统的PC互联网颠覆的过程。也有幸参与其中,推动移动互联网行业的发展。
本文介绍了我从接触计算机到选择职业开发道路,最后再承担起更多非技术工作的过程。希望我的程序人生能够帮助到大家,在面对新的时代机遇时抓住机会,与时代共舞。
接触计算机
我的计算机之旅开始于1999年,那时我15岁,正在读初中。在我舅舅家里,第一次看到windows 98电脑就被深深地吸引了。但那个时候,我对计算机完全没有概念,也不知道能做什么。我去学校对面的书刊亭,试图购买计算机入门的科普读物,但能够找到的只有《电脑报》。
2000年,我升入高中,因为成都石室中学开设了NOI(全国青少年信息学奥林匹克竞赛)课程,有幸得以学习计算机编程相关的知识。我还记得当时学的第一门语言是Pascal,教材很难买到,于是老师自行复印了几本让我们学习。
那是一个让人热血沸腾的年纪!每天晚上做完作业后,我就会翻开编程教材,一句一句地读着那些晦涩的代码,希望参透其背后的算法逻辑。这可能是我这辈子学习知识最艰难的时候了,因为全年级参加这个课程的只有不到5个人,几乎没有交流,老师刚开始指导,也不太会讲,所以只能靠自己看书琢磨。
但现在回想起来,这真是一段“打鸡血”的日子。第一天看不懂就第二天接着看,差不多花了一个月的时间,终于把搜索算法看明白了。由于算法的原理大同小异,学完后再学其它的算法突然就容易多了。
也是在那个时候,我发现计算机相关的杂志变得更多了。《程序员》杂志在 2000 年创刊,我是它的第一波读者。那个时候,每个月我都会去报刊亭买《程序员》。其实好多内容我也看不太懂,但是它就有一种魔力,让我想读懂它。读着读着,好多也都懂得八九不离十了。
2002年,我参加全国青少年信息学奥林匹克竞赛,由于太过紧张,平时能做对的一道题目写错了一个条件,本来是应该“小于等于”,我写成了“小于”。于是程序虽然通过了样例,但在更复杂的测试用例上都错了,最后得了一个省二等奖。如果当初这道题做对,我就可以拿到省一等奖,进而拥有保送资格。
虽然没有了保送资格,但因为备赛的原因,我早早就买了电脑,也接入了互联网。我在网络上查到北京师范大学对于省二等奖的学生,提供了报考自主招生的机会。于是,在2003年的非典时期,我自行从四川到北京,参加了北京师范大学的自主招生考试,并且通过了!我只需要上重点线即可被北师大录取。因为这件事情对我来说过于简单,所以高考整个过程心态都比较放松,最终超了重点线 100 分。
就这样,计算机改变了我的整个中学生涯,帮助我进入了北京师范大学。
玩转计算机
大学开始后,我就继续参与计算机相关的竞赛和社团。竞赛上,我最终获得了 ACM-ICPC 国际大学生程序设计竞赛的亚洲区金奖(如图1)。而社团上,我则参与创建了北师大最大的民间BBS蛋蛋网。
图1 2004年唐巧代表北京师范大学参加ACM-ICPC
另外,我和室友也不断地接网站制作的外包工作,他负责设计,我负责开发,两个人在大学时期挣了不少钱。我自己还给中学生做竞赛培训的家教,这块其实收费很高,在2000年,一般的学科家教才收费50左右1小时,计算机竞赛的家教能收费200一小时。
所以,到了大学的第二年我就可以不用家里给钱,自己负担学费和生活费了。
到了研究生阶段,我进入了IBM、网易这样的企业实习,每月的收入更加丰厚。那个时候IBM的实习工资一个月有4000元,加上研究生本身还有补贴,所以我还存了不少钱。
就这样,在大学里,计算机就让我深刻地感受到了它的力量,既满足了经济需求,也收获了足够的社会实践经验。
走上职业开发道路
2010年,我研究生毕业,拿到了百度、IBM、网易有道的研发工程师Offer,最终选择了变化较多的网易有道,开始了职业开发的道路。
在网易有道,我先做了一年多的服务器端开发。当时正值国外Twitter火热,我有幸参与了网易微博的服务器开发。当时,我负责的是网易微博的搜索服务,为了支持海量的用户发贴能被实时检索到,我们基于Lucene开发了多级索引。整个研发过程对我帮助很大,让我知道了企业级的服务是如何被模块化拆解,并最终完成组合的。
2011年,iphone 4S进入中国,我预感到移动端才是未来的行业发展机会,在咨询了很多朋友之后,果断申请转做iOS端开发。
当时的情景很像十多年前我刚学编程的时候。iOS技术太新,基本上没有任何可以阅读的资料,公司内的同行也没几个,大家也都不精通,所以只能靠自己。但和初中不一样的是:工作和排期已经安排下来了,我只有1-2周的时间,需要完成自学并交付相关的工作。
又是一段打鸡血的时间,那个时候没有中文资料,我找到了斯坦福大学以及WWDC的视频,结合苹果官方的文档,每天用上下班坐地铁和周末的时间来学习。我从来没有这么高强度地学习英文资料,一段时间下来,不仅掌握了iOS知识,还把我的英文听读能力也练过关了。
为了让后来者们不像我学习起来这么难受,我从那个时候开始写iOS的博客和公众号,也由此结交了许多同行。一年下来,我认识的iOS开发者就遍布了几乎所有的互联网公司。
写博客的积累也让我有机会将自己的知识慢慢梳理出来,最终我出版了《iOS开发进阶》,该书重印了5次,风靡一时。
从开发者到更多角色
2012年,我在网易的上司郭常圳邀请我加入猿辅导,作为核心员工参与在线教育行业的创业。在线教育行业在2014年开始火爆,而猿辅导的估值也以每年翻番的速度在增长。
在猿辅导,我的身份角色不停地在变化。
刚开始我是iOS开发的负责人,指导并招聘了很多iOS工程师。
2014年,小猿搜题立项时,我成为它的产品技术负责人,开始接触产品工作。
2019年,开始接触投放和运营的工作。
2020年,组建了智能硬件团队。
2021年,开始接触供应链的工作。
每一次角色的变化,对我来说都是一段似曾相识的“打鸡血”的日子。我会夜以继日地努力学习新领域的知识,希望自己的成长能够快速跟上业务的需求。有些时候,我做得还不够好,但好在公司一直给我机会,让我持续累进。
在从工程师成长为技术管理者的时候,我一边思考一边实践,慢慢形成了自己的方法论,即:将管理工作拆解成为管理业务、管理团队和管理技术。
管理业务时,我通过Scrum敏捷开发将整个业务开发流程管理起来。
管理团队时,我主要关注人的招聘、一对一指导,以及打造积极向上的团队工作气氛。
管理技术时,我主要思考业务发展与技术方案是否匹配,是否需要做及时的技术储备以应对业务增长。
从技术管理者到产品管理者,我主要学会了一些产品的核心方法论,主要为用户思维和数据思维。
用户思维是指能够将自己代入到用户场景中,思考解决方案的优劣性。在这个方向上,我学习了大量MVP(最小可行性产品)的构建和测试方法。
数据思维是指一切以数据导向来评估产品方案。NPS、A/B测试、用户研究是数据思维的具体实践方法。
从产品负责人到业务负责人转变时,我更加关注商业模型的重要性,进而对市场端的获客工作有了大量的思考和实践。
在负责硬件和供应链团队时,我感受到了实体产品交付的挑战,对硬件产品在产品创新、供应链管控、渠道、品牌建设上的竞争局势有了更深刻的认识。
创业的这十年也是移动互联网高速发展的十年,我见证了抖音、滴滴、拼多多、美团的高速崛起,也见证了技术对于行业的变革。这也是技术开发者黄金的十年,很多开源的技术或社区能够在商业层面上带来巨大的回报。比如:
2017年,MongoDB上市,现在市值超200亿美元;
2018年,Github被微软以75亿美元收购;
2019年,Elasticsearch上市,现在市值超80亿美元;
2021年,国内的开源分布式存储公司PingCAP完成新一轮融资,估值超过30亿美元。
这也是人工智能颠覆行业的一年,我们见证了围棋、德州扑克被AI统治,L2级自动辅助驾驶已经广泛应用,信息流推荐和广告投放领域也早已被深度学习统治……各种商业化领域,都开始用深度学习进行功能改造。在教育领域,我们用AI来做:
语音识别,帮助学习者纠正不正确的发音;
语义理解,帮助学习者批改中文和英文作文;
图像识别,帮学习者检查口算作业;
自适应学习,给学习者推荐难度适中的题目,提高练习效率。
这黄金的十年给了我们太多的商业机会,锻炼了很多程序员成为行业专家,我个人也是这行业十年红利的受益者。
未来的机遇与挑战
我是幸运的,赶上了移动互联网的红利,成为第一批的移动开发者。那个时候移动开发刚刚兴起,资料匮乏,而我抓住了这样的机会,在为行业分享移动开发心得的同时,也收获了技术的成长与行业的红利。
中国发展太快了,随着全球格局的变化,未来面临的发展机会和挑战都会越来越多。对于我们这一代技术人来说,只要顺应时代的变化,未来的机会只会更多。
对于新一代的开发者来说,我认为未来的领域会更加集中在用技术和算法进一步改造各种传统的行业,例如:汽车、物联网,以及用技术将人类社会朝着数字化的虚拟世界发展。所以,我推荐大家关注自动驾驶、人工智能、产业互联网、推荐系统、虚拟现实等领域,可能会有新的行业红利出现。
期待大家与时代共舞。