I've found my career to be a continuous ebb and flow of feeling incompetent.<p>Very early on, I started out by learning Perl programming on the job, writing CGI scripts for basic interactive websites. I had no clue what I was doing when I started, but after a while I was pretty good at it (and felt relatively competent). Then I got a job where most of the code was C, which I had done only a little of. After a few years of that, I think I was pretty solid, but then it was time to start learning about Java and its ecosystem. Later, I wanted to do some iOS work, so I had to dive head first into Objective-C and Cocoa - I was pretty lost to begin with, but eventually I got the hang of it. Somewhere along the lines I picked up Python. I struggled for a while (and it took me longer than I'd like to admit to get comfortable with significant whitespace), but I got there.<p>Now I'm working on updating my web dev skills by learning about React and all of the surrounding technologies. Once again, nearly 20 years into my career, I'm feeling pretty lost and incompetent. I've been through this enough times to know that I'll figure it out, but it can still be pretty frustrating and demoralizing to struggle to even get something basic working.<p>I think this is just a fundamental part of software development, and of continuing to learn and expand your skillset. It's good to remind ourselves that no one out there knows everything, everyone struggles from time to time, and if we're hitting speedbumps it means we're learning and improving.