TL;DR: All the damn time.
Long, this is a confessional:
My undergrad (and only) degree is in chemistry. I pursued it because I love(d) the subject, and then realized that I wasn't willing to invest the upper-level time before moving on. Even worked a summer job on the single coolest project I've ever been on (particle accelerators are f*ing ridiculously cool). Then I left, did some other stuff and then became a (real = professional?) developer about 3 years after college when my company needed someone to step in when they stopped paying their web contractors to do work.
Ever since then, I've a) had to teach myself literally everything that I know about modern development (server, web, etc.; it was all completely new to me, the last thing I wrote before that was QBasic and static HTML) and b) been worried that I'm not good enough to really be doing what I'm doing. I now (different company) have a full time job where I am responsible for internal and public-facing web properties across multiple technologies and disciplines, and I do a bunch of one-off tasks on the side. Mixing and matching and not really doing anything 100% full-time led to me wondering if I'm just a "jack of all trades, master of none".
And lately, the last sentence has been the inverted in meaning. I'm pretty much exactly what it says, a jack of (most) trades and a master of none, but I know what I do and don't know, and I've learned over the years where to find the answers to most things, or to keep looking if a stackoverflow/msdn answer seems wrong (happens a lot). It's taken a while, but I'm dealing with the (frequently intense) feeling of being an impostor, because so many other people in this industry would be "impostors" because they learned something else first.
In many cases, it makes them good and even better. History, music, and english degrees teach context interpretation skills, communication skills, and patience (the power of a single thought vs. the decades sometimes required to realize it) in a far deeper way than any technical discipline does.
Even in the technical world, my degree is in chemistry. I didn't know how to run a dynamic shear rheometer, bending beam rheometer, proctor test, or triaxial shear before I took my last job either, but after years of working with them I know what they are, what they do, and mostly how to use them now. We learn by doing, asking, redoing, and asking again. Development / programming is no different, and I'm at long last coming to terms with that.
Slightly off-topic, I'd like to thank some people who almost certainly don't know that I exist *all twitter (@hacks4pancakes, @malwaretechblog, @viss, @swiftonsecurity, @binitamshah, @nerdpyle, @jessysaurusrex, and @bendhalpern). I'm a terrible lurker, but they've all presented information in a way that I can actually feel comfortable with the the quality (and more importantly improving quality) of my work.
Holy F that feels good.
We’re a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.