面对现在更新迅速的新技术,如何快速掌握,以满足工作的需要,是大部分开发者所面临的问题之一。它或许影响着你未来职业生涯的发展。 Hanneli Tavante近日在Our Daily Codes网站上发表了一篇文章《Tips for learning a new programming language (when you already know one)》,正是针对该问题展开。开发者或许可以从该文中找到问题的解决之道。下面为该文的译文。
当开发者们开始一个新项目,或者想转变成一个新的团队,往往需要学习新的语言、工具和框架。
我有一些同事,因不得不用他们不太了解的技术工作而备受煎熬。他们表示这样做很没安全感,也不可能掌握新工具的所有详细信息。经过多年的软件开发,我所了解的重要一点是,你不需要100%的了解所有语言和框架。在小项目中,你可能会用到一些特殊的技术,而这些在你的一生中仅可能用这么一两次,你也不可能因为狂爱该技术而钻研它的全部内容。所以在这种情况下,你只需要了解工作中所必须的那部分技术即可。
我并不是说你不需要深入了解任何技术。我认为你应该精通两、三种语言,对其他语言基本掌握即可,尤其是你工作环境经常变化的情况下。当你不得不学习新的语言,以按时完成工作时,你首先需要打开思维学习“基本的部分”,不要学习该技术的100%。你不需要成为所有技术的专家!而且,通常当你已经很好地掌握两、三种语言后,就可以很容易掌握新语言的基本技术。
有些人曾问我:“有没有快速学习新语言的方法?”。以我看来,并没有万能公式,但我通常会按以下简单步骤来学习任何语言中的基本技术。
基本上,我首先要做得是安装该语言所需的最简单运行环境。例如,在Mac上用Ruby编程,我将下载安装程序,并通过IRB在终端上使用Ruby。这是使用该语言的最简单方法。下一步要做的是,编写一些基本的程序——创建并打印变量、创建并调用函数。该过程上是十分重要,它们可以帮助你熟悉语言的结构。假如你所学的语言遵循面对对象(Object Oriented,OO)原则,接下来你可以采用以下步骤:
正如你所看见的,这些步骤运用到一些基本的面向对象原则——创建一个类、添加属性与方法、创建对象。我们还可以利用TDD(测试驱动开发)对该过程进行改进——提前写好测试代码可以帮助我们更快地学习和记住新的语言。所以有了下面的学习过程。
基本上,在应用OO技术之前,先写测试代码,观察未通过测试部分(红色显示),编写最简单的程序,观察通过测试的部分(绿色显示),在OO原则的基础上对代码进行重构以获得更完美的代码。
(注:我通常采用这样的测试驱动开发原则:编写测试代码—>观察红色显示部分—>作出最简单修改,使红色部分转变为绿色—>进行重构。)
接下来是学习类和对象之间的关系、继承、多态性及其他OO原则。以我个人来言,上述步骤十分有效。当然,如果我使用某些函数式编程语言,那针对OO的步骤也就无法使用了。此外,结对编程也不错。当你正尝试学习某种语言,找一个简单的问题,如Fizz buzz,和一个对该语言有经验的开发者通过结对编程实现它。
如果你确实喜欢某种新语言,那可以考虑继续深入学习。如果并不喜欢它,至少你可以利用它完成工作。