专访|十年程序员董一凡:生命不息,学习不止

董一凡,公众号:sevenmirrors


  • 2005 年——毕业加入程序员的行列

  • 2008 年——开始移动平台的开发至今,大小 App开发了不少

  • 2008-2012 年——Telenav 公司任职,分别开发了 Telenav Track 移动端 App,天天行 iOS App,BrowserCore(移动端的跨平台 UI 渲染框架)

  • 2013-2014 年——珠玑文化任职,拇指阅读移动客户端(iOS,Android)的主要开发者

  • 2014 年至今——Autodesk 数字艺术部门任职,SketchBook 移动客户端(iOS,Win8)的主要开发者


十年程序员生涯,八年移动客户端开发,一个还算不错的 C++ 程序员,目前聚焦于 iOS Android Windows 的客户端开发。也略懂 web 前端后端的开发(Nodejs,Go,AngularJS等)计划将开发当做一生的事业。开发之外,也在学设计,学日语,学画画,学钢琴。总之生命不息,学习不止。


 您是如何成长为大牛的,有什么样的学习路径?

这是一个很有意思的故事。10 年前(05 年)我刚毕业的时候,虽然我号称是会 C++,但实际水平是我连怎么写一个类都不知道,然后莫名其妙的进了一家很小的公司。公司很神奇,在公司里做什么的人都有,打游戏的,炒股的,看小说的,反正基本大家都不怎么干活,我也就在里边混着,看看小说什么的打发时间。那时候觉得自己完全没有前途,每天想的就是转行和离开上海。幸运的是,遇到了一个同事,这同事当时和我乘一班地铁下班,大家有事没事就闲聊,然后发现他居然已经写了好多年代码了,服务器,客户端各方面都非常精通,即便以十年后的标准来衡量,他也是一个很资深的开发。他来了这么个小公司,就是来歇歇的样子,真的是个扫地僧一样的人物。

 

《天龙八部》中少林扫地僧力克两大高手


当时他跟我很不经意的说了句话,现在回想起来,这就是我的转折点吧。他当时跟我说,在中国搞技术,潜心学个三四年,你就会发现没舞台了,就剩下转管理或者出国这两条路(注意,这句话要放在 05 年国内的开发环境去看,如果以现在的环境去看的话,国内的开发舞台其实并不比国外差了)。当时我就觉得,三四年时间就能达到顶峰,好像也还行嘛,正好我当时已经看小说看到无聊了。就把压在箱底的一本「C++Primer Plus」给拿出来了,当小说看。800 多页的样子,每天看个 20 多页,一个多月就这么看完了。然后完全没感觉,然后得知我买错书了,应该看的是 「C++Primer」,于是又把这本买来,继续当小说看,也是看了一个多月的样子看完的。

 

看完这么两本书,其实我的水平也没怎么涨,因为根本没动手啊。不过却有了一个意外的收获,要知道看技术书一般是很累的,可是我看完这两本后,发现自己看技术书就跟看小说一样,完全不会累。于是又买了本「C++ 标准程序库」来看了。三本书前前后后看了半年的样子,之后觉得还是应该写点代码,就拿公司的那些不咸不淡的项目练练手,发现整个体会就变了,原来写代码很吃力,完全不知道怎么下手,现在至少知道去书里查了。就这样过到了 08 年,公司一直没给加过工资,物价一直涨,发现钱实在不够用了,就去了一家美资的手机导航公司。进去后因为之前都是 Windows 的开发经验,就顺理成章的转到 Windows Mobile 的开发。


地铁上安静看书的人是最帅的


现在回过头来看,08 - 10 年那两年是成长的最快的时候,那时候真的觉得什么都很新奇,经常在公司看代码就看到10点多,然后还保持了一个很好的习惯,每天看两小时技术书,有个趣事,那时候公司的卫生间就三个格子,一直爆满,去了没有位置,回去等一段时间去很可能还是没有位置,我就干脆拿本书站在厕所那等。还有就是那时候上班离的远,地铁上也是拿个砖头书在看(现在想想别人应该觉得这人很奇怪吧)。之后就没什么可讲的了,知识的积累也是遵循复利效应的,10 年之后学什么就都感觉很快了。比如 iOS 刚出来的时候,我花一个下午把手册里的 Objective-C 语法入门看了下,直接就上手写 App 去了,遇到问题查查文档,看看示例代码,完全没感觉出什么难度。

 

最后,还有最最重要的一点就是,那时候学会了用 Google,这个真心是神器,后来有一些同事找我请教问题,我就试着在 Google 里搜给他们看,让他们看怎么用关键字,怎么出结果。多年以后,和一个前同事吃饭,他说我教给他的这个习惯,简直完全改变了他的技术生涯。


 如果让您从头学习,您会更注意哪些方面的改进?遇到哪些一些成长瓶颈,后来是怎么克服的?

