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?
Top comments (19)
"Please, can you fix my printer?"
Me: I'm an developer, not an [CENSORED] IT technician.
Yes, I do hope people know the difference; there are many branches of computer sciences.
But what if software developers/engineers that also IT sysadmins are in the human resources teams?
"I'm a software person, not a hardware person" is my go-to for that one and all related questions
salespeople sold feature which is yet not implented hell
Haha yes the classic 'building the tracks from the front of the train' story:
The last developer was much faster than you are.
Those Dilbert cartoons illustrate those points perfectly!
Employer: "We would like to replace the technology we currently use with this famous one". Me: Why? Is there any technical reasons?
Employer: No, it's just the trend of these days. We need to immigrant for the sake of immigration!
Them: "It's broken"
Me: "Can you be more specific?"
Them: "I THOUGHT YOU WERE SUPPOSED TO BE A PRO I NEED THIS FIXED ASAP!!!111"
Thankfully not had this in my current job but wow... :D
Definitely defending broken code/bugs with "i swear it worked on my machine/when I tested it ten minutes ago"
... well, its obviously broken so do something about it instead. 😅
Right
Hmmm I had a job like this ^^^
Not every job is like this ^^^
You might find less hell one day
Good and fun article.
Though, I was wondering why a commit would wear makeup...