这篇文章,是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中,我考虑了很多方式怎么样才能有效地学习。
1. 要看书。在成千上万的编程图书中,可能很大一部分根本毫无用处。 但是仍然有很多图书对你的(编程)能力有很大的提升。我一直坚持,相比在网络上查找很多有用信息,在同类图书中查找要来得更容易更快捷。阅读技术图书可心 更好地抓住核心内容。对于理论,架构和设计等方面来说,图书也一样很有帮助。只不过要找到高质量的、权威的信息,就不如网络上可供查找的范围广。
2. 读代码。这也是我很喜欢的一种方式。如果我并没有几年的专业编程 工作经验,在学习之初我并不会去读很多复杂的代码。如果我要是早些开始学习,我将是一个比现在更好的程序员。但是,开始时我会从一些开源项目里,去学习那 些源代码(当然,这些代码不能与我的工作有关,也不是我自己写的)。要从自己会使用到的,或者自己感兴趣的程序开始这项工作。我是从 Paint.net 这个网站里开始学习的,而且已经积累了很多关于 .NET 的编程技术。
读别人的代码可以为你提供更多不同的工作思路,这比你完全凭自己思考得到的工作方式要多。
3. 写代码。谨记,要写大量的代码。从根本上来讲,最好的学习方法就 是实践。如果不写代码,你根本不能把(某种语言中)内在的东西学习透彻。学习之初,可以从一些技术指南和图书中照搬一些尽量简单的程序。当然,这种照搬是 要自己完全手工输入,而不是复制和粘贴,这两种之间的效果差别是很大的。这种方法的主旨就在于,使知识内在化,并思考其用法,而不是盲目照抄。学习过程 中,要时常查找新的 API 调用方法,这其实是简单的事情。
最重要的是,要写一个你自己的程序,不管它是一个简单的游戏,或者是一个参与开源项目的程序,还是一个公为 你自己使用的简单插件。用不同的方式来写程序,尽量尝试使用新的技术,新的技巧,新的设计方式。一定要让现在的项目比以往的项目更好。想要成一个优秀的开 发者,这一点是核心。
4. 与其他开发者交流。像 Apple,微软,Google 等大公司一样的新闻描述的一样,(与其他开发者交流)可以让你解决一些复杂的问题。虽然这并不能让你感觉到自己已经成一个团队或是社区的成员,但是这种方法可以让你接触到更多不同的想法。
不同类型的项目要求不同的设计方法,代码技术,开发流程和设计思想。如果你工作在一个小团队里,你不必与太多的人接触,只要在用户群会议中找到一些人(来讨论)即可。如果这样还不行的话,参与到在线论坛中与其他人讨论(这时你需要更努力地寻找高质量的讨论内容)。
6. 教会别人。相对于仅仅读代码之类的工作,教其他人学习可以让你更深入地学习某个技术,这种方法有着非凡的效果。教会别人某个技术,同样也会让你更专注于这种技术,并且可以比别人更深层次地理解它。同样你也会面对一些问题。
“如果你不能向一个六岁的儿童解析清楚一个概念,那么其实是你并没有完全理解它。”Albert Einstein说。
教学场景可以是无穷无尽的:与工作搭档一对一交流,休息碰面,非正式周会,学习茶会,教室,讨论发表会,等 等。每周在相同理念开发者之间举办一次30分钟的非正式会议怎么样?每周,让几个人来就他们想要更深入了解话题,向大家传授这些技术知识,并且展开讨论。 如果你知道你将要向团队成员们传授正学学习的知识,你是不是更想要了解这项技术的每个细节呢?
6. 收听网络电台。如果你有空闲的时间,可以订阅网络电台节目。我现在最喜欢的编程节目就是 .Net Rocks。这个节目还会做一些视频节目,叫做 dnrTV 。这样会让你即时捕捉到最新最好的技术。一个人是不能学习到所有知识的,而网络电台刚是一个学习了解广泛知识的途径。
7. 阅读博客。博客远远比阅读者要多,但是其中有一些却是极其优秀的。我这里不并不是要推荐博客,因为网络上已经有了足够多的博客。这是与真正在开发你所喜欢和使用的软件的开者联系的好方法。
8. 学习新的语言。即使你已经在 C(++,#) / JAVA 等语言上有很好的造诣,仍然有很多其他可以解决问题的编程语言。学习新的语言,是对你已有思维方式的挑战。这不仅仅是另一种语言,更是对思维的重新架构。 的确,所有的语言最后都会被编译成汇编程序,但是这并不意味着高级语言毫无价值。
9. 学习不正确的方式。除了 要学习应该怎么做,还要学习不应该怎么做。经常阅读 Dailywtf.com ,学习你并不知道的经验与教训。学习适当的面向对象设计方式,代码写作方式,和必须要写的代码等,是很好的方式,但是如果不细心的话也容易养成不良习惯。 学习认识不正确的思路是负责项目开发至关重要的一环。
维基百科对很多觉的不正确方式有十分透彻的分类。
10. 要谦虚。
学习,意味着:
-
用更好的知识代替不完美的知识
-
增长你所不知道的知识
只有承认自己有所不足,才能有学习的动力。归根到底,就是谦虚,不对吗?如果你开始认为你已经掌握了所有需要的知识,那么你就危险了。真正的学习是如饥似渴地追逐知识并使其内在化,这需要很大的努力。我们都知道这一点,但是要必须时常不断地提醒自己。
分享到:
相关推荐
通过深入学习 ArcGIS Engine 的开发技术和实践案例,不仅能够帮助开发者构建出高效稳定的地理信息系统应用,还能进一步推动 GIS 技术的发展与创新。希望以上介绍对初学者及有经验的开发者都能有所帮助。
“实战篇”讲述了5个采用不同开发技术的实例,其中,详细地讲解了实例的分析、设计和实现的步骤。 本书内容循序渐进,实例丰富,从基础知识到工程的创建与实现,都是按照读者的学习习惯一步一步来实现的,开发步骤...
### 精通HarmonyOS:高级应用开发技术与实战指南 #### 一、深入理解HarmonyOS架构 - **架构概述**:HarmonyOS采用了微内核设计,旨在为多设备提供统一的操作系统框架。这包括分布式软总线、分布式数据管理等核心...
3. 创建OAF项目:在JDeveloper中创建一个新的OAF项目,选择合适的项目模板,为后续开发打下基础。 三、OAF元数据理解 1. Page Definition:定义页面的布局、组件和行为,是OAF页面的核心元数据。 2. Data Control:...
在当今的科技时代,智能穿戴设备已经逐渐渗透到我们的日常生活中,而Android系统因其开源、灵活的特性,成为了众多智能穿戴设备开发的首选平台。...这个资料包将是你踏上Android穿戴设备开发旅程的重要指南。
#### 三、基于UML和设计模式的软件开发技术 - **UML(统一建模语言)**是一种用于软件工程的标准图形化建模语言,它可以帮助开发者清晰地表达系统的设计意图。 - **设计模式**是指在特定情况下解决常见问题的模板或...
- 书中通过多个实际案例,如内存技术设备(MTD)的驱动开发过程,来帮助读者更好地理解和掌握驱动开发技巧。 - 分析并解释具体的驱动代码,包括如何处理中断、DMA传输等高级主题。 7. **最佳实践和注意事项** - 在...
《精通JAVA——JDK》是一本深度探讨Java编程语言及其开发工具集JDK的专业教程,旨在帮助Java开发者提升技能,实现技术的精进。作为Java的基石,JDK(Java Development Kit)是学习和开发Java应用程序必不可少的工具...
### 精通Eclipse V3.4:深入解析与实践 #### 一、Eclipse工作台概述 Eclipse是一款非常流行的开源集成开发环境(IDE),广泛应用于Java开发以及其他多种编程语言。对于初学者而言,熟悉Eclipse的工作台是进入...
通过《精通PHP+MySQL》的学习,你不仅能够熟练运用这两种技术进行Web开发,还能建立起良好的编程习惯和问题解决能力。无论你是初学者还是有经验的开发者,这份资源都将是你提升技能、解决问题的宝贵工具。实践代码...
标题和描述中提到的知识点是关于“Unity4.x从入门到精通(上)”这本书。...同时,随着技术的演进,很多开发习惯和最佳实践也会发生变化。因此,不断学习和适应新技术,是保持在游戏开发领域竞争力的关键。
《C#数据库应用程序开发技术与案例教程-周洪斌》是一部深入浅出的教程,旨在帮助读者从初学者到精通者逐步掌握C#语言在数据库应用开发中的各种技术和实践。本教程结合PPT讲解和实际源码示例,涵盖了数据库基础、参数...
本教程涵盖了从安装配置到实际项目开发的全过程,通过丰富的实例和源代码,让你从零基础逐步进阶为VS2010的专业用户。 1. **Visual Studio 2010简介** Visual Studio 2010是微软推出的一款多语言、全功能的开发...
《Delphi 7从入门到精通》是一本旨在帮助初学者和有经验的开发者深入了解和掌握Delphi 7编程技术的教程。这本书的核心目标是通过系统化的学习,使读者能够熟练地运用Delphi 7进行软件开发。Delphi 7是一款经典的面向...
Spring Cloud Alibaba 提供了一系列符合中国开发者使用习惯的组件,如Nacos(服务发现与配置中心)、Dubbo(高性能RPC框架)、Sentinel(流量控制、熔断降级组件)等,为分布式系统开发提供了强大支持。 在微服务...
### Java学习从入门到精通,全面了解面向对象开发 #### 一、Java语言概述 **1.1 Java基础全程脉络图** Java是一门高级编程语言,它具有平台无关性、面向对象、安全性高等特点。Java的基础全程脉络图旨在为初学者...
《精通Android4随书源码》是一本专为Android开发者设计的高级教程,旨在帮助读者深入理解Android系统的工作原理,并通过实例代码提升开发技能。这本书的源码是学习过程中的重要辅助材料,提供了丰富的实践案例,让...
VB6.0不仅仅是一个工具,它还是一种思想和方法,它的学习不仅仅是为了掌握一门技术,更是为了培养良好的编程习惯和思维方式。通过本书的学习,读者可以将面向对象的程序设计思想融入实际开发中,从而编写出更加优秀...