Summary:
The Open Dental application is 15+ years old and has little to no abstraction. The persistence layer, business layer, and UI logic are all slammed into the same files. The database schema is an absolute nightmare. There are multiple tables reaching the MySQL column limit. All refactoring and improvements that could be made are deemed impossible by management given the size and age of this decrepit code base. Working in Open Dental proper (the main application) is comparable to the punishment of Sisyphus.
Technology stack:
Winforms, MySQL, Subversion. That's it. You won't learn anything remotely close to the industry standard technologies here. THIS IS THE MOST DANGEROUS PART OF THE JOB. If you do not program outside of work your skills will wane and you will find alternative employment difficult due to your lack of relevant experience.
Owner:
- The owner/founder is a hobby programmer who uses 15 year old books to back up his opinions. He does not stay engaged with industry standards and is an absolute nightmare to program around. He is a liability and actively degrades the code base.
- Before modifying any section of code with his name on it you must first call him
and tell him exactly what you are doing. These conversations are awkward and
uncomfortable as he is difficult to communicate with.
- He strictly enforces programming patterns that all engineers must abide by or
you will get a call, a lecture, and your code will be commented out by him
personally. Here are a few examples:
*He has declared 3 of the pillars of object oriented programming (inheritance,
abstraction, encapsulation) anti-patterns.
*Extension methods are not allowed
*Data binding is not allowed
*Foreach loops are not allowed
*Dictionaries are not allowed
*Threading is not allowed (unless he does it)
CEO:
- The CEO is the little brother of the founder/owner. He has 0 programming
experience but thinks he's an engineer. He can speak engineering jargon but
often uses the terms incorrectly leading to confusion.
- He berates employees for mistakes and asking questions often causes more problems than it solves. Here is a list of some of my favorites.
"If you weren't *senior engineer's name* I would be walking you to HR for
remedial education"
"I'm extra mean to people so that when I'm nice people think I'm in a good
mood"
"I'M BAFFLED. You can't be serious. That's the stupidest thing I've ever heard.
SHOW ME THE CODE. That can't be true. You're wrong."
"Stop shaking your leg. I can't think when you do that."
"You're wrong. Nope. Stop talking. I said STOP talking. You're wrong and I'll tell
you why."
Engineering Manager:
- His sole responsibility is to act as a buffer between the engineers and the CEO.
Outside of that he offers little to no value.
- He doesn't seem to realize that everyone's internet history is accessible via the
network. He works about 3 hours each day and the majority of that is walking
around and doing check-ins with engineers. The rest is spent designing DnD
campaigns, watching Dota WTF videos, surfing the web, checking Facebook,
watching Anime and playing idle games in an incognito browser. Most of the
department is aware of how little he does. However, he runs interference on the
CEO so people look the other way.
- I personally reported him to HR due to a pornographic GIF I saw on his monitor
when I went to ask him a question. HR independently verified what I saw in his
history and reported it to the CEO. Absolutely nothing came of it.
Senior Engineers:
- They have been programming the Open Dental way for 10+ years. New technology is often dismissed too quickly or flat out ignored.
- The synchronous review style is inefficient. It may seem like a good idea for new engineers, but once they gain experience and get comfortable with the code base (1-2 years) it becomes a waste of time.