黑马程序员技术交流社区

标题: 终极程序员跨过的艰难六步 [打印本页]

作者: 黑妞~    时间: 2014-8-25 09:43
标题: 终极程序员跨过的艰难六步
本帖最后由 立姐 于 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 学习其他人从没有学习过的东西

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


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





作者: 黑马黄武先    时间: 2014-8-25 09:55
说的太对了,赞楼主
作者: 潘多拉    时间: 2014-8-25 10:34
这得多少年的积累啊,突然感觉一寸光阴一寸金,寸金难买寸光阴啊
作者: 许愿じ☆VE杰    时间: 2014-8-25 12:33
学习,收藏
作者: Java吕品    时间: 2014-8-25 19:28
路漫漫其修远兮
作者: 不可言    时间: 2014-8-25 21:26
那些做到这些的时间是怎么来的
作者: 杜工    时间: 2014-8-26 07:47
还在学习和阅读代码的过程中,煎熬啊。。。。
作者: 郭.威    时间: 2014-9-25 23:21
谢谢楼主,这东西很有用
作者: clevergump    时间: 2014-9-26 21:12
很不错的文章,兴趣还是最大的动力啊!
作者: 田峻菘    时间: 2014-9-27 22:31
这是一个漫长努力的过程
作者: chuck_heima    时间: 2014-11-9 11:09
1024 赞起了!
作者: 一朵奇葩    时间: 2014-11-15 20:55
支持一下
作者: 逗比程序员    时间: 2014-11-23 14:38
童鞋们,加油,立姐,力挺你
作者: 穿裤子的云    时间: 2014-11-28 23:44
讲的有道理
作者: quick3g    时间: 2014-12-7 18:05
step1 ,正在进行中。。。
作者: chaijie    时间: 2014-12-14 01:25
将的太好啦      
作者: sunspot    时间: 2014-12-20 23:38
讲得非常好,受教了
作者: chaijie    时间: 2014-12-30 01:36
沉淀 在沉淀
作者: 木子轩    时间: 2015-1-9 14:59
收藏,慢慢看.....
作者: HHFSpeed    时间: 2015-1-13 21:16
终极程序员呀
作者: qiezhiyi    时间: 2015-2-27 10:12
积累加上创新,收藏下!
作者: PlwNs    时间: 2015-3-4 23:22
学习了,谢谢!
作者: 班凤飞    时间: 2015-3-5 18:02
这就是传说中的终极进化之路
作者: 柯泉    时间: 2015-3-17 00:33
一步一个脚印,我们的未来会更加美好
作者: zhaotiao3080    时间: 2015-3-23 08:15
写很多很多的代码:P
作者: 1048    时间: 2015-3-23 10:29
自创武功。。 。。。 得多厉害。。
作者: 378939632    时间: 2015-3-24 21:32
终极程序员呀




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2