这篇文章,是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中,我考虑了很多方式怎么样才能有效地学习。
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. 要谦虚。
学习,意味着:
用更好的知识代替不完美的知识
增长你所不知道的知识
只有承认自己有所不足,才能有学习的动力。归根到底,就是谦虚,不对吗?如果你开始认为你已经掌握了所有需要的知识,那么你就危险了。真正的学习是如饥似渴地追逐知识并使其内在化,这需要很大的努力。我们都知道这一点,但是要必须时常不断地提醒自己。
分享到:
相关推荐
### 精通HarmonyOS:高级应用开发技术与实战指南 #### 一、深入理解HarmonyOS架构 - **架构概述**:HarmonyOS采用了微内核设计,旨在为多设备提供统一的操作系统框架。这包括分布式软总线、分布式数据管理等核心...
《精通Struts:基于MVC的JavaWeb设计和开发》是孙卫琴撰写的一本经典教程,对于想要深入理解和掌握Struts框架的开发者来说,它无疑是必读之作。Struts是一个开源的Java web应用程序框架,它遵循Model-View-Controller...
1. **Struts框架基础**:Struts框架是Apache软件基金会下的一个项目,它的核心是基于Servlet和JSP技术,旨在提供一个结构化的、可扩展的和可维护的Web应用程序开发平台。通过使用Struts,开发者可以将业务逻辑、数据...
- **利世达国际商贸平台**:这是一个国际贸易平台的改造项目,张三参与了数据库设计、权限管理模块、待办任务模块的开发,用到了Spring整合JavaMail、Quartz定时任务、POI数据导出和Redis技术。 综上所述,张三...
- `chapter10.rar`:根据命名习惯,这可能是书中第10章的代码示例,可能涵盖了更高级的主题,如国际化、异常处理或Struts与其他技术的集成。 4. **关键概念**: - **ActionForm**:Struts中的表单bean,用于收集...
精通Struts基于MVC的Java Web设计与开发,这一主题深度探讨了在Java Web开发领域中,如何利用Struts框架实现MVC(Model-View-Controller)架构模式下的高效、可维护的应用程序构建。Struts作为一款开源的Web应用框架...
国际化是指使JSF应用能够适应不同国家和地区用户的习惯和需求。通过设置不同的语言资源文件,可以让应用支持多语言环境。 ##### 8.2 JSF页面布局 页面布局是JSF应用的重要组成部分。合理的页面布局不仅可以提高...
在Web开发领域,JSP(JavaServer Pages)和STRUTS框架是两个重要的技术组件,它们一起为构建动态、交互式的Web应用提供了强大的支持。JSP是一种服务器端脚本语言,允许开发者在HTML页面中嵌入Java代码,以实现动态...
4. `type="date"`:允许用户选择日期,显示的日期选择器符合用户的设备和操作系统习惯,提高了用户体验。 5. `type="datetime-local"`:提供了选择日期和时间的控件,适合本地事件的预约或安排。 6. `type="range...
4. 参与产品国际化相关工作,要求开发者了解多语言环境下的开发策略和技术。 任职要求包括: 1. 计算机及相关专业本科以上学历,至少5年的游戏开发经验,其中3年以上C++开发经验。 2. 掌握C、C++、Java等编程语言。...
在IT行业中,C++作为一款强大的编程语言,广泛应用于游戏开发、软件工程和嵌入式系统等领域。以下是对几个C++相关职位的详细说明和任职要求: 1. **C++游戏客户端程序开发**: - **工作职责**:开发者需要熟悉使用...
- **国际化与本地化**:支持多语言环境,易于全球化部署,满足不同地域用户的使用习惯。 - **扩展类库Zii**:自1.1版本起,Yii引入官方扩展类库Zii,集合了核心团队成员的开发成果,极大地丰富了框架功能,提升了...
13. **国际化与本地化**:讲解如何使应用支持多语言和适应不同地区的文化习惯。 14. **服务与后台处理**:讲解Service的使用,如何在后台执行长时间任务。 15. **Google Play服务**:介绍Google提供的各种服务,如...
1. 至少三年JAVA Web开发经验,具备扎实的JAVA基础和良好的编程习惯。 2. 熟练掌握Spring、SpringMVC、Mybatis、Springboot等常用Java框架。 3. 熟悉基本数据结构和算法,如栈、队列、链表、递归、排序和搜索等。 4....
Swing还支持国际化和本地化,使得应用程序能够适应不同地区的语言和文化习惯。通过使用ResourceBundle和Locale对象,开发者可以轻松地为应用程序提供多语言支持。 此外,Swing提供了JTable、JTree和JList等组件,...
外贸业务是全球化的必然产物,它能拓宽市场范围,增加销售机会,提升企业国际竞争力,并有助于获取先进技术与管理经验。 2. **外贸业务人员的角色** 他们不仅是语言工具的使用者,更是具备行业知识的市场营销专家...
《PLC综合开发利器——CoDeSys基础编程及应用指南》 在自动化行业中,PLC(可编程逻辑控制器)扮演着至关重要的角色。而CoDeSys作为一款强大的PLC编程软件,深受工程师们的喜爱。本指南将深入探讨CoDeSys的基础编程...