这篇文章,是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中,我考虑了很多方式怎么样才能有效地学习。
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. 要谦虚。
分享到:
相关推荐
一种基于机器学习的新兴技术识别方法:以机器人技术为例 机器学习是近年来发展最快的技术之一,它的应用已经渗透到各个领域,包括机器人技术。机器人技术的发展对人类生活和经济产生了深远的影响,而机器学习正是...
以下是AI从业者必须掌握的十种深度学习方法: 1. **卷积神经网络(Convolutional Neural Networks, CNNs)**:由Yann LeCun等人于1998年在《Gradient-Based Learning Applied to Document Recognition》中引入,...
因此,研究者开始探索新的方法来弥补这些不足,其中,基于机器学习的新兴技术识别方法是一个重要的发展方向。 本文提出的是一种基于机器学习主题模型的新兴技术识别方法。这种方法首先利用大规模的论文和专利数据,...
大规模机器学习技术是一种涉及人工智能和大数据处理的前沿技术,其核心是通过分析海量数据来提高计算机的智能性,使其能够做出决策。大规模机器学习不仅包括传统的机器学习技术,还涵盖了最新发展的人工智能理论和...
深度学习的发展为中文分词带来了新的思路。深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN)及其变种如长短期记忆网络(LSTM)和门控循环单元(GRU),能够自动提取数据中的复杂特征,从而在很大程度上减少手工...
3. **学习与应用新技术**:重视新技术的学习,组织员工学习新技术推广应用的相关文件,开展交流讨论。通过参观学习其他单位的先进技术,邀请专家现场指导,强化技术交底,确保员工能熟练掌握新技术。在编制施工组织...
本次中国教育技术协会信息技术教育专业委员会第十三届学术年会,聚集了国内外专家学者,围绕“信息技术与深度学习”这一主题,展开了深入的探讨和交流。通过大会报告和专题讨论,与会者分享了信息技术在教学中的应用...
保持对新技术的关注,定期学习最新的开发者文档和技术趋势,以保持技能的前沿性。 通过以上步骤,ARM初学者可以逐步建立起坚实的基础,从理论到实践,从简单到复杂,不断深入探索ARM的世界。记住,学习是一个持续的...
深度学习是人工智能领域近十年来最受关注的技术之一,它在诸多应用中取得了优异的效果。但是,当前的学习策略严重依赖大量的有标记数据。在许多实际问题中,获得众多有标记的训练数据并不可行,因此加大了模型的训练...
主成分分析是一种降维技术,用于将高维数据集转换为一组线性不相关的低维特征,这些新特征称为主成分。它通过最大化方差来保留原始数据中的大部分信息,减少数据的复杂性同时保持样本间的差异。 二、因子分析法 ...
以下就是面向数学建模常用的十种解题方法,对于参加建模竞赛或提升建模能力有着极大的帮助。 1. **解析法**:这是最基础也是最传统的数学方法,通过建立数学方程来描述问题,并通过求解这些方程找到答案。解析法...
《土木工程新技术新方法》PPT教案涵盖了多个与土木工程相关的重要概念和技术,主要集中在地基处理和系统可靠度这两个核心主题上。 首先,系统可靠度是土木工程设计中的关键指标,它被定义为一个系统在规定使用期间...
4. K-近邻(KNN):KNN是一种懒惰学习方法,它不进行模型训练,而是在预测时寻找与新样本最近的K个邻居,根据这些邻居的类别决定新样本的类别。5.朴素贝叶斯:朴素贝叶斯是基于贝叶斯定理和特征条件独立假设的分类...
3. **阅读官方文档**:官方文档通常是学习新技术最权威的资源,它会详细介绍技术的核心功能和使用方法。通过仔细阅读和实践文档中的示例,你可以快速入门。 4. **动手实践**:理论知识很重要,但实践经验同样关键。...
"参考资料-014第十四章 建筑业十项新技术应用 (2).zip"这个压缩包文件包含了关于建筑业最新技术应用的详细信息,主要聚焦在十项重要的技术革新上。下面我们将深入探讨这些新技术的应用及其对建筑领域的影响。 1. **...
综上所述,本文展示了深度学习技术在多肽预测领域中的应用,提出了一种新的预测模型DeepPEPred,并通过实验验证了其优越的性能。这项研究不仅在技术上有所创新,而且对生物医学研究和药物开发有深远的实际意义。
9. **第十二讲:条件随机场(CRF)** - CRF是一种用于序列标注和结构预测的统计建模方法,它克服了HMM假设的局限性,本讲讲述了CRF的模型结构和学习与推断过程。 10. **第十三讲:感知机与统计学习方法总结** - ...
《屋面高低跨变形缝施工新技术QC学习教案》是一份...总的来说,这份学习教案详细阐述了屋面高低跨变形缝施工的新技术和质量管理过程,为建筑行业提供了一种更高效、可靠的防水解决方案,对于提升工程质量具有重要意义。