文:Gracia程序员
导语:本期采访对象唐巧@唐巧_boy,猿题库iOS高级研发工程师。2011年从Java转向iOS开发,3年时间已成为iOS开发圈很有名气的技术高手。他的影响力,很大程度上来自于他运营的微信公众帐号iOSDevTips,这个面向中高级iOS开发者的公众帐号已有超过5000粉丝,在iOS开发这个小众领域,绝对算得上是大号。算法
这影响力的发端,倒是起源于微末。三年前开始的技术博客写做,为其后创建的QQ群和公众帐号埋下了种子。目前QQ群已覆盖了国内大、中型互联网公司、创业公司、自由职业者及海外的iOS开发者,并和公众帐号之间创建起了良性的互动,经过高质量的内容吸引更多牛人的加入,继而产生更好的内容,造成了一个闭环的生态系统。编程
唐巧的采访安排在一个周末的晚上,出于对程序员职业发展的兴趣,攻略君准备了长长的问题列表,深刻探讨了诸如:程序员须要影响力吗?程序员的影响力对他的职业生涯发展究竟有多重要?程序员如何提升影响力?等问题,四个多小时聊下来,直到咖啡厅关门谢客还意犹未尽。程序员写博客、参与开源社区、参与技术分享的重要性,早已获得许多技术大牛的一致承认,从国外的Jeff Atwood,到国内的刘未鹏等,都明确撰文推荐过。然而落实到操做上,工做忙、压力大、不喜欢交流、惧怕写的东西太幼稚,这些都是让人放弃的足够理由。在日复一日的忙碌中,成为“勤奋的懒人”,努力完成当下工做,但仅限于快速能见到效果的事情。这也许就是人性的弱点。segmentfault
对于任何人来讲,分享都是一件须要花费大量时间和精力的事情,对唐巧也不例外。白天要面对创业公司高强度的工做压力,晚上和周末才能挤出时间。在难以看到短时间成效的状况下,投入精力去作一件付出巨大,“利他”大于“利己”的事情,无疑是一场考验。这个过程当中的咬牙坚持,展转反复,和运动极限遇到的挑战相似。但那些最终打败本身,顺利经过这场考验的人,将有机会见到更多的风光,遇到更好的本身。微信
2010年我研究生毕业加入有道,前后作了网易邮箱底层的API开发,和网易微博上的实时搜索系统。因为微博没作起来,加上我看好移动互联网的发展,就申请转到有道云笔记组作iOS开发。我以前对Java很熟,但没有iOS开发的背景。有道的技术氛围很好,容许员工转向新的领域。公司的技术评级制度就鼓励员工精通两门以上的语言,达不到就没法涨级别。框架
当时是11年5月左右,公司给了我一个月时间学习iOS开发。因而那一个月几乎没干活,每天看斯坦福的视频和代码,一个月以后就能上手了。接下来用了三个月时间,从无到有开发了有道云笔记的iPad版。作完iPad版,又给iPhone版增长了手写、涂鸦、密码保护等新功能。性能
刚加入有道的时候,很喜欢它的工做环境,牛人不少,很适合技术人成长。但待了一年以后,发现公司的技术氛围开始变化。有道的领导基本都是技术精英,缺少懂营销、推广和管理的人才,不少产品作的很好,可是都没成,加上搜索没作起来,离职同事愈来愈多。资金投入的减小致使新人的质量降低,原来良好的技术交流氛围也消失了。部分新人对技术没有热情、公司内iOS的技术交流搞不起来、技术上没有机会作更深刻的东西,这几个缘由直接致使了我想离开有道。学习
原本计划等合同期满了以后再换公司,并且我有网易的股票,9月份能够兑现。但去年5月份的时候,遇到了如今这个机会。我当时想的是,即便创业不成功,我也会经历一个iOS产品从无到有的过程,这对我来讲是一个很好的机会。而且团队的同事都曾经合做过,你们都特别喜欢技术,和一群兴趣相投的人一块儿工做会很开心。因而放弃了手上的股票,加入这家创业公司。spa
微信公众帐号的诞生和前期的积累息息相关,这还得先从写博客提及。在作iOS开发以前,我就已经开始写技术博客,当时尚未开我的博客。iOS开发是个新生事物,三年前会的人不多。我发现没人谈这个,而这又是个快速发展的领域。写博客一来能够树立我的品牌,提升自身的影响力,二来能给整个社区贡献内容。Java开发的任何内容都已经有人写过了,网上一搜一大堆。而由于没人谈iOS开发,原创的博客资料就愈加珍贵。写了几篇以后,就干脆独立开了一个博客。操作系统
这样写了一年博客。加入创业公司以后,因为作iOS开发的只有我一个,因此当时很恐惧,惧怕失去和你们交流的机会,因而建了一个QQ群。首先把我之前的同事都加进来,而后经过同事的人脉圈子,想办法把其余公司作iOS开发的人都加进来,拉拢了大概20我的。这20个种子用户中,其中有几个的水平特别高,也很喜欢分享和讨论,因此天天都会有一些讨论出来。我感受讨论的内容实在太好了,若是不分享给你们有点说不过去。正好去年春节的时候微信推出了公共账号功能,就建了一个。
因而天天下班以后,我会把群里讨论的内容作一些梳理,经过公众帐号发出去。不夸张的说,我是第一个在公众帐号中起iOS开发这个名字的,因此那段时间涨粉涨得特别快,很快关注的人数到了1000人。公众帐号运营三个月以后,冯大辉和池建强分别推荐了一下,又迅速增长了1000粉丝。
这些优秀的内容吸引了不少牛人申请加入QQ群,当群人数加到30人的时候,我开始有意识地作一些控制。例如让申请人提供真实姓名、APP做品、Github账号、博客地址,我会看他的博客和Github,而且找认识的人核实他的基本状况。就这样QQ群慢慢加到了50人,成员覆盖了从大型互联网公司、中型互联网公司、创业公司、自由职业及海外iOS开发人群。这个群已经产生出一种生态效果,对于任何的行业问题,都已经足够自行讨论出一个明确的、有结果的、正确的答案了。
微信公众帐号的粉丝也超过了5000人。估计国内有10万的iOS开发者,固然活跃的人可能到不了这么多。我但愿能将公众帐号粉丝发展到2万,覆盖差很少20%-30%的iOS开发人群,按如今的增加速度还须要一两年才行。
坚持写博客可能和我原来的经历有关系,我曾利用暑假去福建支过教,教小孩计算机。我以为把知识传达给别人是一个很舒服的过程,某种意义上来讲,你的思惟延续到他们身上,感受像是你的生命延续到他们身上了。支教的时候这种感受特别强烈,我对计算机的热爱传递到学生身上,是一种特别有成就感的事情。
写博客还有一个缘由,感受技术男很容易不善沟通,我想经过写博客,锻炼本身沟通、语言组织方面的能力,这也是自我完善的一个过程。我平均一个月发两篇博客,每写一篇要四个小时。通常是周末下午开始写,写到吃晚饭。吃完晚饭以后,修改一下发布出去。
最近刚和出版社签约,打算写一本iOS开发的书。国内iOS提升类的书比较少,翻译的质量也不高。这本书预计要写一年,明年年末交稿。虽然投入跟产出根本不成正比,但仍是愿意凭兴趣作事。整个中文世界的技术资料跟英语世界是无法比的,基本上如今iOS开发的资料还得经过Google查找。国内真正愿意写文章的人太少了,我以为有两方面缘由,第一是有的从业者对技术并非真正感兴趣,另外是中国的教育过程不强调我的的写做和表达,不少牛人作得很好,也很喜欢本身作的事,但不喜欢写,不喜欢分享。这就形成国内的技术资料很是少,交流圈子小。
很是重要,可是不少人没有意识到。阿里很是强调技术人员在社区的影响力,在评级的时候会把这个因素考虑进去,这是第一个把影响力做为评级标准的大公司。当你有了必定的影响力以后,有可能推进一项技术的发展,或者改变你们对某个技术观念的见解,不只能够推进公司的项目,甚至还有可能改变整个技术生态的走向。
程序员我的塑造自我影响力能获得不少好处,首先是能够提高自个人表达能力,这对自我是很好的成长;其次是能够结识不少同行,并且是兴趣相通的同行,你的人脉关系和交流圈子将获得扩大;第三是当你有想法推进一些事情的时候,影响力或许能够帮助你完成这件事。
我私下里问过几个技术水平很高的同事,为何不写点博客、去参加一些技术分享。他们感受表达是一件很困难的事情。其实我以前的表达能力也比较差,高考语文150分才考了90,可是我一直坚持写东西。固然我更可能是把分享技术当兴趣来作,由于从开始分享到获得好处,这个过程见效很是慢,若是真是要功利地在利益驱动下作,还真挺难坚持的。
iOS开发属于入门比较快,可是精通比较慢的技术。一个月入门,三个月熟练,但有不少深刻的技能须要一段时间的积累,这个积累我我的认为须要三到五年,我本身如今也没有达到。
客户端开发最重要的是保证流畅的交互和合理的UI设计,用户用起来不会卡,而且感受很舒服。程序员须要跨界地了解一些UI用户体验方面的东西,并在有限的内存和CPU的限制下,把这些效果实现。一样的效果在iOS设备上实现的很好,在Android上可能就很难作。每一个设备都有本身的特色,开发受限于操做系统,因此过往的经验很难去复制,须要掌握特有领域的一些知识。
新入行的人若是有钻研精神的话,能够经过工做中遇到的问题慢慢积累。思惟习惯会决定这我的能走多远,例如网上搜到一段解决问题的代码,有些人会去研究,为何这段代码能工做,背后的原理是什么,不知足于简单地解决问题,而是经过深刻思考来积累知识。这可能暂时对工做没有直接的帮助,可是长远来讲这两种思惟方式会形成巨大的差距。为何大部分人老是提出那些很初级的问题,由于他历来不去思考。
另外,我仍是个传统的博客阅读者,会订阅不少国外的博客,经过阅读博客积累一些东西。我以为这也是一个很好的学习方式。
我想成为iOS方面的专家,刚才说这个过程须要3-5年的积累,我感受本身掌握得还不够深。经过写书,持续发博客和微信公众账号,做为个人驱动力,让本身能够持续提升。我其实还想了解Android开发,但但愿iOS开发达到必定高度的时候再去作。我想研究跨平台的解决方案,移动开发最终颇有可能造成一个大统一的开发的模式,经过一套方案来同时解决iOS和Android开发。要解决跨平台的问题,必须精通代码在各个平台下运行的差别性,能作这件事的人,必定须要同时精通Android和iOS开发。
跨平台目前尚未很成熟的方案,你们都在尝试。豆瓣刚出的豆瓣音乐人,用了PhoneGap框架,能够直接编译成iPhone、Android和Windows Phone的代码,能极大地提高开发效率。HTML5有这么高的关注度,就是由于它能解决跨平台开发的问题,如今HTML5在手机上的体验还不是很好,苹果比较强调用户体验,它更倾向于你用原生的代码来实现,实现交互的效果会好不少。
还有一个趋势就是远程动态更新客户端的代码。APP Store的审核期限从一天到十天不等,增长一个功能,或修复一个Bug,须要提早一两周。经过新的技术手段,让APP具有自我升级功能,可以自动去更新内部的逻辑代码。这个技术目前也有一些不太成熟的实现方案,PhoneGap框架在必定程度上能够作到,经过HTML5从新下载一个新的网页,就能够改编以前的内容。还有经过Lua实现的,或经过一个相似于HTML5和CSS配置来动态改变APP的内容。目前这些技术方案都还不是很成熟,无法作到通用性,也无法保证很好的性能、开发质量和速度。
此次创业我不是合伙人,个人目标更可能是经过这个创业项目来锻炼本身。经过参与一家公司的建立和发展,在这个过程当中学习公司如何运转、如何作决策、会经历哪些困难,为下一份真正的创业积攒经验。加入这家公司以前,我很担忧创业公司的管理是混乱的,没有章法,什么都作,什么都不精,每天累得要死。加入以后才发现,其实不少创业公司是小而美的,同一段时间在创业公司收获的成长和回报,会远远高于大公司。若是不是出来创业,我不可能在技术上得到那么多收获成长,也极可能不会那么积极地跟他人交流和维护公众帐号。选择离开网易,虽然损失了一些工资和股票,可是和回报比起来不值得一提。我挺鼓励有志向的人创业,特别是趁着年轻的时候。
从最开始的教育社区粉笔网,到如今的猿题库,公司在发展过程当中也遇到一些坎坷,但咱们及时调整了产品方向。整个技术团队也是小而美的,保持着很是高效的工做效率,咱们合做得很是开心。公司的社保和公积金都按最高比例缴纳,去年底还发iPad Mini,既有大公司的福利,但同时又保持小公司的创业气氛。
最大的区别是创业公司的工做更加高效。首先事情变得更多,若是想要不加班,就须要想办法尽可能高效地去作事情。咱们会用敏捷Scrum的方式来安排将来的工做计划,作粉笔网的时候,彻底按照预期的三个月交付。我以为敏捷方法要成功实施,关键仍是看团队文化和团队成员的向心力。有人说过,只要团队牛,无论用什么管理方法都能成功,由于团队成员会自发作一些高效的沟通,管理只是辅助手段。
举例来讲,为了防止对他人工做的打断,咱们还采用了Wiki来记录重要的事情,基本上默认任何事都能在Wiki上找到解答。好比说服务端作了一个接口,确定会写在Wiki上,等开发完了须要调试时候,其它同事能够去Wiki上看这个接口,按接口去调试。对程序员来讲,一次打断就是很大的时间消耗,要接上上一次的思路至少要十分钟。若是能够拥有整段不受打断的工做时间,效率会有极大的提升。
大公司开会太多,同事间沟一般用QQ,工做状态常常会被是分红小段时间,经常是下班了才有时间写代码。大公司的大部分时间都是消耗在沟通上了,你会以为生命被浪费。但在小公司,工做效率的提升会带来我的很大的成就感,你会发现一天干的活可能比大公司三天或五天还多,你的成长也会很是快,就会以为很舒服、很知足。
大公司有太多的体制和制度来局限一我的的发展,KPI制度、晋级制度、沟通成本等,不少人以为这就是一份工做,或者即便有热情投入进去,努力也很可贵到反馈。创业公司的利益驱动更强,你的付出直接跟回报关联,而且由于生存压力,会更注重减小沟通成本,提高工做效率,保证开发速度和质量的平衡,一切目的都是快速把产品完成。创业是条不归路,接触过大量之前接触不到的东西,眼界开阔不少以后,就再也难回到大公司作螺丝钉的角色了。
虽然公司业务发展不错,但此次创业远远没到成功那一步。创业公司最怕就是“活死人”,即能挣到钱,可是企业的规模一直没法增加,这就陷入一个两难的境地,是继续投入、继续运营,仍是放弃,“活死人”是创业公司最难受的状态。若是此次创业成不了,我可能会尝试另外的生活方式,可能会去作老师,专门教iOS开发。如今培训行业不多有像我这样,有大公司工做经验,又有创业经验,并且本身又专心在研究iOS技术的人加入。我以为我当老师应该挺好的,我挺享受教书的状态。若是一个月只收几个学生,带着他们作项目,针对他们的特色教学,他们的收获确定比在大班里面学到的多。
另外一个想尝试的就是作独立的技术咨询,帮公司提供iOS解决方案。调研不一样公司的需求以后,找出可复用的部分,作成通用的解决方案。第三个想法是作自由职业者,经过本身写APP或者接活产生收入,并去不一样的城市体验生活。
我骨子里是比较内向的人,特别宅,就喜欢计算机相关的东西,平时有时间基本上就是研究一下新技术,写写博客。我还对作饭感兴趣,能作一手好菜,一生对本身的胃好点,是一件很幸福的事。
我比较喜欢用编程作一些好玩的事情。之前春节回家玩QQ上的找茬游戏,玩了一下子就以为没意思,因而写了一个自动找茬的程序,把胜率作到了99%,之因此不是100%,是由于我为了把程序作得象真人,把找茬点击的速度降下来了,遇到别人也是机器人的时候,就挂了。
相似的事情还有就是我本身作过QQ象棋的外挂程序,也是很是牛逼。基本上输的时候对方一看就是机器人。由于象棋的机器人有一个特色,它的算法是基于搜索和剪枝的,通常状况下,进入比赛盘中的时候,搜索的深度都差很少,因而你就会发现,对方的机器人每次行动的时间都几乎如出一辙。看两边机器人下棋还挺有意思的,你说呢?
唐巧的技术博客:http://blog.devtang.com/
唐巧的微信公众帐号:iOSDevTips
技术人攻略访谈是关于技术人生活和成长的系列访问,欢迎和咱们有共同价值观的你关注“技术人攻略”,邮箱 devlevelup@gmail.com,新浪微博 @devlevelup,但愿能成为技术人成长的精神家园。
欢迎经过微信公众帐号关注技术人攻略
感谢SegmentFault提供博客专栏及推广支持。
感谢迅达云成提供云主机及技术支持。