想做软件工程师应该学什么?

1,计算机硬件原理:要了解硬件是如何工作的,要知道软件是如何在硬件上工作的,CPU架构,指令,如何做计算,内存是如何工作的,内容地址是什么,如何存储硬盘,如何通过电路和元件将数据和指令转换成电流和脉冲,可能需要用到数据电路的原理。无论你从事计算机的哪一方面,比如网络、软件、硬件,都要掌握这个原理。因为计算机技术很抽象,但在现实和具象上依赖于硬件。

2.操作系统原理:了解硬件原理后,了解操作系统的工作原理。因为所有的软件都是基于操作系统的,而操作系统本身也是一个软件。这些和硬件结合起来就比较好理解了。

3.编译原理:了解软件从源文件到目标文件再到执行的全过程。如果有必要,里面的东西也应该是专门买来学习用的。代码不容易出错。在了解硬件原理和操作系统原理的基础上,理解编译原理就相对简单了。当然,每种语言的编译过程不同,但原理基本相同。

4、数据结构与算法分析:一个好的算法,事半功倍,另外你可能还要补一些高中数学和高等数学的知识。

以上各部分至少要学习1-2个月或150个小时,才能掌握基础。以上部分你不掌握,不代表你学不会软件,但是如果你想掌握,想比一般人强,那是不可能的,因为你只知道怎么做,为什么不清楚就是死记硬背,重复记忆的效率也很差。

有时候很多独立的软件开发参考书没有这么详细,只是告诉你怎么做,却不会告诉你为什么,其他好的方法也不能告诉你,因为都需要从基本的硬件电路电流原理开始介绍。原则上会没完没了。

大概半年甚至1年后,这个时候,你在软件开发中需要掌握的基础知识都比较清楚了。如果你重新开始学习程序开发,你会发现开发很简单,事半功倍。因为你已经在原则上理解了软件是如何工作的。所以我们也知道软件开发的学习周期至少是1年。开发中型软件至少需要1.5年,这段时间还是每天学习的时间。