I studied CS in university. I suppose my first paying gig was as an undergrad research assistant, working for the princely sum of $12.50 an hour. It was a direct outgrowth of a self-directed study project that I had done with the same professor. I was shockingly naive at the time -- "Wait, you can just give me money for something that I already was doing for free? And you're offering $12.50?! That's 25% more than I've ever earned!"
This would have been in the summer of my senior year, though I had not particularly tried to get programming work earlier. That's probably for the best. At the time I would have had ~10 years of programming experience if you count very liberally of which 4 years was fairly intensive (university), though only ~1 year of it was in the language we used at the lab. (gawk, by the way.)
My first "real" post-university job was as a technology translator at a Japanese prefectural incubator. I didn't do much programming in the first 12 months or so, but eventually convinced my boss "Look, we have 5 translators here to do 1 translator worth of work. I'm technically assigned to the R&D group and actually can program. I also am totally willing to do any scutwork you give me and stay out of your hair while doing it. How about it?" This lead to me getting very out of my depth in image processing code in C++ followed by, after protesting that it was just impossible, heading up some distributed computing and anti-spam research projects. I was still in laughably over my head but the unique contours of my employment (and the politics of local Japanese government) meant that expectations were so shockingly low that picking a goal and trying for it was enough to be praiseworthy even though my deliverables were terrible.
After that I got an engineering job with a Japanese megacorp and finally learned professional engineering discipline like e.g. source control, testing ("You mean you run programs before demoing them to the boss?"), databases ("You mean all data doesn't go in flat files?"), and the like. This would have been approximately 3.25 years after graduating university.
Bingo Card Creator (a side project which ended up changing my professional career) happened about 3 years after graduating university while still working at the incubator as (titularly) a translator.
The most amazing part of this to me is that it's possible to code for a decade get through a CS degree and be a research assistant without testing or even using source control! I'd probably have gone insane trying to debug under those circumstances.
Though, worth noting, source control is on the Joel Test specifically because at least some engineers needed outside ammo to bludgeon their employers into the 20th century. It was very much NOT the case in ~2000 that you could just assume any professional engineering team would be using source control.
I constantly pushed the use of source control when I was a TA for CS juniors & seniors. Of the low-three-digit number of students I interacted with, approximately two of them listened. Many of these had already had internships at e.g. Facebook, Microsoft, Amazon...
This would have been in the summer of my senior year, though I had not particularly tried to get programming work earlier. That's probably for the best. At the time I would have had ~10 years of programming experience if you count very liberally of which 4 years was fairly intensive (university), though only ~1 year of it was in the language we used at the lab. (gawk, by the way.)
My first "real" post-university job was as a technology translator at a Japanese prefectural incubator. I didn't do much programming in the first 12 months or so, but eventually convinced my boss "Look, we have 5 translators here to do 1 translator worth of work. I'm technically assigned to the R&D group and actually can program. I also am totally willing to do any scutwork you give me and stay out of your hair while doing it. How about it?" This lead to me getting very out of my depth in image processing code in C++ followed by, after protesting that it was just impossible, heading up some distributed computing and anti-spam research projects. I was still in laughably over my head but the unique contours of my employment (and the politics of local Japanese government) meant that expectations were so shockingly low that picking a goal and trying for it was enough to be praiseworthy even though my deliverables were terrible.
After that I got an engineering job with a Japanese megacorp and finally learned professional engineering discipline like e.g. source control, testing ("You mean you run programs before demoing them to the boss?"), databases ("You mean all data doesn't go in flat files?"), and the like. This would have been approximately 3.25 years after graduating university.
Bingo Card Creator (a side project which ended up changing my professional career) happened about 3 years after graduating university while still working at the incubator as (titularly) a translator.