When I discovered programming in my teens it was the single greatest thing I could do. I spent all my time doing it, constantly learning new things, breaking into new areas of discovery and then finding still more interesting thing. I wrote code for entertainment, I wrote code to relax, and sometimes people even paid me to write code.
Fast forward 20 years and I felt like it hurt to write code. So many things were in your way between the writing and the running, useless hoops to jump through, arbitrary changes to things that used to work just fine and now worked in a different way, why? why? WHY? I was pretty burnt out about it.
That lasted for a few years (okay probably closer to six or seven years) when I got a chance to help a teen learn to program who was super excited about it. I showed them the opaque APIs and they were thrilled, I showed them the crappy IDEs that prevented you from seeing what was really going on and they loved it, I showed them tool kits that created guard rails around what you could and could not code and that was just fine. They wrote line after line of code and marveled at each new thing.
It struck me that they were me and I was them and why were they so excited about this when I was so offended? After a lot of introspection I came to realize that the answer for me was that nothing had changed.
The reality I was missing was that computers haven't changed a whole lot since the IBM 360. The only thing that changed is that they got faster, smaller, and way cheaper. But their nature hasn't changed at all. They have registers, they have machine code, they have fast I/O devices and slow I/O devices, they have memory and displays and peripherals of various kinds. But at the end of the day, and this is especially obvious with various recreations and emulators, the computers of today are not really all that different in nature from the ones I learned programming on.
That in itself might not have been a killer, but the killer was software was by and large unchanged as well. After 20 years of programming, every single programming task felt like a remake of something I had already done. And for what? To implement it in the language of the day? Because you couldn't get the source to one version so you rewrite it from scratch to get better licensing terms? Lots and lots of software was done in the sense that there really isn't a good reason to re-design it, but there are a zillion reasons while you might be asked to re-write it.
Imagine if you were a screenwriter or a songwriter and someone said, "Ok we need 'Gone with the Wind' but now its going to have a gay couple, take place during the Syrian Civil war. Don't change any part of the plot or the story or the relationships, just swap Arabs for Southerners, Syria for the South, and have the love interest die of MERS or something."
Wouldn't that be a crappy job? What can you do with that? Where is the creativity? Where is the opportunity to express a fundamental truth in a new way?
I realized that I had come to hate programming because everyone was asking me to program the same stuff that had been written before but now in the Fluff Framework. I could do that with my eyes closed and so could any teen fresh out of college. What did they care that it had been implemented twice, three times, maybe five times previously in different ways?
Once I understood my problem I could start working on the solution. I decided to start writing software in areas where I had never written code before (like DevOps), or in areas where hardly anybody had re-written code before (like software radios). I also started to meticulously develop a workflow that ran on every operating system I might have to work on (Linux, Windows, and MacOS) that worked for me and saved me from having to relearn a new thing "just because" someone got it in their head that they could "improve" text editing for coders. When the friction between thoughts and code and execution are low, and the problems being coded or solved are novel, I love programming. Because I know what to avoid (arbitrarily complex tools and rewriting CRUD code again and again) my level of joy has gone up significantly.
I don't know if any of this will resonate with your question but it worked for me.
When I discovered programming in my teens it was the single greatest thing I could do. I spent all my time doing it, constantly learning new things, breaking into new areas of discovery and then finding still more interesting thing. I wrote code for entertainment, I wrote code to relax, and sometimes people even paid me to write code.
Fast forward 20 years and I felt like it hurt to write code. So many things were in your way between the writing and the running, useless hoops to jump through, arbitrary changes to things that used to work just fine and now worked in a different way, why? why? WHY? I was pretty burnt out about it.
That lasted for a few years (okay probably closer to six or seven years) when I got a chance to help a teen learn to program who was super excited about it. I showed them the opaque APIs and they were thrilled, I showed them the crappy IDEs that prevented you from seeing what was really going on and they loved it, I showed them tool kits that created guard rails around what you could and could not code and that was just fine. They wrote line after line of code and marveled at each new thing.
It struck me that they were me and I was them and why were they so excited about this when I was so offended? After a lot of introspection I came to realize that the answer for me was that nothing had changed.
The reality I was missing was that computers haven't changed a whole lot since the IBM 360. The only thing that changed is that they got faster, smaller, and way cheaper. But their nature hasn't changed at all. They have registers, they have machine code, they have fast I/O devices and slow I/O devices, they have memory and displays and peripherals of various kinds. But at the end of the day, and this is especially obvious with various recreations and emulators, the computers of today are not really all that different in nature from the ones I learned programming on.
That in itself might not have been a killer, but the killer was software was by and large unchanged as well. After 20 years of programming, every single programming task felt like a remake of something I had already done. And for what? To implement it in the language of the day? Because you couldn't get the source to one version so you rewrite it from scratch to get better licensing terms? Lots and lots of software was done in the sense that there really isn't a good reason to re-design it, but there are a zillion reasons while you might be asked to re-write it.
Imagine if you were a screenwriter or a songwriter and someone said, "Ok we need 'Gone with the Wind' but now its going to have a gay couple, take place during the Syrian Civil war. Don't change any part of the plot or the story or the relationships, just swap Arabs for Southerners, Syria for the South, and have the love interest die of MERS or something."
Wouldn't that be a crappy job? What can you do with that? Where is the creativity? Where is the opportunity to express a fundamental truth in a new way?
I realized that I had come to hate programming because everyone was asking me to program the same stuff that had been written before but now in the Fluff Framework. I could do that with my eyes closed and so could any teen fresh out of college. What did they care that it had been implemented twice, three times, maybe five times previously in different ways?
Once I understood my problem I could start working on the solution. I decided to start writing software in areas where I had never written code before (like DevOps), or in areas where hardly anybody had re-written code before (like software radios). I also started to meticulously develop a workflow that ran on every operating system I might have to work on (Linux, Windows, and MacOS) that worked for me and saved me from having to relearn a new thing "just because" someone got it in their head that they could "improve" text editing for coders. When the friction between thoughts and code and execution are low, and the problems being coded or solved are novel, I love programming. Because I know what to avoid (arbitrarily complex tools and rewriting CRUD code again and again) my level of joy has gone up significantly.
I don't know if any of this will resonate with your question but it worked for me.