Two coders that each had "silos" with wedges to keep the two sides communicating together. One did web side - ordering, registration, etc on a Webform MVC customized hybrid. The other did floor applications.
New customer? New database, website, etc. Sql statements? "If company a then select * from blah where field like '{text}';" everywhere. Why select *? Because the different code bases diverged... why like/text? Because sql injection doesn't exist. Almost everything text fields... 2 wide inventory fields that house more than 99 items... 10 wide inventory fields that house 2 items...
I will have some posts for TheDailyWTF once I get my feet a bit more wet...
As to why it took so long? They were able to keep it running with duck tape and bubble gum... once the company started expanding, the better of the two programmers knew they couldn't keep up and left earlier this year. The other is due gone soon... Good guy, but... unwilling to accept that his code is shit.
* No separation of UI/Code. WinForms in all it's glory.
* SELECT * in code behind. Never anything else.
* WHERE field LIKE '{}' - never 'where field ='. Always like.
* {} is a from text entry fields. Sql Injection? Sanitation? Boundaries? What's that?
* Separate code paths for different companies because each customer had their own unique stack that diverged - Database tables, Winforms, processes. IF Company A then SELECT * FROM DBA.dbo.TblA WHERE FieldA = '{}' ELSEIF Company B then SELECT * FROM DBD.dbo.TblB WHERE FieldB = '{}'... etc.
* Copy Pasta all the way down.
* Never used source control until New Guard arrived (me being newest developer).
* Test environment? Waste of time... Everything done against production. I saw the old programmer jack up a sql query resulting in a data restore, and I've been here less than two weeks.
You can argue that what they did "works"... but you can fix a car with duct tape... then wonder why the door flies off at 65mph.Trust me (as much as you can trust a random guy on the interwebz)... Their code is shit. Not "I'm an artist and think your artistry is shit" shit... but every bad idea you can consider in coding shit.