2 ms·
Basically the company started expanding and their code base started falling apart at the seams. Two coders that each had "silos" with wedges to keep the two si
by wernercd 10y ago
Basically the company started expanding and their code base started falling apart at the seams.
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.
- vonmoltke 10y agoWe probably disagree, but to me "code is shit" and "the company started expanding and their code base started falling apart at the seams" is a far cry from "can't code their way out of a wet paper bag". Sounds like they knew enough to patch together a system that made your company money for years. To me, that puts them squarely in the middle of "can't code their way out of a wet paper bag" and "good engineer I would trust to design my systems".
- wernercd 10y agoI'm not super experienced but I read enough to know bad code when I see it. * 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.
- vonmoltke 10y agoI'm not saying their code isn't shit, just that it is shit code that works (for some purposes at least). That is much different from not being able to generate code that works at all. I would say these guys can "code their way out of a wet paper bag". They will just make a royal mess doing it.
- wernercd 10y agoI guess it's just a difference of terminology and/or nuance in terminology getting lost in "text". Hard to show sarcasm or "air quotes" in a text post :)