4 ms·
Software is a big field. I don't know much about linked lists or TCP/IP either, and that's okay. I've created solutions that solve problems, and it sounds like
by brushfoot 4y ago
Software is a big field. I don't know much about linked lists or TCP/IP either, and that's okay. I've created solutions that solve problems, and it sounds like you have too.
The programmer Steve Yegge wrote a "drunken rant" blogpost where he uses the term "racecar drivers" to describe programmers like us, programmers who create at a higher level of abstraction. The idea is that programmers strong in algorithms and theory of computation are the racecar engineers, while the rest of us just drive what they build.
It's not the most accurate analogy, and the tone in the rant alternates between tongue-in-cheek ribbing and concerningly genuine-sounding disdain, but the main point still stands in my opinion: There are different types of programmers. I would fall into the racecar driver category in Steve's view, and I'm fine with that. I like sitting close to the business and being able to add value quickly. I wouldn't be able to do that as a racecar engineer, at least not where I've worked and with what I'm interested in working on.
With that in mind, I'd say not to worry about becoming the kind of engineer you think you should unless you actually need to. E.g., does the company you're at expect a certain set of engineering skills from directors that you don't have yet? In that case I would find out what that entails and sign up for courses that teach it (Udemy is my go-to right now, but take your pick).
If not, I think you should just accept that you're different - not an impostor, just a different breed of software engineer, not a racecar engineer but no less valuable, and in certain domains more valuable for the unique mix of skills you bring to the table.