软件开发的确是一个系统性的工作,需要很多方面的知识和技能。根据我的研究,一个合格的程序员,单单是专业能力,就需要从技术栈、工具链、程序设计、架构设计、工程化、软件环境、软件开发模型、业务、产品这9个方面来学各式各样的东西。
当然并不是每个方面都要学很多很多,而是根据个人所处的阶段不同,有选择的学习。选择的原则是——满足本阶段的工作需要。
你刚开始,属于新手,典型的特点是在别人指导下完成非常具体的工作,那架构设计、业务和产品这三个方面基本可以略过,所以下面我只说技术栈、程序设计、工具链、工程化、软件环境和软件开发模型这六个方面都要学点什么,然后再给出项目实战怎么学。
一、技术栈
技术栈指软件开发特定技术方向的一系列技术的组合。
你学习C++,那以这个方向为例来说明。技术栈可以细分为语言、应用开发框架、数据库这三个方面。
语言方面,C++你已经在学了,可能还会牵涉到一些标记性的语言,比如XML,还可能会有混合语言的编程,需要学JS、Lua、Python等,根据项目需要来选就好。你初学,又没有明确的项目要求的话,先搞定C++本身就好。
关于C++本身,推荐两本书。
第1本是——《C++大学教程》(英文名C++ How to program)。这是很经典的教程,写的很通俗,我家里的是第2版,现在已经出到第9版了。