1 为什么想写这个主题
工作的这些年,对于一个技术初级到高级,到架构,到总监的转身,有许多的感概,有许多的想法。
曾经会想那个还在大学的自己,忙碌于图书馆博览全书,从概率论的股票分析,到人工智能的机器学习,每一本你能看到的前沿的书,如果咱们是一个学校的,或许你也曾经摸到过一样的破旧的或者散发着书香的纸皮和书名,文人说“书非借不可读也”,“随便翻翻”,所以我看书也是以这个理论来指导,当然核心的知道思想就是我非常明确我上这个学就是为了更容易的找到一份好工作。
转眼间终于毕业了,刚工作那会看着自己手里拿的工资,想着也听说着高级工程师的工资水准,以及高级工程师们的住宿方式(有自己独立的空间,花费我1/2的工资来租房,房间啥都有,可能最重要的是有一个自己独立的空间,可以好好思考怎么写代码吧)。
北上广深,一线城市,我都去了一遍,终于也熬到了高级,然后变成了架构,最后也忙碌于总监的产品追求。
这么说着几年过去了,总觉得回顾以往,总结,复盘,总觉得哪里可能可以不那么走,可能可以走得更快,如果形象的比喻,那就是成长曲线是不是可以平方指数,或者直线(那角度也要比45度要大),可最终感觉平均下来也就是一个正常的45度曲线的成长水准。
any way 啰嗦了很多,切入主题,有很多想做的事情,几年前就在思考,但是总找不到切入点,直到15年接触了go语言,并快速学习了它(这里说的快速就是3天看看,然后直接写common的框架——当然这个用了很多的设计模式),然后这几年也带了很多新人,沉淀了以go语言为技术栈基础的技术栈,并向微服务靠齐,前后端分离的产品架构和方案。从中我发现,不单单是我这种老兵,即时从大二的实习生,到刚毕业的学生,到毕业2年的,到毕业4年的,到毕业6年的等等小伙伴,无一不是在实践着快速学习golang,然后起早贪黑的帮我写业务代码,用go。
而我想基于go语言(虽然与其他语言比起来,这是一门最好学的语言),讲一讲如何快速的学习一门语言。
2 怎么做到快速
那就直接上干货,直接上套路,下面是我的实践经验:
2.1 语言总体介绍
熟悉这个”语言的总体介绍”——需要对这个语言的历史、语言的特性(可以做什么,不可以做什么,适合什么场景等)有个熟悉和了解。然后要专门去看看谁在用这个语言,可以通过开源库,语言官网,以及语言社区知道这个语言有多火爆。当然最重要一点,不要忘了,看下招聘网站上,这个语言的薪资水平,人才需求(数量的和能力的),仔细看看初、中、高级的jd要求细节。
2.2 语言的语法和关键字
这个没啥好说的,直接去看吧。
2.3 选择学习的方法
一个语言的学习方法主要有两种,而对于一个语言初学者来说,可能系统的学习方法是比较奏效的。
而对于本身有语言实践基础的人来说,对比学习的方法会效率非常高(而我说的快速的学习主要的人员都是这个背景基础的)。
2.4 执行一些例子
一个语言它的官网或者开源库总会提供一些快速入门的例子,以及针对每个特性的例子,我觉得你有必要去执行一遍。
在执行例子的过程中,你会有以下思考思路:安装好学习开发编译环境,看一遍代码,运行一遍,看结果和自己看的理解的是不是一致的。最后手痒还回去改改代码,在编译运行一遍。于是你有可能就快速的掌握了这个特性。
2.5 针对语言的特性进行专门的针对性学习
语言的特性,也特指这个语言针对某一个业务领域的一些特点,比如go语言,针对高并发,分布式,后台服务开发,简化了服务开发模型,不管是初学者还是老手都不需要掌握诸如epoll那么复杂的服务开发模式,就是使用go开发一个还不错的服务端。还有诸如python的科学计算框架针对科学计算那就是信手拈来。
2.6 写一些小项目或者工作直接使用
最后需要为自己准备一些小项目,这个建议使用这个语言的一些成熟的框架,什么是成熟的框架,比如开源库上评分比较高,搜索引擎的搜索出来最多帖子的,stars排名比较靠前的。这些都是成熟的框架,把这些框架的例子跑起来,同时拿框架来重写(或者直接工作使用)进行项目业务编写,并调试应用起来。最后去在实践中踩坑,去成长。
3 效果
我可以告诉你:
那个大二的实习生,没什么语言和工作基础的,花了2周时间掌握了go语言并开始参与工作项目,交付了很好的实习项目成果。
那个1年c++工作经验的朋友,转go语言只花了5天时间变参与团队的基础库和框架的编写,并参与最终在半年内负责团队最重要的分布式技术架构的核心代码编写。
那个有4年工作经验的朋友,对,你能想到,他基本上是一来就开始变学习,变写看项目代码,并开始着手工作了的。
4 你呢
你呢?你会花多久,1周,1个月,3天?
5 最后我想说的
曾经我带了一群小伙伴(有测试,运维,开发,技术新手,技术老兵)建立一个社群,带了他们学习go语言,所以也才有了我启动的这个go语言专栏——如何快速学习一门语言。其实我想说的就是如何快速学习一门语言。
我还是希望你们都能体会我上面所说的,就像某位大咖说的,“学习英语不应该是学习一门语言和知识,而是应该学习一个技能”,那么我也想说,如何快速学习一门语言,这个也是一个技能。希望你能掌握,当然我的专栏是针对go语言的,那么最基本的我会有所奢求的就是,你们都能快速的学习了go语言,并给自己添加一个技能。
当然更高的奢求就是,能有人可以从中总结或者复盘,掌握如何快速学习一门语言的技能。当然是编程语言。
有疑问加站长微信联系(非本文作者)