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…
From: Martin Heidegger
There was certainly a time in my life where the most I thought about was theories. Basically our brain is wired to find patterns and when we find them we are super proud of them. Those patterns are theories that you were talking about imho.
What are common problems of systems? What are commons ways to fix them? They are helpful tools that we automatically apply in daily life.
Let me bring in a example: Drupal. I despise Drupal by now. I had to learn it inside out and it does so many things at its basic completely wrong. Wrong in the meaning of: I would never design a system that way because I know it will lead to problems. And it did lead to problems, many in my case - partly practically unsolvable ones. But: Its drawbacks aside the system is used (a lot) around the globe and it serves for a plethora of purposes for exactly the same reasons. So: the architecture can't be all wrong. Now I have to think how this way can be right and wrong a the same time.
Now: As theorist (that still exists in me) Should I ignore that I see those patterns of problems that I stumble upon every day? No! Should I therefore not work with or accept Drupal? Certainly not.
Thinking is one thing: But you are also talking about articulation: Those people (like me now) express and exchange their opinions. I would encourage that but I have seen great developers that don't do it. Geniuses? Maybe.
I think every developers tries to abstract problems/solutions and we test them either when writing new code or talking to others. Some more balanced on A some more on B.
The important mind is to not get stuck in one opinion and also learn to listen(read) what others have to say. And that is just politeness-training.
From: Keith Peters
This applies to theoritical developers: http://en.wikipedia.org/wiki/You_ain't_gonna_need_it
I think these people think they are getting work done, and believe they are being extremely thorough and professional. Personally, I probably take too many shortcuts. But I see others developing some beautiful, highly engineered architecture that will last 1000 years, for a project that is likely going to be obsolete within 18 months.
Somewhere in the middle is probably a good spot.
Post a comment
All comments are held for moderation; Markdown and basic HTML formatting accepted.