要学会游泳,就必须下水。--列宁
编程如同游泳,是一项动手实践能力要求很强的技术活。要想Python入门后进步,只有实战这一条路。重要的事说三遍,实战!实战!用真实的有价值的项目去实战!
很多初学Python的小伙伴,尤其是没有真实项目实战过的,都会遇到这样的问题:
1) 自己独立写代码时,如何把零碎的知识点组合起来,实现整个功能。
2) 领到一个项目,完全没有头绪,先做哪个功能,后做哪个功能?
3) 完成一个功能后,怎么出现这么多的问题和bug?
对于Python新手/入门者,有这些问题,都很正常。技术活要是都这么容易,程序猿哪有这么高的工资呀。
“到底如何解决和突破?”小伙伴开始急了。
我说,“只要坚持实战,拿出你打王者的一半的激情,再用对学习方法。就能快速成功突破晋级。”
接下来,我就以自己10多年的软件开发经验,说说具体的突破晋级方法。
一、 真实项目实战
Python新手很大的学习误区是:
1) 只是看看不动手;
2) 等我把这些基础语法都看的滚瓜烂熟了再去写代码;
3) 不知道取舍,什么知识点都想学;
记住学习目的是能做项目,做项目的目的是为了赚钱。
所以,不要把时间浪费在不能产生价值的无效学习上面,比如上面的3个误区,就是严重的浪费时间。
说起项目实战,我就想起第一份工作之前,在学校学C++的经历。
当时也是自学,买了一本谭浩强写的一本C++书籍。每周会有4次去自习室看书,学习上面的基本语法,从头到尾的看。我也不知道到底要学到什么程度就可以,也不知道哪些内容该学哪些内容不该学。反正就是忘了就看,从头到尾的看了好几遍。现在想想,还好这本书讲的深度不是很深,书也不是很厚,否则真有可能坚持不下去。
到了工作岗位的时候,招我的领导给我布置了一个项目,一是考核用,二是对一个新人的培养。试用期就让我做这一个项目,这时候才发现,以前看书时明明熟悉的知识,突然就忘了或是不知道怎么应用到工作中。有些知识在书上根本就没有提到过。不懂的就去问带我的领导和其他同事。平时下班后,加加班,网上查查工作时遇到的问题,看看别人是怎么解决的。有时候和同事一起在公交车上,我也会向他请教工作上遇到的问题,结果有时候真的会给我很大的惊喜,既解决了问题又扩大了自己的知识面。晚上回家也会看相关的编程书籍。
实习期的3个月很快就过去了,经过这个项目的实战,我学到了很多工作上能用到的编程知识和技能,不再漫无目的的只是看书,更加的注重动手实践,学会向其他人请教和学习。
我顺利的完成了这个项目,顺利的成为正式员工。转正的那天,我的领导专门请我和我们组的同事一起,庆祝我的转正和加入团队。
好了,不扯远了,回到我们的主题来。那么,应该怎么做?
1) 明确自己的Python方向。学习Python是为了完成什么项目?更近一步的讲,你以后要专注的Python应用场景是哪个?
2) 确定Python学习知识点。在上面第1步,我们确定了方向,就能知道我们应该学哪些Python内容。与我的Python方向无关的知识点,不要浪费时间去学。
3) 循序渐进的学习。学习最基本的知识点就可以,不要太深入。然后就去实战,在实战中遇到问题,再去查漏补缺以及深入某一个知识点。
4) 真实项目实战。一定要找和自己的Python方向相关的项目进行实战。这里的真实项目不是课后习题的那种,而是能解决某一项真实社会商业需求的,或是个人相关需求的项目。
二、 坚持与激情
俗话说:“万事开头难。”
对于Python新手,遇到一个问题或bug,可能会消耗很长的时间,1天/2天可能都是家常便饭。
为了完成一个项目,可能需要连续数月的晚上都要写代码到深夜,查资料,学习新知识。
然而,这只是开始,但最难的也是开始。接下来,带小伙们看看牛逼的开发工程师的奋斗日常。
一个开发工程师,坐在电脑桌前,从早上8点半到晚上12点,除了吃饭时间就是写代码和改bug。
每一个工作日,顶着星光出门,踏着月色回家。除了白天在公司的开发工作,晚上还要为了白天遇到的一个技术问题,去查阅无数个网站,一直到凌晨2点。
周末到了,可能依然不能休息。工作上遇到的一个新知识点,需要深入的了解和学习,于是白天到晚上,都在电脑前呆着,2天就这样过去。
…
“牛逼的背后,都是傻逼一样的坚持!”
没有激情的坚持,是痛苦和枯燥的,激情可以来自于技术的热爱。如果没有对技术的热爱,怎么办?那就想象一下高薪资吧(物质上的激情)。
提到坚持和激情,我很感激当初的成长路上,所有给我技术指导和帮助的人。特别是我的第一份软件开发工作时,带我的领导高经理,是他给我实战学习的机会,遇到问题时给我传授解决方法和思路,让我顺利的进入软件开发的大门。
我也很感谢自己当初的坚持和激情,有技术上的激情也有物质上的激情。让我比同龄人更早的有了房子和车子,从此不再为物质条件而发愁。有了这些条件,我也很快的遇到了漂亮懂事的老婆,之后又有了带给我很多快乐的可爱女儿。
现在我负责一些重要的项目,平时工作很忙,但我还是会留一点时间,花在部门的新人培养上面。虽然每年的休假时间不算特别多,但每年也会带着家人至少去一次省外/国外旅游,欣赏外面的风景,感受生活的乐趣。同时,也会带着笔记本,处理公司的紧急事务,边欣赏外面的风景,边敲代码。
三、 高效学习成为专家
3.1. 入门之路
如果你是从新手入门者,按以下方法助你快速入门:
第1步:把握一个重点原则:“切记贪多”,选择最薄的一本入门书籍足矣。
第2步:撸起袖子码代码,选择一个适合新手的开源小项目。先看明白文档和主要代码流程,用笔记录下主要流程,画个流程图。
第3步:然后动手从0开始,模仿他实现整个功能。
通过这3步的学习,你的语言技能可以超越90%的初学者小伙伴,并且具备独立完成一个小型项目的能力。
3.2. 进阶之路
“一个人要想成功,需要的不是全面优秀,而是某一点上绝对的出类拔萃!”
1) 专一和专注;
选定一个语言和一个行业后, 你就要有死磕到底的决心,你的目标是要把业务和语言工具技能,练的炉火纯青。
不轻易换行业,换行业意味着你要重学,前面的积累都白费了。
不轻易换语言,换语言意味着你要重学,半年时候,1年时间,你前面掌握的语言就会忘掉,经验就会跟不上行业趋势。换的多了,你掌握的语言都是学到了一个皮毛。这样的皮毛水平,注定是低收入待遇。
换工作要对口,换公司,一定要找岗位技能和你对口的,这样你的前面的业务经验和语言技能经验,能够发挥最大的价值。同时,新的环境,也能促进你的业务经验和语言技能经验水平更上一层楼。
2) 向专家学习;
牛顿曾说过:如果说我看的比别人更远些,那是因为我站在巨人的肩膀上。
专家往往经验丰富,知识面广,在某一知识领域深耕多年,进行过深入研究。你的疑惑或问题,在专家面前就是小菜一碟;你的技术水平的止步不前,经过专家的指点和传授,也许顿时青云而上。
向专家学习,是你成为专家最快的道路之一,也是你成长最快的道路之一。
有人说,我身边没有专家,你可以看专家的书、教程、视频,等等。其实,不一定非要是专家,你身边比你厉害的,你都可以想他学习。
3) 研究优秀的开源代码;
古人常说:“集百家之所长,融百家之所思。”
学习和研究开源代码,特别是那些软件大神的开源代码,能够快速提高你的编程能力包括架构能力。
看开源代码时,要注意以下几个方面:
1) 系统的整体架构;
2) 系统层次之间数据的交互方式;
3) 模块间接口的设计;
4) 核心数据结构的设计;
5) 设计模式的运用;
6) 代码里的精巧设计;
7) 异常处理流程;
3.3. 专家之路
到达专家这个级别,我总结了以下5点:
1) 语言技能和业务技能已不再是自己的束缚,能够预测技术的发展趋势。
2) 能够独立管理和设计复杂的系统平台,并达到随心所欲的境界。
3) 有一套自己的架构风格和架构理念,甚至是软件哲学理念。
4) 对前沿技术保持足够的热情和敏感,并会积极的尝试和探索。
5) 能够影响他人,乐于帮助需要他帮助的人,善于和他人沟通合作。
有人问,上面5点说的很牛逼,如何达到呀?
我认为大道至简,方法还是进阶之路中提到的那3条建议,剩下的就交给时间和实践的磨练了。
我是 研习社1哥,如有python学习相关的问题,欢迎私信我进行交流。