# Wall of shame ## Introduction Throughout life as a software developer you see a lot of gems. Code gems. Things that are well done, things that are not well done and things that are just plain wrong. Programming perls I encountered myself over the years. Mainly the bad ones. Epic mistakes to remember. Things I've seen that cannot be unseen. ## Epic Ones * thread sleeps 10ms to "prevent" concurrency issues * our logic code implemented on 3rd party JavaScript files (non-minified js dependencies, such as from npm and such) * our logic code implemented on MINIFIED JavaScript files, deployed live, not committed anywhere \ noticed this after we deployed a new version live and it broke. \ then we make a diff with the backup files. \ then we thanked god for inventing backup files * add `*.orig` to git ignore (orig files are internal git files for resolving conflicts) * Test URLs hard-coded on payment DLLs \ Found this out after decompiling the DLL from live, while investigating a ticket about missing payments * jira ticket FOO-123 \ Title: "Implement Everything" \ Description: "none" \ Assignee: "Jesus" (a guy named jesus actually worked there) * because someone with permissions to create a new repo took several months to do so, the devs emailed each other with the project zip, and locally merged stuff ## "Normal" Ones * hard coded configuration, URLs, passwords, user names, etc * committed code that does not compile * committed code that never gets executed * unit test cases that don't compile because someone deleted some classes without re-running the tests * unit test cases with api calls, http calls, DB interaction, ... \ you name it! they've got it tested! * committed projects with local disk references and those reference files not committed * have server side XSLT generating front end HTML (annotated with the CSS and all) * have one HTTP redirect file with 8k+ lines * `.bak` files on source control * copy-paste source control: where several versions of the file are kept and committed \ example: foo1.a, foo2.a, ... or barDec.a, barOct.a, ... * 'relational' DB's WHITHOUT FK \ DB tables with INT type column and no FK constrains for other table's IDs \ but only for some tables, because its more fun this way * static all the things \ projects where most classes and methods are static * source code files where the IDE tells you: \ "sup, dog! I'm going to turn intellisense off now. kthxbye!" \ (+10K lines on single class) * code on DB tables \ html "templates" that code loads and returns to the browser \ binary DLLs, dynamically loaded (a personal favorite) ## We will build our own wheels * custom encryption algorithm \ because we dont store plain text passwords! * custom logging "framework", with `File.Open()`