软件开发有两大基本阵营，分别是“应用开发”和“系统开发”。应用开发关注的是开发满足用户需求的程序，包括手机应用程序、大型电子游戏及企业级会计软件等。而系统开发关注的则是使用生命周期法来开发和维护操作系统。系统开发通常涉及网络可操作性和数据安全。 任何人都有创意灵感，但开发者能够将创意转化为现实。即便你只想从事软件设计方面的工作，也必须对代码有一定了解，以便能够开发出产品的基本原型。你能够自学的编程语言种类繁多，其中较为实用和重要的有：   C - C语言历史较为悠久，但仍被广泛使用，本列表中的其他语言多以C语言为基础。C语言被用来开发低级别程序，其运行与计算机硬件紧密相关。 C++ - 它是C语言面向对象的版本，是全世界最流行的编程语言。Chrome浏览器、火狐浏览器、Photoshop软件，以及诸多其他程序使用的编程语言都是C++。此外，C++也常被用于开发电子游戏。市场对C++开发工程师的需求量一直很大。 Java - Java语言是对C++语言的发展和继承，因易于移植而受到欢迎。几乎任何系统都能运行Java虚拟机，从而能够运行Java软件。Java语言被广泛应用于电子游戏和商业软件，许多人建议将它作为基本语言。 C# - C#是一种基于Windows系统的语言，它是微软.NET框架的组成部分。这种语言与Java及C++关系紧密，掌握Java的开发者能够快速地过渡到C#。它对于Windows软件或Windows手机软件的开发者而言尤其实用。 Objective-C - Objective-C也以C语言为基础，专为苹果系统而设计。被广泛用于iPhone和iPad应用。对于自由开发者而言，学习这种语言是一种不错的选择。 Python - Python是最容易学习的语言之一，适用于网络开发。  PHP - 准确来说，PHP并非软件开发语言，但如果你有志于从事网络开发，它必不可少。PHP开发工程师的就业机会一直很多，但薪水要低于软件开发工程师。 大部分书店都有编程书籍专区，而亚马逊和其他电子商务零售商也提供了海量选择。质量上乘的编程书籍很可能是你能够拥有的最好资源。从事开发项目时，你可以快捷地查询和参考它们。 除书籍以外，互联网也为学习者提供无穷宝藏。在CodeAcademy、可汗学院、 W3Schools、CSDN、开源中国和程序员之家等网站上，都能够搜索到关于你所选择的编程语言学习资料。 尽管从事软件开发工作不需要有全日制学位，但是在本地培训中心听一下相关课程仍会对你有所帮助。一对一的教学对你大有裨益，而且这些课程会向你提出挑战，要求你解决一些自学时可能不会想到的问题。  培训机构会收学费，因此确保你报名的课程有助于你实现自己的学习目标。 尽管许多开发者能够完全依靠一技之长来进入这个行业，但拥有四年制大学的计算机科学学士学位，无疑能够帮助你更快地脱颖而出。大学教育将使你具备更广阔的背景知识，还另外提供数学、逻辑学等其他实用课程。 将你新习得的编程技能应用到实际工作前，可以先做一些自己的小项目。试着挑战自我，应用编程语言去解决问题。这样不仅可以帮你巩固技能，还能够使你的简历内容更加丰富。  例如，试着设计自己的日程表程序来帮助你安排工作，取代计算机自带的日程表程序。 如果你对电子游戏开发感兴趣，可以试着做一些简单的小游戏，不必注重图形或复杂的机制。你的目标应该是使它们有趣而独特。一系列独立开发的小游戏会让你的工作经验增色不少。 互联网是与其他开发者进行联系的绝佳方式。如果你在自己的项目上遇到瓶颈，可以上SegmentFault等网站寻求帮助。清楚地阐述你的问题，和已经尝试过几种可能的解决方案。 每天做做自己的小项目，哪怕只花一个小时。这样做有助于保持状态和不断学习新技术。许多开发者学习语言的成功基础就是每天接触和使用这种语言。 每天设定一个专门用于编程的时间，或设定一个完成的时间期限。尽量保证工作日能够每天抽出时间来做你的项目，这样到了周末就可以好好放松了。
确定你对哪一种软件类型感兴趣。 自学编程语言。 找到有助于学习的资源。 上培训课。 做个人喜欢的项目。 提问。 每天练习。
确定你对哪一种软件类型感兴趣。 自学编程语言。 找到有助于学习的资源。 上培训课。 做个人喜欢的项目。 提问。 每天练习。