10多年来,最大的一个失误就是被感情左右了技术的选择。我刚毕业的时候是搞Windows 开发的,后来又有很长一段时间在搞 Windows Mobile 开发,所以那时候对微软的技术栈是非常有感情的。那段时间天生觉得非微软的技术没啥意思,完全不去看其他的技术,结果就是错过了 web 的黄金发展十年。后来 Windows Mobile 自己宣布死亡,转到 iOS Android 开发,才发现除了微软原来还有这么广阔的天地。痛定思痛,现在学会了不被感情左右技术决策,所以在好多程序员都自认为是 iOS 或者 Android 程序员的时候,我两个都搞懂了,甚至还顺带搞懂了下 Windows8。大家现在可能还都觉得我是个移动开发人员,其实前端,后台我也都会了。

 

然后还有就是,如果是现在的环境下,不应该走我的这种学习路径,把一门语言的书看这么多,其实是很低效的。应该是掌握一门语言的最少必要知识后,就要开始做一个东西,哪怕这个东西是你想象出来的需求,也要去做。实践中学习才有意义。


 推荐一个您认为的最佳学习路径!根据学习路径推荐几本技术书籍(或者经常浏览的网站、博客、公共号)。

单独讲 iOS 开发的学习路径:


  • 一开始建议简单的看下 Objective-C 或者 Swift 的语法,Swift 的话建议看 Apple iBooks Store 里放出的The Swift Programming Language注意不用全看把第一章「A Swift Tour」看完就行了有别的语言经验的估计也就是一下午的时间。Objective-C的话我这里有个很有意思的快速指引,里边把 Objective-C 最基础的列成了一张表,看一下就好了(http://www.raywenderlich.com/4872/objective-c-cheat-sheet-and-quick-reference),看完这个,和你别的语言的经验类比一下,知道怎么写 if else,怎么写循环,怎么写函数以及类,这就足够了,不要纠结于细节,这些以后有时间学的。


  • 然后就是立即动手,开始熟悉 Xcode 的用法,怎么用 Xcode 快速的拖出一个界面,然后运行出一个结果来。然后不断的深化你这个程序,目的是熟悉各个UI 控件的用法。这一步的话,推荐看 Apple 的开发文档,开发文档的重要性怎么强调都不过分,一定要学会看开发文档。如果英文实在吃力的话,那只能退而求其次了,这里推荐人民邮电出版社的「精通iOS开发」这本书。这本书的编排还是不错的,每一步都有例子结合,能很好的看到成果。


  • 再然后就得看一些更深的东西了,比如怎么访问网络,怎么存储数据。不过如果已经顺利走出前边几步的话,说明已经入门了,到这一步一般来说就不会太困难了。这里推荐个网站http://www.raywenderlich.com,里边有很多 iOS 的教程,涵盖面非常广。不过是英文的,由于我在技术开发上,已经完全切换到英文环境了,很多年都不看中文的东西,所以也确实不是很好推荐。CocoaChina比较老牌,建议可以去看看,不过我确实没有经验,所以不保证质量。除此之外再强调下,其实这些都不看也没问题,只要盯着 Apple 的开发文档看基本能解决99%的问题。而且Apple 的开发文档一般都还附带有可以直接运行的工程源码,使用起来非常方便。


 推荐这个领域您常用的软件及工具。

Xcode 是少不了的了这里要强调下 Xcode 带的 Instruments这个可以诊断检测你的 App查内存泄露查运行效率都支持非常好用的一个工具。然后是 Github,这个虽然是网站,不过完全可以把它当工具用,里边代码是在太多了。其实你需要的功能,这里基本都能找到开源的实现。最后是 Sketch,这是个设计师用的软件,程序员会一点设计总没错的。


 心中的优秀程序员是怎样的?

首先是解决问题的能力,知道怎么分而治之,不管给他多大一个问题,他知道怎么设计一个方法去一步步的解决。然后有把解决方案做简单的能力,最理想的情况,就是不管什么档次的程序员看到你的解决方案,都会说,这么简单啊,我也会,而不是说太聪明了,怎么想的啊。


 除了工作,您还有其他爱好吗,平时都是怎么度过节假日?

高中的时候画过一段时间的画,曾经梦想做一个漫画家什么的,不过家里人激烈反对以致没办法继续,现在正在抓起来,生疏了很多,不过至少还能画出点来,正在慢慢的进步中。然后因为日漫,日本动画看的比较多,所以最近开始学日语,希望以后能不要字幕看。


董老师画作


节假日的话,我一般会先打游戏打个过瘾,然后看看小说什么的。当然还有美剧了,用人家的话说,别人是看了 100 集美剧,你是看了 100 季美剧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值