I have been known to indulge in reinventing the wheel.
It's something of a capital sin, or at least heavily discouraged, in science and engineering, yet I keep falling for it. Study the classics, to be sure, derive the theorems and the results - in an educational setting. But ultimately, when you have to do work, you need to go ahead, and can't just re-thread the basics every time. Start from existing derived theorems. Read up on what knowledge is already there. Use that library. We don't need one more implementation of a linked list or even a logger, we really don't - just take what is already there and build on it.
I understand full well these principles, yet I do tend to fall back on reinventing the wheel at times. I have tried to train myself to do this as little as possible in contexts where it actually matters - at work, mainly, when money and time are on the line. On my own, I indulge in it a bit more, knowing full well this means that I'm putting time and work I could use to make something that's really useful and makes me stand out more to instead just... redo something someone else already did, but probably worse. I still can't help myself; it's fun. If the opportunity at works presents itself too - if there's a decent reason why just roll out our own version is a viable alternative and not just a completely nonsensical proposition - I am definitely partial to it.
Why is that? If I ask myself and introspect, a number of things. First, I am loathe to use things I don't understand in full. It's kind of an unavoidable curse of working in a mature field that you have to subject yourself to this - you can't spend time understanding everything other than in broad strokes, or a dozen lives wouldn't be enough. I already begrudgingly submit myself to treating hardware as little more than magic - yeah yeah I know, gates, registers, RAM, buses, I still wouldn't know how to design even a single adding circuit so it doesn't really matter, it's all just abstractions on what may as well be little gnomes doing calculations while sitting at microscopic desks. But with things where I do have a reasonable command of the techniques and principles involved, it stings more. I still don't need it, except maybe for the edge case of something going wrong and me needing to figure out what it is, but it makes my work feel more complete, if you know what I mean, if I could recreate any single element of it from scratch, even just in a basic form[1].
Second, it's low hanging fruit. Newer, unsolved problems are generally harder than older, solved ones - not in the sense that I can just look up the solution (though I can), but that generally those problems genuinely were more basic (they were encountered and solved first after all!) and also, even if I don't directly know the solution, everything else I know was probably somewhat informed by it so it's kind of already inside me somewhere, more likely than not. And getting a solution, even if it's just a game you're playing to figure out a little puzzle the world already knows an answer to, is always satisfying.
Third, sometimes I just don't like any of the existing takes on it. This applies to software especially, but there's a part of my brain that feels like it's easier to just use something I made from scratch and am intimately familiar with than to adapt to the quirks and whims of something made by someone else by reading information about the complete product. Maybe not faster, but easier and therefore more pleasant.
This comes of course with costs. I sometimes hold back from reading information beyond the basics because even as I read those I am immediately flooded with ideas and possibilities on how to develop further and those both distract me and make me reluctant to go on (lest I just find the answers already laid out for me in the most boring possible fashion). I also sometimes end up in an infinite regression when trying a project. I want to do X, which requires Y - but I'm not content just plumbing in an existing solution for Y, so I set out to make my own Y, which is at least as much effort as X would have been already. Except now Y requires Z... you get the pattern. I often end this with either only the lowest level thing done, or none at all, as my attention was now defeated by the crushing pile of work in front of it and eventually distracted by something else.
So I have of course learned to manage this flaw of mine. I've learned to keep it under control and swallow my pride to make more objective judgements whenever important work relies on it, and I think I have gotten all right at it, and sometimes I've also learned to bring this into my personal work because it still makes for more satisfying outcomes if I at least can get the thing I wanted done.
Except now something threatens to challenge this balance:
enter AI.
Since the last generation of LLMs especially (GPT 5.1 and its ilk) I've begun feeling like both research and coding abilities are really up to a level where they can get stuff done. This creates a problem for me. Because my anti-reinventing-the-wheel training says "don't spend time redoing something that you can find already done, or can be done easily by other means". And with AI that translates to, well... almost anything. It means my classic infinite regression tends to be replaced by a different infinite regression: keep asking the AI to build, or research, keep diving, and almost never reach the point of actually doing something myself. Even as I know I should and probably could just tackle a problem on my own, for its own sake, paradoxically having overcome a bit my old reinventing the wheel habit now plays against me, as I remain with the nagging feeling of "but why do this when an AI could already do it faster?" for a lot of things. Or that I should at least delegate as much as possible of what I'm doing to it, and only identify the ever-shifting target of "things only I can do" and focus on them.
So what's the point?
I'm not sure. I was mostly ranting and baring my soul out, perhaps. But the main serious take-away I can think of involves the notion of purpose in a fully automated future. It has been often said by those who are more optimist about AI that we don't really need to fear AI taking purpose away from us - just because it's not vital for us to solve a problem any more, doesn't mean we can't still do it for fun. Let AIs speed away on curing cancer or solving the global economy, things that are life or death for people; there's no particular reason why we can't sort of sandbox ourselves and still solve largely solved problems, or make art that would be just as easily churned out by a model, purely for our own enjoyment. In a sense, it's a purer experience, unburdened by expectation, pressure or need; just us and the joy of discovery.
And I don't disagree with that, because in fact that would always have been my first instinct. That's reinventing the wheel. But also, me as a person and perhaps us as a society have sort of trained that playful impulse out of ourselves to a significant degree. We have learned that it's bad and wasteful because there's stuff that needs to be done. And there is - until there isn't. And even in that most optimistic scenario, it will be no little feat to reprogram ourselves, to retrain ourselves and our social and cultural incentives away from this habit and into a state in which we can see reinventing the wheel as just a thing you do, and good for you.
Though to be fair, this doesn't apply to everything either. I've made web apps with React and I've never had a particular desire of understanding how the React loop keeping everything updated works. I feel like I have a good enough sense of how it might at a high level, and the low level just sounds likely to be boring.
I have been known to indulge in reinventing the wheel.
It's something of a capital sin, or at least heavily discouraged, in science and engineering, yet I keep falling for it. Study the classics, to be sure, derive the theorems and the results - in an educational setting. But ultimately, when you have to do work, you need to go ahead, and can't just re-thread the basics every time. Start from existing derived theorems. Read up on what knowledge is already there. Use that library. We don't need one more implementation of a linked list or even a logger, we really don't - just take what is already there and build on it.
I understand full well these principles, yet I do tend to fall back on reinventing the wheel at times. I have tried to train myself to do this as little as possible in contexts where it actually matters - at work, mainly, when money and time are on the line. On my own, I indulge in it a bit more, knowing full well this means that I'm putting time and work I could use to make something that's really useful and makes me stand out more to instead just... redo something someone else already did, but probably worse. I still can't help myself; it's fun. If the opportunity at works presents itself too - if there's a decent reason why just roll out our own version is a viable alternative and not just a completely nonsensical proposition - I am definitely partial to it.
Why is that? If I ask myself and introspect, a number of things. First, I am loathe to use things I don't understand in full. It's kind of an unavoidable curse of working in a mature field that you have to subject yourself to this - you can't spend time understanding everything other than in broad strokes, or a dozen lives wouldn't be enough. I already begrudgingly submit myself to treating hardware as little more than magic - yeah yeah I know, gates, registers, RAM, buses, I still wouldn't know how to design even a single adding circuit so it doesn't really matter, it's all just abstractions on what may as well be little gnomes doing calculations while sitting at microscopic desks. But with things where I do have a reasonable command of the techniques and principles involved, it stings more. I still don't need it, except maybe for the edge case of something going wrong and me needing to figure out what it is, but it makes my work feel more complete, if you know what I mean, if I could recreate any single element of it from scratch, even just in a basic form[1].
Second, it's low hanging fruit. Newer, unsolved problems are generally harder than older, solved ones - not in the sense that I can just look up the solution (though I can), but that generally those problems genuinely were more basic (they were encountered and solved first after all!) and also, even if I don't directly know the solution, everything else I know was probably somewhat informed by it so it's kind of already inside me somewhere, more likely than not. And getting a solution, even if it's just a game you're playing to figure out a little puzzle the world already knows an answer to, is always satisfying.
Third, sometimes I just don't like any of the existing takes on it. This applies to software especially, but there's a part of my brain that feels like it's easier to just use something I made from scratch and am intimately familiar with than to adapt to the quirks and whims of something made by someone else by reading information about the complete product. Maybe not faster, but easier and therefore more pleasant.
This comes of course with costs. I sometimes hold back from reading information beyond the basics because even as I read those I am immediately flooded with ideas and possibilities on how to develop further and those both distract me and make me reluctant to go on (lest I just find the answers already laid out for me in the most boring possible fashion). I also sometimes end up in an infinite regression when trying a project. I want to do X, which requires Y - but I'm not content just plumbing in an existing solution for Y, so I set out to make my own Y, which is at least as much effort as X would have been already. Except now Y requires Z... you get the pattern. I often end this with either only the lowest level thing done, or none at all, as my attention was now defeated by the crushing pile of work in front of it and eventually distracted by something else.
So I have of course learned to manage this flaw of mine. I've learned to keep it under control and swallow my pride to make more objective judgements whenever important work relies on it, and I think I have gotten all right at it, and sometimes I've also learned to bring this into my personal work because it still makes for more satisfying outcomes if I at least can get the thing I wanted done.
Except now something threatens to challenge this balance:
enter AI.
Since the last generation of LLMs especially (GPT 5.1 and its ilk) I've begun feeling like both research and coding abilities are really up to a level where they can get stuff done. This creates a problem for me. Because my anti-reinventing-the-wheel training says "don't spend time redoing something that you can find already done, or can be done easily by other means". And with AI that translates to, well... almost anything. It means my classic infinite regression tends to be replaced by a different infinite regression: keep asking the AI to build, or research, keep diving, and almost never reach the point of actually doing something myself. Even as I know I should and probably could just tackle a problem on my own, for its own sake, paradoxically having overcome a bit my old reinventing the wheel habit now plays against me, as I remain with the nagging feeling of "but why do this when an AI could already do it faster?" for a lot of things. Or that I should at least delegate as much as possible of what I'm doing to it, and only identify the ever-shifting target of "things only I can do" and focus on them.
So what's the point?
I'm not sure. I was mostly ranting and baring my soul out, perhaps. But the main serious take-away I can think of involves the notion of purpose in a fully automated future. It has been often said by those who are more optimist about AI that we don't really need to fear AI taking purpose away from us - just because it's not vital for us to solve a problem any more, doesn't mean we can't still do it for fun. Let AIs speed away on curing cancer or solving the global economy, things that are life or death for people; there's no particular reason why we can't sort of sandbox ourselves and still solve largely solved problems, or make art that would be just as easily churned out by a model, purely for our own enjoyment. In a sense, it's a purer experience, unburdened by expectation, pressure or need; just us and the joy of discovery.
And I don't disagree with that, because in fact that would always have been my first instinct. That's reinventing the wheel. But also, me as a person and perhaps us as a society have sort of trained that playful impulse out of ourselves to a significant degree. We have learned that it's bad and wasteful because there's stuff that needs to be done. And there is - until there isn't. And even in that most optimistic scenario, it will be no little feat to reprogram ourselves, to retrain ourselves and our social and cultural incentives away from this habit and into a state in which we can see reinventing the wheel as just a thing you do, and good for you.
Though to be fair, this doesn't apply to everything either. I've made web apps with React and I've never had a particular desire of understanding how the React loop keeping everything updated works. I feel like I have a good enough sense of how it might at a high level, and the low level just sounds likely to be boring.