Just Make Stuff
Ben Levin gave this great response to a fan looking to get into animation:
Short version: Make stuff.
Long version: There are so many paths to animation. My journey from high school to Steven Universe had so many twists and turns. I mean, relatively. I never wanted to be a dentist or a rabbi at any point - I was into filmmaking the whole time.
As a kid, I was a fan of animation, but I didn’t know how to animate a short film. So I started making silly videos. Making videos in high school helped me get into film school. Film school taught me how to animate, which got me a job in motion graphics. The graphics job allowed me to make my own shorts after hours, which through several other hoops, got me a job writing for TV.
Now, you don’t necessarily need to go to film school to learn how to animate. And you don’t necessarily need to be an animator to work in animation.
So my advice is, as always, to make stuff. It’s fun, it’s great practice, you learn about yourself and you get to show other people what you’re all about.
Keep drawing, maybe try drawing comics, or if you have the means, try animating! Get a tablet and some animation software and experiment. Even making live action videos will help. Animation is filmmaking, after all.
On Software
You can substitute animation for software development or engineering and the same message applies. Engineering is a creative field, just as much as animation is; the only way you’re going to really get better is to keep making stuff.
It’s okay if your code smells! There hasn’t been a software professional I’ve met that’s said they’ve never written smelly code in the past, and I don’t think I’ll meet anyone who will say that. It’s a part of the trade; you learn from your previous experiences by examining it with a very critical eye. Take a big wiff of that code smell, learn it’s essence, and figure out how to fix it.
I have some pretty gross code up on GitHub from a few years ago.
if(current_type == PROP )
{
cout << "test" << endl;
cout << (*MonopolyBoard[currentpos]).getOwner() << endl;
if((*MonopolyBoard[currentpos]).getOwner() == -1)
{
cout << (*MonopolyBoard[currentpos]);
cout << "Current Property Unowned, do you "
<< "want to buy?(Y/N)" << endl;
cin >> input;
while(input !="n" && input != "N")
{
if(input == "Y" || input == "y")
{
(*MonopolyBoard[currentpos]).setOwner(i);
Players[i].update_balance(
-(*MonopolyBoard[currentpos]).getPrice() );
cout << playername << " bought " << (*MonopolyBoard[currentpos]).getName()
<< endl;
break;
}
cin >> input;
}
}
Eww!