# Separation of Computer Scientists and Computer Technologists

## Science is not Technology and vice versa​

• Technology was not developed based on science, nor was science studied for technical applications.
• Even before the principle of leverage was dynamically proven, the lever was used, and even before the iron-making technology was proved to be a chemical reduction reaction, the steel-making technology existed.
• Science and technology were formed in the 18th century, and until then, science and technology were separate.
• Technology has been passed on in apprenticeship classes without scientifically theorizing it.
• Science ≠ Technology.
• But they both can help each other.

## The grand question​

Do you need a college degree in Software Engineering?

• As much as modern society evolved, the software needs evolved and mutated
• People always ask if you need a college degree for Software Engineerings
• When you can actually find decent CS education on GitHub, Stack Overflow, and YouTube

## But a self-taught can code a dang fantastic React shopping mall!​

• A self-taught dev can use React to make a cool-looking Single-Page-App JS e-commerce website...
• But we must think,

What makes React so cool?

• React's Diffing Algorithm
• Reduces $O(n^3)$ diffing operation to $O(n)$ iff
1. Two elements of different types will produce other trees.
2. The developer can hint at what elements will remain stable across renders with a key prop. (This is why React always warns us to include keys in our props).
• Creating a diastrophic technology requires actual theory
• As much as developers in the industry can impact the world by improving page load time by 25%,
• People in the academic fields support those works.

So, simply wrapping all developers as Software Engineers is like categorizing all musicians as singers, including incredibly different types of musicians, from street-performing rappers to classical oboists, from Korean idols to shamanist drummers.

## Conclusion​

• It is about time to divide Software Engineers into two roles:
• Computer Scientists: who actively research the fundamentals and theories
• Computer Technologists: who actively apply existing theories to solve real-world problems