这是四月份 OpenResty Meetup 上面一个同学的提问,我当时不假思索的回答是三点:找牛人带,有工作上的需要,以及自己的努力。
这里可以展开来说一说。自己的努力,这一点是毫无疑问的,有一个著名的『一万小时理论』,注意它的前提是你的每次努力都有正向反馈,这个理论才会成立。健身符合这个理论,而买彩票则不是。
如果努力的方向不对,你会付出比别人更多的时间和精力,甚至越努力越失败。所以我把努力放在第三的位置,它是有两个前提的。
第一个前提是找牛人带。如果你要成为某个领域的专家,请先主动找这个领域的专家,跟着他们去学习。在几年前,只有到大公司,到核心部门,才能接近这些大牛,和他们背靠背一起工作,手把手结对编程,这无疑是最好的学习途径。这条路很多时候靠的是运气,你不知道大牛是否徒有其名,以及性格脾气,还有是否会带人。
而现在时代不同了,就算你在偏远的小城市,都可以通过各种互联网教育平台,让各个领域的大牛给你上课。你可以先看看里面免费的课程,觉得靠谱再购买更深入、更系统的手把手(面对面)课程。比如 StuQ 出品的公开课和小班课,我感觉是最直接有效的找牛人带的方式,里面的老师都是业界有分享精神和丰富经验的大牛,涵盖 iOS、安卓、前端、容器、大数据这些热门技术,实在是学习的利器。
第二个是学以致用。你需要有一个工作中实际需要的环境,来使用学到的技术。我见过不少自学 iOS、安卓和前端的程序员,由于工作中用不到,大都浅尝辄止。你是不是也是趁着大促,买了很多技术书,但是只看了前两章呢?我是的 :(
如果你通过学习,发现自己真的很喜欢这个方向,但是现在的工作又没有机会用到,就应该换个岗位了。
在我的经历中,很多时候,是产品倒逼着我去学习的。比如很多年前我们的业务在 MySQL 单表过 100 万条记录后,面临严重的性能问题。索引设计、 SQL 优化、数据库参数调优、RAID卡、盘柜、热备等等,团队里面没有一个人熟悉,但产品的压力倒逼着我们一步一步往前走,后面单表记录过几亿,单数据库大小过 T,依然跑的非常欢快。优化过程其实我都记不清了,但是每次凌晨数据库操作完湿透衣服的紧张感、Albert Lee 误操作数据库打的辞职报告,却是记忆犹新。这些需要工作的实践来学习。