Note: Take this post with a grain of salt. It’s meant to be a slightly amusing rant, and should not be used as an official classification system for developers.
Engineers, Architects, and Chemists work with their hands on “real life” projects. They of course use their problem solving and thinking skills in their line of work, but in the end, they get paid to develop specific products with practical uses.
Mathematicians and Theoretical Physicists do the exact opposite. They spend all day thinking, pondering, and mediating; finding better ways of describing the universe, and using their minds to solve problems that may not even exist in real life. (Yes, I skewed those descriptions to fit the point I’m making.)
Sometimes their work has practical applications, sometimes it does not.
What is a theoretical developer?
Similarly, Theoretical Developers are software developers who are more concerned with solving “theoretical” problems than getting any actual work done. When a problem arises, it is more beautiful to develop a solution where all the pieces fit together perfectly than to “Just git ‘er dun”.
Software Engineers and Software Architects on the other hand use software development as a means to an end, a way to put food on the table or get a website up and running. They are more willing to take shortcuts even if doing so may break the Sacred Laws of OOP. These people have also been caught placing code on the main timeline. (yuck!)
How do you spot a Theoretical Developer?
These elusive creatures often appear in the wild among Open Source Activists, Wikipedia Authors, and alas, some among Pyromaniacs, starting flame wars, aggressively trying to convince others that their technology is the best.
Some spend hours ranting on how the syntax for programming languages should theoretically be written, even though there is no chance of those changes being applied to the language (ahem).
Or sending code for game prototypes to potential employers that doesn’t actually run because the only code written so far is for a collision detecton API, rather than having focused on making the game playable.
Are Theoretical Developers better than Software Engineers?
I have previously jokingly compared Software Engineers to “women of the night”; just getting the job done for the pay check. I wish to revoke that statement, pleading beginner’s insanity (see Mount Stupid).
In fact, when comparing the progress of theoretical developers to that of “real developers”, usually it’s the developers working on “real” projects that become successful. And as already mentioned, there are developers who love programming, while still earning money from the products they create (double bonus!).
So which one are you? A Software Engineer, a Theoretical Developer, or a mix of both?
Or perhaps the Theoretical Developer is just a fancy name I invented as an excuse for my lack of “real life” progress…