A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑妞~ 金牌黑马   /  2014-8-25 09:43  /  4259 人查看  /  26 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 立姐 于 2014-8-25 11:34 编辑

Step 1 别抱怨了.准备好漫长的征程,或者晾在一边赏鸟去吧

对于真正希望成为一名优秀的程序员的人,希望成为专家,成为究极人物的人,如果真的值得去做,那么投入十年进去,并不算什么,对吗?

第一步就是吞下这颗子弹。接受这个过程将不止花去十年,而是一生的追求。只因为你想去做它,才去做它。如果一个人不情愿做某事,他是不会成为它的专家的。

Step 2 写很多很多的代码

同时写许多许多的代码。不一定是好的代码。很长时间内,你写的代码都不是好的代码。好的代码,好的taste,是需要大量的实践培养的。对什么新的工具、新的算法、新的问题感兴趣,或者遇到了什么问题,就去尽可能地写代码实践,尝试使用它。

学习的过程永不停止。如果你怀着在每一天中尽自己最大的可能去学习,取得你所能得的最大的“里程数”的态度去学习,你将会走很远。进入这样一种状态:任何的一天/一周/一月中没有学到有趣的东西的话就是失败。每天都有足够多的酷的、有趣的东西等待你去学习。即使你已经学习了15年,虽然找到它们更困难了,但仍然可能找到。没有一个人能够掌握编程世界中所有的知识,所以如果你觉得没有东西可学了,就去找到一个新的项目,写更多的代码。

在你做这些东西的时候,注意了,你要寻找中间的模式,如那些可以自动化执行有用的东西,或者你写了许多的代码可以分离出来作为共享的库的东西,或者其他集中的位置。去寻找对于特定任务简单的编程语言。找出来那些对于同样的任务不擅长的编程语言,并思考为什么一些语言对于这些任务相比其他的更加具有生产力。

但最重要的,就是写许多许多代码。但记住了,如果做的事情不再有趣,就没必要做下去了,如果你不能在此期间享受过程。

Step 3 读更多的代码

当你积累了一些项目的时候,开始读其他人的代码。刚开始的时候,这样做很困难。他们做了许多你从没有做过的事,或者使用了你不习惯的风格,甚至使用了你没有学习过的编程语言。如果你觉得它有趣的话,尽可能地去读这些代码。不要担心深入地分析任何给定的项目的代码,至少刚开始时不要担心。

读一些新的代码可以展示给你新的思维方式,这有利于扩展你的思维。扩展思维对于保持进步是很重要的事。它帮助你确保当你前进时能够持续发现新的东西去学。

一定要与其他的程序员交流。问他们如何和为什么做那些特定的事,是否采取了不同的角度做事情,问他们对自己的代码是否有建议。一定要礼貌,因为高级的程序员非常地忙。尊重会带你走很远,这是个紧密联系的行业,名声很重要。

Step 4 学习许多编程语言。在一些中成为专家

你实际上不会有很多盈余的时间,至少不足够同时学习许多的语言,除非你异常地幸运。所以可以在一个较浅的层面上学习许多的编程语言,足够了解什么使他们流行,什么使它们擅长于它常用的领域,它们的缺陷是什么。扩展很重要。不要局限于一种类型的语言,如命令式的语言,或者OO语言,扩展学习一些函数式语言或者声明式语言。

学习Lisp的一种方言。对于你日常的编码来说,你不会去使用它。但学习、实践它会令你成为一名更好的思考着,你会对简单的递归的系统的魅力有更深刻的理解。坚持学习它、实践它直到令你情不自禁地叫出“啊哈”的那一刻到来。那一刻之前,你都会觉得那是一坨奇怪的语法和蹩脚的用法。在你剩余的职业生涯中,它便会成为人类设计的最令人瞠目结舌的优雅的概念。

之后,学习一门纯粹的函数式语言。我推荐Haskell。它通过其它函数式语言包括Lisp的方言都不用的方式强迫你纯粹地使用函数思想。当你理解了设计monads的目的后,或者其它“啊哈”时刻,你将会进入到思索的能力和设计优雅系统的能力的更高的层次上。

最后,学一门声明式语言。SQL也算,虽然比较弱。Prolog常常被推荐。还有XAML,XSLT和XQuery。声明式语言是你告诉计算机你希望它做什么,计算机来琢磨如何做它;而命令式语言则相反,你告诉计算机如何去完成一件事并希望它正确地做了你想做的事;而在函数式语言中,你描述了数据域类型如何转换。

Step 5 自创编程语言

它不需要很复杂,或者高级,甚至不需要特别优雅。甚至不需要是原生的想法。我常常推荐写一个Lisp解释器(如果使用Lisp的方言写更好)。这是你学习基础知识的一个很好的方式。实际上,你可以对计算机编程设计的基础有很好的感觉:词法分析,语法分析,编译,解释,虚拟机,还有基本的设计抉择对一门语言在各个领域的实用程度如何影响。

你将会在此过程中得到以下3样东西:

1)你将会对你选择的工具如何工作有更加深刻的认识,这样你就可以写出更加高效的代码。

2)你将会开始意识到主流语言和工具背后的设计抉择的原因。这将会使你更有效地选择你要用的工具。

3)你将瞥见一些仍然存在于工具和语言中的未发现的可能性,这样使你开阔了眼界,可以发现新的可以学习和实验的有趣的酷的东西。

Step 6 学习其他人从没有学习过的东西

这是最困难的也是最后的步骤。又是另一个十年。保持兴趣和做有趣的事情,离开那些不让你享受的事情。


黑马微信扫一扫,生活更美好




26 个回复

倒序浏览
说的太对了,赞楼主
回复 使用道具 举报
这得多少年的积累啊,突然感觉一寸光阴一寸金,寸金难买寸光阴啊
回复 使用道具 举报
学习,收藏
回复 使用道具 举报
路漫漫其修远兮
回复 使用道具 举报
那些做到这些的时间是怎么来的
回复 使用道具 举报
杜工 高级黑马 2014-8-26 07:47:57
7#
还在学习和阅读代码的过程中,煎熬啊。。。。
回复 使用道具 举报
谢谢楼主,这东西很有用
回复 使用道具 举报
很不错的文章,兴趣还是最大的动力啊!
回复 使用道具 举报
这是一个漫长努力的过程
回复 使用道具 举报
1024 赞起了!
回复 使用道具 举报
支持一下
回复 使用道具 举报
童鞋们,加油,立姐,力挺你
回复 使用道具 举报
讲的有道理
回复 使用道具 举报
step1 ,正在进行中。。。
回复 使用道具 举报
将的太好啦      
回复 使用道具 举报
讲得非常好,受教了
回复 使用道具 举报
沉淀 在沉淀
回复 使用道具 举报
收藏,慢慢看.....
回复 使用道具 举报
终极程序员呀
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马