如何成为一名优秀程序员

简介: 学了很久的Python一直原地打转,不知道如何学下去,这是很多新手都会遇到的问题。

学了很久的Python一直原地打转,不知道如何学下去,这是很多新手都会遇到的问题。

我记得第一次接触 Python 是 2011 年,在逛网站的时候,无意中看到一篇介绍 Python 的文章,觉得这门语言很有特色,于是想系统地学习一下。怎么学呢,市面的上书籍琳琅满目,一开始你可能不知道看哪本,有两个方法,第一个是去豆瓣看书评,好书口碑一定不错,第二个办法就是问有经验的人,他们能给你最实际的意义。我的建议是入门书最好是能在一周到两周内能完成的,那些大部头书就不适合拿来入门,可以放到后面。入门阶段你基本上就是跟着教程一边看一边写,把书里面的实例全部自己敲一遍,甚至两遍三遍。

博客也是一种学习方式,但是不够系统,真正要全面了解一门语言,不是几篇文章能讲清楚的,况且,博客的严谨度没有书籍那么高。所以,博客只能是作为你扩充知识一种的渠道。

学完基础语法后,很多人就停在这里不知道接下来学什么?其实这里面有个误区,你的目的不是为了学习而学习,虽然说我们要做终身学习者,但是我们学习的目的是为了学以致用,接下来,你要琢磨着怎么用你所学到的东西来解决某个问题或者实现某样东西,例如用程序自动完成工作中的一些繁琐任务,或者做个记账本之类的记录自己每天的支出。畢卡索有句名言:Good artists copy, great artists steal,所以,先从参考借鉴别人好的东西开始。

image

这个时候你能看懂部分别人写的代码,自己也能写些简单的代码,接下来,你要去找完整的练手项目来做,没有什么比动手更有效果了,我记得当初学完 Python 的基础教程后看的第一个实战教程就是 Django Book(现在内容已经过时),这是教你手把手写个网站的教程,写完之后你就知道完成一个项目应该是怎样的,会涉及哪些东西,接下来你就可以按照这个思路写自己的第一个作品。

去哪里找这些练手项目呢?知乎有个问题「Python 的练手项目有哪些值得推荐?」这里面虽然推荐了很多项目,但是都不够系统、完整。最好的教程应该是手把手教你,有代码,有讲解的那种。如果只是纯代码的项目,这个阶段对你来说还是有困难的,因为你不知道思路。所以,像那些500lines这样的项目并不适合刚入门的你,还是去找完整的教程吧。比如在线教程 The-Flask-Mega-Tutorial,A Complete Beginner's Guide to Django,Let’s Build A Web Server,当然你可以去买些纸质的书籍,但是实战类的教程有个缺点就是内容很容易过时。

在学习的过程中遇到问题怎么办?互联网这么发达的今天,一定有办法找个问题的答案,因为你遇到的问题别人也遇到过,你唯一要掌握的就是如何用 Google 去找答案,虽然用会百度也能找到答案,但是我们更倾向于找那些能为我们节省时间的工具,显然百度并不是。

到此,你可能已经能独立完成一些简单的项目了。接下来你需要回过头来继续学习,看一些进阶的书籍,比如 Python Cookbook,流畅的Python,Python学习手册、Effective Python、Python tricks 等等。除了Python相关的,你还要去了解数据库知识,网络知识,系统知识,算法知识。当你意识到这些东西都要学了之后,你已经具备成为一名优秀程序员的潜力了。
除了看书,还有看别人写的代码,看那些优秀的开源代码,向高手学习。思考代码为什么这么写?有什么好处?是不是最佳写法?看源代码的好处可以让你更专业。如何看源代码?看那些在你项目中使用过的框架和库,因为看源代码必须是建立在你已经知道怎么使用的基础之上,否则看了也是一头雾水。大型的框架不建议看或者有选择性的看,因为大项目是经过很多年不断迭代演进过来的,你很难短时间内把握作者的思想。与此同时,继续实践,改进你的项目,使之更像是专业人士写出来代码。

不断养成多思考,勤记录,乐于分享的习惯,学习是一辈子的事,你学的越多,不知道的越多,又驱使你去学更多的东西。

原文发布时间为:2018-08-05
本文作者:刘志军
本文来自云栖社区合作伙伴“ Python爱好者社区”,了解相关信息可以关注“ Python爱好者社区

相关文章
|
Web App开发 存储 算法
微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)
如何优雅地解决“消息序列号只要保证顺序性而不需要兼顾唯一性”的问题呢?这就是本文所要分享的内容,强烈建议深入理解和阅读。
3570 0
|
开发者
【有奖调研】搜索错误码优化升级(如ISV权限不足、商家参数异常等问题)
【有奖调研】搜索错误码优化升级(如ISV权限不足、商家参数异常等问题)
218 11
|
存储 NoSQL MongoDB
MongoDB基础
MongoDB基础
1117 0
|
安全 UED
HTTP 代理 IP 使用中的速度与安全性的权衡
随着科技和互联网的发展,越来越多企业使用代理服务。本文介绍了用户使用HTTP代理IP后体验感变差的几个原因,包括延迟增加、带宽上限、服务器负载高、数据包丢失、安全性问题和兼容性问题。希望这些信息能帮助用户解决问题。
218 1
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
900 6
|
机器学习/深度学习 分布式计算 大数据
MaxCompute产品使用合集之如何查看空间资源、CPU和内存以及存储空间容量
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
411 0
|
弹性计算 关系型数据库 MySQL
【技术实验】mysql准实时同步数据到Elasticsearch
Elasticsearch作为大数据场景下搜索和分析的引擎,广泛应用于实时数据分析等场景。本文作者梳理了从MySQL准实时同步数据到Elasticsearch的实操步骤,帮助开发者理解和快速上手。
24857 154
|
机器学习/深度学习 存储 人工智能
人工智能入门基础概念—教你正确打开人工智能世界的大门
人工智能(Artificial Intelligence),是一个以计算机科学(Computer Science)为基础,由计算机、心理学、哲学等多学科交叉融合的交叉学科、新兴学科,研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学,企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等
2922 0
人工智能入门基础概念—教你正确打开人工智能世界的大门
|
自然语言处理 文字识别 计算机视觉
字节团队提出猞猁Lynx模型:多模态LLMs理解认知生成类榜单SoTA
字节团队提出猞猁Lynx模型:多模态LLMs理解认知生成类榜单SoTA
342 0
|
缓存 网络协议 算法
Http协议不同版本的区别
Http协议不同版本的区别
Http协议不同版本的区别