This is a false dichotomy. You suggest that software people can be naturally divided into programmers who don’t know theory, and theoreticians who don’t program regularly. However, programming skill and theoretical knowledge are independent, continuous and positively correlated. The common cases are people with both programming skill and theoretical knowledge, and people with neither. That’s why “computer scientist”, “programmer” and “software engineer” are so often used as synonyms—because being one usually implies also being the other two.
This is a false dichotomy. You suggest that software people can be naturally divided into programmers who don’t know theory, and theoreticians who don’t program regularly. However, programming skill and theoretical knowledge are independent, continuous and positively correlated. The common cases are people with both programming skill and theoretical knowledge, and people with neither. That’s why “computer scientist”, “programmer” and “software engineer” are so often used as synonyms—because being one usually implies also being the other two.