除了编程语言,程序员还需要学习什么?

软件开发


浏览:1051 次

软件开发确实是一项系统性的工作,需要大量的知识和技能。根据我的研究,一个合格的程序员需要从九个方面学习各种东西:技术堆栈、工具链、程序设计、架构设计、工程、软件环境、软件开发模型、业务和产品。

当然,并非所有方面都需要大量学习,而是根据个人的不同阶段,选择性学习。选择的原则是满足现阶段的工作需要。

一开始,你是个新手。典型的特点是你在他人的指导下完成非常具体的工作。架构设计、业务和产品这三个方面基本上可以忽略不计。因此,我将只谈谈您需要从技术堆栈、程序设计、工具链、工程、软件环境和软件开发模型这六个方面学习什么,然后给出如何从实际项目中学习。

1、 技术堆栈

技术堆栈是指在软件开发的特定技术方向上的一系列技术的组合。

如果你学习C++,以这个方向为例。技术堆栈可以分为三个方面:语言、app开发框架和数据库。

在语言方面,您已经在学习C++,这可能还涉及一些标记语言,如XML,也可能存在混合语言编程。根据项目的需要,您需要学习JS、Lua、Python等。如果您是初学者,没有特定的项目需求,那么应该首先处理C++本身。

有许多app开发框架,如STL、Qt、ffmpeg、libevent、Vorbis、OpenAL、OpenCL、C++React、Crypto++、OpenSSL、CppUnit、Cocos2d-x、CEGUI、wxWidgets、Ogre 3D、Skia、CxImage、OpenCV、Caffe、SDL、GStreamer、ACE、ZeroMQ、libcurl等。您可以根据需要选择一个或两个。

还有很多数据库,如MySQL、Redis、SQLite、MongoDB等。如果你想做的项目需要数据库,你可以选择一个。如果你不需要,你可以忽略它。

2、 编程

广义的编程包括许多过程,如分析、设计、编码、测试、故障排除等等。我在这里谈论的是狭义的程序设计,它仅指如何使程序更简洁、有效和优雅的代码级设计。

在这方面,你需要了解数据结构、算法、编程习惯、设计模式等。如果你是初学者,了解一些数据结构和常用算法是很好的,你可以在工作两三年后学习其他知识。

3、 工具链

工具链是指特定平台上支持代码编写、编译、调试、运行和分析的一组工具组合。

就C++而言,您可以掌握一个IDE,例如QtCreator和VS代码。这些IDE通常与编辑器、编译器、调试器和各种分析工具打包在一起。他们可以一站式解决您的问题,一开始就不需要做任何其他事情。

4、 工程

工程工具是指在编程、调试和分析的工具链之外支持平滑软件开发的各种工具。

既然你是新手,你应该掌握两个方面:

掌握一个代码版本管理工具,git,svn,github,gitlab,都可以;

掌握一个安装包制作工具(C++程序有各种依赖性,如果不安装包,很难在其他机器上安装),如Inno Setup、NSIS或VS。

5、 软件环境

软件环境是指开发和软件产品运行所需的支持环境。

如果您在Windows下运行用C++编写的软件,您需要了解Windows操作系统和Windows上的各种运行时。例如,C++运行时库、MFC运行时库和OpenSSL运行时库至少应该知道它们是什么,在哪里可以找到它们,以及它们在系统中的位置。

如果您在Linux下开发,并且软件在Linux下运行,那么您应该熟悉Linux的常用命令和脚本(Shell/Python)。

除了操作系统和各种运行时,您的软件还需要协作软件。例如,如果您使用数据库,您还应该了解数据库安装、驱动程序配置等。

6、 软件开发模型

软件开发模型是指软件开发的整个过程、活动和任务的结构框架。常见的有瀑布式、迭代式、精益式、敏捷式等。建议阅读经典教材《软件工程》,其中包含各种开发模型的简要介绍