<p>
In order to get a CS degree, you need to study some discrete mathematics, theory of algorithms, computability theory, automata theory, language theory, compiler design, database theory, etc.</p>
<p>In order to make a living as a programmer without a CS degree, you do not need to study all that theory, but you need to discern a good software design from a bad design, which involves drawing diagrams and thinking through logical steps before even starting to write code. And you will probably have to design a database, a network, a user interface, an API, or some other system that is code-agnostic.</p>
<p>No matter how you want to approach software, you cannot avoid the necessity of mastering the art of solving complex logic problems and designing systems. Technical skills can only take you so far. Unless you are content writing low quality software.</p>