| I think it's an issue with teaching. I am teaching a few people in my spare time and the way highschool (& sometimes university) teaches programming is not conducive to learning or understanding. I've still yet to meet a kid who wants to learn that can't learn it given reasonable time and proper explanation. Given the Internet likes explaining basic concepts in forty different ways, I think as time goes on learning CS only becomes easier. With good fundamentals I think picking up new frameworks and different languages is fairly easy. With the exception of Rust and Haskell, which I'm interested in but never got around to using well, the other languages all seem to come fairly easy after a month or two. There will always be idioms you do not know or fail to remember but that's why there are linters, code reviews, and senior engineers. It's definitely daunting to jump into poorly written products, and I feel every company has at least a section of their code base that is like this, but that's what good on-boarding and ramping up is for. These are all process issues and not fundamental issues with computer science. Very few companies I've been at are good at one of these things let alone all of these things. A lot of the time you _are_ slogging at it alone and sometimes you go alone for too long because of ego or lack of confidence. These are all organizational and process issues. Some of it is individual issues too that one must overcome, but making it seem like only the passionate succeed in software engineering like everyone is the top 0.01% of their craft is harmful to the profession as a whole. My solution to most of these problems is to find a mentor at your company. Anyone who knows what they're doing. I find most people are super nice when you ask questions as long as you are willing to learn and aren't just trying to get them to do something that seems annoying (i.e. asking ops people why your build fails...). I've never met an engineer who _doesn't_ want to talk about how something is designed, the pitfalls, and the hacky work arounds. People like being useful to other people. Let them be useful. Caveat: I've met a few "legacy" engineers who were hired early and have a negative influence on the direction of the architecture. In companies like these? You can just leave. Everyone wants a good software engineer and as long as you're willing to relocate, you'll land somewhere fine. |