Skip to main content
Post Made Community Wiki
Source Link
jmort253
  • 9.4k
  • 2
  • 37
  • 63

The main benefit of a computer science education for software engineers is the ability to create and understand abstractions. Abstractions are used to encapsulate common functionality, such as String class methods, into tight, reusable packages that allow us to focus on the bigger problem.

Learn to recognize and create Abstractions:

But most importantly, abstractions teach us how to break a problem down into smaller, more manageable chunks. When combined with a science background, the combination of those skills can create an engineer capable of cutting through the noise and getting to the heart of the problem.

Learn to solve problems using the Scientific Method:

When troubleshooting a production application where a hard-to-find problem exists, sometimes it helps to actually break the application further (in a non-production environment) in order to eliminate several variables in order to isolate and eliminate one.

In summary, the scientific method, learned from taking all of the Physics electives and other science electives required for a computer science degree, helps solve these problems as if we were trying out a placebo and a new drug trial on a series of volunteers. Like scientists who sometimes have to make something worse in order to make it better, sometimes we as engineers must do the same.

Scientifically thinking in this manner can -- in general -- only come from having experience in a science background. Sometimes solving a problem can't be perceived as a linear path from A to B.

In short, study computer science, study other scientific fields, learn functional programming. These will help you think like a scientist and to think outside the box.