I think there’s definitely an effect where our tools can shape how our code comes out. Perhaps it would be a good exercise to write code from different levels of IDE support (learning how to write code without autocomplete, without the whole internet at your fingers, etc), akin to how it’s considered a good exercise to write code in multiple languages. I’m certainly glad to have found tools like rg or Everything Search. Those come in very handy when you’re not in an IDE, or when you don’t have a good IDE.
As they say, “when all you have is a hammer, everything looks like a nail”. When you are choosing your tools you have to consider how “smart” they are: i.e. do you want to use a machine or do you want the machine to use you? You can write all of your code without the fancy IDE features (how many kernel devs use VIM?). Sticking to “dumb” tools gives you more freedom but it can also prove to be a limiting factor. There’s always a tradeoff.
After watching an extremely skilled carpenter construct a beautiful shelf for a problem where a simple lashing would suffice, my colleagues and I coined the phrase “when you are a hammer, everything looks like a nail”. On a similar note, I recently saw this video from linux.conf.au about how expertise can constrain thinking: https://www.youtube.com/watch?v=Yv4tI6939q0
It talks about the construction of the Harvard Convention Center, and how the builders raised problems that the architects ignored, because their fancy new computer said it would be fine. It also describes a gripping story of smokejumpers (parachuting firefighters) jumping into a situation that goes out-of-control and talks about who was trapped by their training, and who found creativity when that training failed.
I thought it was easy? Drop information as the program is translated into another form, basically, all compilers do this (as well as programmers as we write the code to solve a problem that’s not codified yet).
Brainfuck wasn’t hard to invent, it’s basically just a Turing machine.
I struggled with this thought about a decade ago (with this being the key article). I also think the industry is now favoring tool mavens over language mavens (question: what you you IDE proponents do when your IDE doesn’t support a language you need to use?).