When I can get in the zone, programming gives me the same feeling as playing a game like Factorio or Civilization. My thoughts get faster and faster, I lose complete track of time, and sometimes even leave my body.
When I finally stop my brain is going a thousand miles an hour and no matter how late it is I won't be able to get to sleep for a couple hours.
It's beautiful and terrible and exactly why I have the job I do.
I once collaborated with an exceptionally talented programmer who seemed so engrossed in his addiction that he would invent challenges where there were none, presumably to make his work more engaging and bearable. However, this often led to incomplete projects because once the stimulating aspects were finished, he struggled to find the motivation to continue. Clearly, this behavior was extreme and detrimental.
My brain goblins love refactoring. I love taking a rusty pile of shit and making it shine. I want to polish something old, or build something completely new. Adding features to existing code is the part I hate.
My brain goblin is a big fan of performance. Recently I reviewed a teammate's code. It was a small 100ish line PR and he calls the same function twice in a row with a tiny variation. My brain goblin went "you could consolidate these into one call", "since it's only one call you could inline it".
A couple hours later when he came to ask me what I'm smoking I realised my proposed solution had more LoC and was more complex to read. If we needed better performance, step 1 should've been to offload this task to an API that wasn't made with python. Not to mention the next thing this API does is string manipulation and then write to file.
this response is based on the few paragraphs available to non medium members
The second paragraph mirrors my experience with coding to a tee. I may have forgotten to turn off the oven while i was absorbed in Pycharm at least once, and ive certainly given a triumphany "fuck yea" with a raised fist worthy of a freeze frame ending to an '80s film upon succesfully accomplishing a task.
During a recent difficult time in my life, learning to code was the only activity i found that gave me substantial relief from the stress.
The Wadsworth Constant is an axiom which states that the first 30% of any video can be skipped because it contains no worthwhile or interesting information.
Too true.
I still remember when java5 came out, many new features, great potential for a massive refactoring of my interactive climate model. Within that, I had an idea called "parallel worlds" for comparing scenarios, whereby for efficiency data was shared for parts of the system, and split across parts that varied as user adjusted parameters. So I pulled apart the whole codebase, and joined it back together again... - about two years later, by which time colleagues had given up interest. [ story simplified to relate to point of OP - not only task in two years! ].
Now I develop a derivative climate system model in scala,
but evidently it's more interesting to develop some new complex part of the science code, than fix a graphical interface for beginners. But moods vary - some days lacking energy for refactoring, could be satisfied ticking off a few small tasks in a todo list. Yet after some time, brain craving for another big new complex idea...
@ISometimesAdmin@the.coolest.zone Let me know if you need rehab.
But seriously... yeah, I get it. Especially this part about the workplace:
Nevertheless, [addicted programmers] can also pose significant risks, especially because they frequently deviate from the planned course. They follow their own agenda, introducing challenges where none were necessary, or dedicating hours to minor, tangential aspects of a project. In the process, they diverge from the project plan, programming what they believe is necessary rather than what the project itself requires.
I have been that person before, and now I'm in a position where I have to keep those folks on a tight leash and remind them "our goal is to deliver a product right now, and we can enhance it in future sprints. Let's just focus on what our primary goal was right now." It's easy to fall down rabbit holes, and that's where having proper planning and a ticketing system to backlog and prioritize future enhancements is so critical.