This may not be the answer you were anticipating, but: I wish I'd known that, by and large, you can pick a lot of it up as you go if you're good at self-learning.
I went into gamedev with, functionally speaking, my only coding experience being a single camp as a kid that taught me basic and visual basic. I'd messed around a little more with modding graal online, but realistically, to say I had "programming experience" would be misleading. I was an animator, pretty much ONLY an animator, who knew what a "goto" was, basically.
Late in development of clockwork empires it was becoming pretty clear that the art team's work was winding down but we needed more people to help work on the gameplay. Artists were handed books on writing lua and told to do a few chapters. As someone who has a particular penchant for how-to books, this was like lighting a match for me. I came back from this "learn how to write hello world" tutorial with, somewhat infamously, an app containing a physically-bouncing, flaming Monkey Island screenshot.
Things only escalated from there. I grabbed any bit of task I was even mildly interested in (I was interested in all of them) and ended up taking responsibility for more-or-less the entire economy balance, writing and scripting the full tutorial and "civilopedia", and a ton of in-game event work for Clockwork Empires. By the end of a few years I was doing all kinds of things in lua that probably should not have been allowed by law. And then gaslamp ended.
I took the opportunity being out-of-work to voraciously consume the entire unity tutorial suite in a week and then start working on my own clone of Tetris Attack, written mostly in C#. I ended up putting it on hold because of freelance work, but my job description has ended up becoming more and more amorphous over the years - for radial games I wrote entire gameplay prototypes myself, fixed bugs, whatever was needed. Once you know how to do such a large swathe of gamedev it's really hard to just say "not my problem" when an issue crops up. Maybe that's the fun of solo dev to some degree; it's hard not to feel fancy as hell when you can be an entire production team by yourself.
Anyway, now we come to my current job at ivy road, where I've leveraged my job as animation lead and my coding knowledge to basically become the queen of gameplay animation. Typically speaking, when I get an idea in my head of how I want something to look, it's my job to not just animate it but to put it into the game and make it feel the way I want it to feel, whether that's hand-tuning input timings and buffering, setting up procedural animation using curves and Blueprint (I will have so much to say about this after we launch), or even building out tools for other devs to simplify their intersection with my work.
None of this is what I trained for in school. I went to school for film animation. I trained how to make animations in maya and export them, and that's about it. The rest is sheer enthusiasm and a lot of internet searching, reading, and sometimes just trying different avenues to make something work, over and over, until one of them finally does. You can brute force a lot of technical skills just by being interested in doing something practical with them.
Anyway, that's the thing I kind of wish I'd known going into games. You don't have to pigeonhole yourself! I can be an animator-rigger-coder-designer-person rather than just one of those things, and flourish. And that's pretty great, IMO.


