Every programmer has a tale to share about vicious cycles in their life. Here are a few common forms of torture for the eternally damned:
1. Environments
It worked on my computer. How does it not work on yours? Let's use the same OS. How do you install Linux? Let's use a virtual environment. Wait, actually, let use a virtual machine. Oh no, we forgot about production. How about Docker? Kubernetes? Ah, what the heck? This should be automated!
2. Dependencies
Rouge commit. All of a sudden, a decimal place is moved, and the whole dependency tree breaks. Survivors are faced with unmet peer dependencies.
3. Tutorials
This is where developers seek sinful pleasure. It was created for junior developers, but some say that you can't get out once you enter. Managers love them too.
4. Callbacks
Can we take a timeout and look at this later?
5. Generics
How hard can it be to make a single class that allows every data type? 300 lines of reflection later...
6. Scope Hell
When callback hell isn't painful enough, spice it up a bit by hoisting variables or using global scopes.
7. Project Management
Let's use Agile because everyone else is using it. What is Agile anyways?
8. Threading
Threads == speed! Let's use every single core on the machine to run tasks simultaneously. Then we will propagate exceptions to the main thread and gracefully shutdown. All this multitasking means we can launch scripts. The scripts can use the logging daemon thread.
9. Coffee
Programmers don't need to sleep. Coffee is the only way to write perfect code. My coffee breaks are 7, 9, 11, and 2. Why am I so tired this morning? Anyone need more coffee?
10. Meetings
We are behind schedule. Here is my 3-hour presentation on how we can increase productivity. Long story short, we need to meet more often.
11. UX
Nobody:
Browsers: Let's make everything the same besides this.
Java: Let's make our own CSS standard.
12. Legacy Code
Self-explanatory, no comments needed.
13. Internal Frameworks
See documentation.
14. Version Control
Push. Pull. Stash. Push. Fast-Forward. Merge. Conflict. Resolve. Push. Unable to push because of conflicts. Unable to pull because the branch is 3 commits ahead. Unable to resolve conflicts. Unable to be able.
15. Compilation
Spent all day fixing linking errors, and it final compiles. It says 3 hours remaining. 2 hours in, you remember you have a memory leak.
16. Documentation
Last updated in 2011. See comments in legacy code for more details.
Other Notable Hells
- Backwards Compatibility
- Caching
- Coding Interviews
- Features
- Talking to non-programmers
The End
You have been to hell and back. Which one do you think is the worst?