如何在开发技术中学海拾贝

老鸟对菜鸟的一些建议
服务器君一共花费了251.689 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

张逸是国内一个架构师牛人,下面是他对学员的一个释疑,私以为不错,推荐之。以下是原文:

首先声明,我可不是要做什么导师,这样崇高的身份与我无缘。我害怕自己才疏学浅,而误人子弟。导师是要李开复、唐骏之流才能做的。因为之前在一家公司和西南大学有一些业务来往,所以应邀到西南大学做过一次讲座,并为软件工程专业的学生开设了一学期《设计模式》课程,认识了一些热情洋溢的未来程序员。如今,他们也踏上了工作岗位。于是,碰到了一些问题。承他们看得起,居然想到给我发邮件,让我帮他解惑。回复了邮件后,发现这些问题也许对很多菜鸟而言,大约会是常见的困惑。站在一只老鸟的角度来看,我的回答或许能够在一定程度上解决他们的困惑。至少,总结我的教训与经验,在学习方法上能给予他们启发,或者说可以少走许多弯路。想当初,我才涉入这个行业时,不也希望有老鸟愿意给我指导意见么?既然如此,那就分享一下。可人老了,总喜欢教训人,所以害怕邮件中的口吻与态度,让人产生不满。所以先来这一段啰嗦的声明。

这位同学的问题如下:

我最近遇到了一些学习上的方法,想向您请教一下。

进公司实习后我发现,还是有太多太多的技术需要学习,我一直记得你曾经告诉我们的,为了要找工作,我们必须得对一个方向够熟练,够精通,我一直都是朝JAVA这个方向发展的。最近我在拼命的学习一些以前没接触的技术,比如EJB,extjs,JSF等,虽然这些没SSH火爆,可学习一下我想以后总会有用的,可是渐渐的我发现一个问题,就是一门技术只要我过一两个月不用,然后人家在问起时,头脑里就是一头雾水,这种遗忘性非常严重,比如Hibernate的validatiion,search 虽然我没将其用于实际的项目中,但是在八月份的时候,我已经好好的学习了,而且还自己动手写了一些demo的,可是现在让我想的话,我完全就忘了,我看到张老师讲课时说的很多技术问题非常熟悉,我想请你指导我一下,要通过哪些方法来避免我这种“遗忘性”,我知道的除了经常写这方面的代码和在博客上写写外,其它没什么方法了,但是如果经常这样做,势必又会耽误学习其它新技术的时间,谢谢张老师在闲暇之余花时间来看我的邮件。

我的回复如下:

你问的这个问题很典型,我相信很多人都遇见过。事实上,我也没有你想象的那么厉害,很多技术我以前掌握的也会忘记。这与人类大脑的遗忘曲线有关,符合科学规律,所以不必为此烦恼。

怎么解决这个问题呢?我想有以下几条:

  1. 一门技术必须多用才能掌握,最好的办法是在项目中运用。如果你在真实的项目中使用了某一项技术,那么印象就会非常深刻。即使忘记,也能很快捡起来。
  2. 如果要学新的技术,仅仅是为了拓宽自己的知识结构,那肯定没有时间对这些技术做大量的练习了。这时候,就要对技术进行分类。看你掌握这门技术的目的。如果技术仅仅是一种工具,我认为只需要了解它能做什么,就OK了。因为即使你把它的整个使用方法搞懂,久了不用也会忘记。如果你知道这个技术能做什么,当做项目时需要用到,再去查阅相关的文档和资料,完全足以应付。如果这门技术非常重要,甚至有许多可借鉴之处,那么在搞清楚它能做什么的同时,还应该理解它的原理、思想以及实现的方法。
  3. 养成随时记录心得和教训的习惯。不管是项目中,还是学习过程中,凡是认为有价值之处,都有必要记录下来。不一定要发到博客上,只要保存起来就好。不过,在保存的时候,要做好合理的分类,以便于今后查阅。不要觉得这个耽误时间,它是非常有用的。我以前就没有充分认识到,导致之前做的项目碰到的很多问题,当时解决了就完了。到现在都无法回忆起来了。现在的我就告诫自己,一定要做到这一点。所谓“磨刀不误砍柴工”,耽误的这点时间是完全值得的。如果你只是不停地学,却不知道积累,那就和猴子掰包谷没有什么区别了。此外,这样的做法还有利于磨练你的文档编写能力、分类和总结的能力。重新整理这些内容,也有助于你再一次理清自己的思路。真的是非常有价值的做法。我记得以前在课堂上也给你们说过。事实上,Martin Fowler的《重构》一书,之所以能写成,就在于他遵循了这一做法。最近,我刚刚完成《重构》一书的点评,其中大量的点评内容也是我采取这种方式日积月累获得的。
  4. 最后一点,是学会选择。软件技术实在太多。要弄清楚你自己的目标。最重要的是要确定自己的职业发展,专业的说法叫“职业生涯规划”。是技术,管理,还是二者兼顾。然后,再有目的性的去学习知识。即使是技术领域,也有很多发展方向:网络、数据库、底层算法、框架、架构、UI设计,性能优化,系统集成,太多太多。不要漫无目的地学,这样也好,那样也好,所以都去学,结果学了又没用上。所以,要先确定目标,然后做出选择,再制定计划,包括短期计划和长期计划。

希望这对你能有帮助。保持联系!

本文地址:http://www.nowamagic.net/librarys/veda/detail/583,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/583

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《重构:改善既有代码的设计》 福勒(Martin Fowler) (作者), 熊节 (译者)

《重构:改善既有代码的设计》清晰地揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。《重构:改善既有代码的设计》提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。

更多计算机宝库...