Do you import libraries for everything? Depend heavily on frameworks you don’t contribute to and only open more issues on GitHub? Do you copy or paraphrase code from StackOverflow? Wow, I can’t believe you’d just go and do something… that everyone else is doing.
Not that long ago, I went on a crusade to “become a real engineer”. I bought the original K&R C Programming Language book, I watched probably a hundred educational videos on assembly language, I even built a freaking adding machine out of breadboards and discrete components. My pilgrimage ended with a “huh… all this crap is the same”.
It took me actually working with the bare metal to understand this. Let me explain.
Reinventing the wheel is a special kind of crazy, in software. It’s dangerous. Ancient languages, frameworks, and libraries are safe. Stability and bug free code is always the goal, and you aren’t going to achieve that goal by thinking you’re some kind of software hero coding up your own graphing library. Leave that to D3. Perhaps your skills are better used knee deep in business logic.
When I’m writing code for the browser, I’m really just abstracting logic so the user can do things in realtime. When I’m writing code on the server I’m really just abstracting logic for business rules. When I started stripping out libraries and then eventually writing in C and assembly I was really just abstracting logic to change the background color of a window or whatever. It is all the same, just solving different problems — and the closer you get to the metal the less you actually get done, as perceived by the outside world, which is why you can’t sell your boss on ditching AWS and hosting on your Raspberry Pi cluster supporting your homegrown C++ server framework.
Software is about writing code. You know how to write code, you know logic and efficiency. Given enough time you could learn systems architecture and Rust or C++, and you’d find libraries on top of libraries for those projects too. The satisfaction might then be great, or perhaps lackluster — to find that a good engineer is a good engineer. The only bad engineers are those that stop learning.
You’re not an impostor.