这是一个科技高速发展的时代,也是新技术层出不穷的时代,对于软件开发人员或想要成为软件开发人员的朋友来讲,也许面对眼花缭乱的技术,学习起来无从下手,本文,我将结合自己近二十年软件开发的学习经历,和大家分享一下。首先,先说明一下我当前进行开发的主要两个技术环境:

  • .NET环境,主要使用C#编程语言,常开发的项目类型是“窗口+数据库”或使用ASP.NET开发Web项目(这也要求对HTML、CSS、JavaScript和美工有一定的研究)。
  • iOS App,使用Objective-C加Sprite Kit开发一些小游戏。

这有些跨界了哈!^-^。那么,在这些年的学习过程中,我的学习方法是什么呢?我想,简单地说就是看书、实践、思考、广泛了解各种技术,下面一一道来。

首先是看书。相信有很多不愿意看书的朋友,他们的理由主要是“没钱、没时间、有网络”。好吧,前两个一定是站不住脚的,一个月花一百元买书,每天看三十分钟,周末每天看两个小时,应该不是什么难事,主要是你愿不愿意了,对吧?至于网络的情况,大家也许认为在网络上什么都有,还需要看书吗?那我们就讨论一下要看书的理由。

我们学习一项开发技术,例如一种新的编程语言,我相信只在网络上看资料是不够的,一种技术是一个完整的体系,如果没有系统的学习,是不可能深入地掌握的,此时,看书就是一个很好的选择,一本书可以系统地介绍一种技术,对于初学者来说,完整的、系统的学习是非常重要的,这有助于我们打下坚实的基础,所以,一定要看书。

实践。在这里,实践不只是实现书中或网络上的示例,更不是随便粘贴代码来进行开发。实践应该是实战演练,即使是没有人出资购买我们的软件,也应该全身心地去做一个或多个项目,把这个项目当成艺术品一样精雕细琢,让项目的设计越来越合理、越来越完美。在这一过程中,我们才会对开发技术和方法有着更深入的理解。

思考。我们知道,实现一个软件功能会有很多技术和方法可以使用,问题是,我们应该选择哪一种?书中或网络中的示例是不是合理呢?是不是适合我们的项目呢?此时,敢于提出质疑、敢于挑战权威、敢于尝试自己的方法。这些就要求我们需要多多思考,并用实践来验证一切,来验证自己或他人的错误和不足,这就是软件开发,是一项创造性的工作,如果没有质疑、没有创新,何来的发展呢?

当我们在一种环境下的开发技能有了很大的提高时,我们要做的就是进一步的学习,广泛了解各种技术和方法学。软件开发不仅仅是编写代码,而软件架构师也不是高高在上,作为一名软件开发者,即使我们现在的工作用不上,我们也要从更高、更广的层面来学习和理解软件的开发;学习更多的知识,拓展更广的知识面,对于我们自身的发展和进步,无论是事业上的,还是个人修养上的,都是一种促进。

也许你想知道我都学习了些什么,那么,我就列出来吧。首先,介绍一下自己这些都学习了些什么开发技术。我是从1995年开始学习软件开发的,当时是BASIC和C、C++为主,还学习了FoxPro(说实话,当时真不明白数据库干什么用的)。很快,Windows当道,窗口开发很自然的选择了Visual Basic,逐渐对软件开发有了新的认识。再后来,就基本完全是自学了。学习面很广,相信很多朋友都不会相信,这些内容包括:Visual Basic.NET、C#、Java、PHP、HTML、CSS、JavaScript、Objective-C、Swift、Sprite Kit、Access、SQL Server、MySQL、设计模式、人机交互、软件架构、设计心理学、……

如果说我对上这些内容都非常地精通,你一定不会相信,实际上,我自己也不会相信!^-^。很多的内容实际上只是感兴趣,去了解一下,但是,我这是不专注吗?我想不是!

就从编程语言方面谈谈吧。这是软件实现的基础,无论开发什么软件,我们需要编码来实现。再看看流行的一些编程语言,VB、C#、Java、Objective-C、PHP、JavaScript、……。从编程语言层面上讲,它们有多大的区别呢?基本的概念都差不多,实际上,我经常会将不同编程语言的特点和优势应用到不同类型的软件开发中,收获还是非常大的。举个简单的例子,当我最初接触设计模式时,相关的书籍使用的是C++或Java,而我就可以通过对这些语言的了解,很自然的通过C#来实现。

除了开发技术,我还对科技、汽车、军事、历史等领域感兴趣,这对软件开发没有帮助吗?当然不是,在写技术类文章或书籍时,我可以把示例做的更生动,比如模拟战争游戏,这样一来,可读性、趣味性不是更好了吗?

所以,作为一名软件开发者,眼中不能只有代码,多看看书,多学习各方面的知识,对我们来说是幸福的,是快乐的,是可以帮助我更好的成长的。

希望我的经历和感受对初学者有些帮助,不对的地方也请大家多多批评指正,让我们共同进步吧!