Hey everyone, just stumbled across this thread and thought I'd post!
Yep, I'm a self-taught Graphics Programmer
Started programming when I was 9 at Xmas 1982 with my new ZX Spectrum. Wrote a 3D spinning cube demo about a year later in Z80 assembly on the speccy after seeing Starglider. Moved onto an Atari ST in 1986 and wrote lots of 3D demos to share around school. Didn't really think I could get a job as a programmer as I had no formal training or a degree so I just did it as a hobby whilst working at a Game retail store. I kept thinking, I really wish I was doing that as a job making those game rather than selling them. By chance I got invited to a Launch party for one of the games. Much beer later, I kind of plucked up the courage to ask the programmers how do you get into the industry. One chap said, "Just write a demo and send it in to places". So, I quit my job on New Year Eve 1995 and spent 3 months working on a 3D demo on my PC in x86 assembly. (Still have the print out of the code!) I applied to a couple of places around where I lived (Northwest England, UK) and sure enough I managed to get a job. I was terrified at first, but realised that I could do the stuff they asked me to do. Then it turned out the no-one really did assembly any more and came to me to help optimise code and that boosted my confidence. But I had to learn 'C' as quickly as I could, so bought lots of books and just wrote lots of code in my spare time to get used to the language.
Anyways, did that for a few years, moved to a couple of other places and finally ended up working on a game called Isle of Man TT Superbikes on PS2. I was the lead graphics programmer on that, which was pretty cool. The company went through a bit of a sticky patch towards the end of development, so I ended up joining another company called Evolution Studios... Not sure if you've heard of them, but I ended up working on the MotorStorm series on PS3 as a Senior/Principal Graphics programmer across all 3 titles, MotorStorm, MotorStorm: Pacific Rift and MotorStorm: Apocalypse. They were using C++ which was new to me, which I told them in the interview. I failed miserably at the C++ test they gave me, but I said I was into low-level assembly and graphics. I ended up talking for way too long about all the VU, DMA, GS optimisations that I had done on PS2 and they hired me on the spot! That was an awesome time as I got to sit in secret rooms, with secret hardware with stickers on the side saying "Danger of Death". I had to sign some crazy USA Nuclear non-proliferation agreements from IBM to do with the CELL processor. It was truly cool stuff working with the SPU processors, and we had to mostly use assembly as the SPU 'C' compiler was awful to begin with! After MotorStorm, I then got to work on the PS4 before it was even a thing around 2009. Lots of secret meetings, with lost of clever people from major studios all over the world. Eventually what we we were working on became Driveclub for PS4 on which I was a Principal/Lead Graphics and Core Tech programmer.
So pretty humble beginnings and the main thing I've learnt is to never stand still. Not having a degree hasn't held me back, as I have been able to prove what I can do. The key thing is that once you know the key concepts, the API / Code behind it is always evolving and you really have to keep up. But, choose your battles wisely. Don't focus on too narrow an area as before you know it, it's old hat and something new has come along.
So for anyone starting out, just keep doing demos. Start off with something simple, understand it, improve it and then do another demo. Just keep building up, advancing your knowledge, and read lots of stuff.
Hope that's helpful... Best of luck...