So when starting C# 3 1/2 years ago, having now worked full time on my SDK in Unity, having programmed before I started C# only javascript and dark basic pro, and countless upon countless forum and question/answer and reddit posts later over all this time, I’ve always seen this one idea over and over again, and it always gets more annoying than the last time it’s said.
I see this same quote, this same idea put forth in everything that I’ve studied, C# programming, music composition, digital painting, and language. It’s this good old fashioned quote:
“It’s bad practice to do that” or “You don’t want to form bad habits” or whatever.
For me, over these more than 3 years working with this language, it’s always been with a level of ease, and it’s always been fun on the level of addiction. I can’t put it down when I’m working on it, I’ll sit for 12 hours straight on some days solving a problem. My point is, it’s never been a ‘chore’ for me, it’s never been something I studied formally in school or had homework or a paper due on. I’ve never had a day of stress in the learning aspect of the language. That feeling of being a rebel programmer is what’s kept me feeling alive doing it, like there are all these people that are masters and gods in the language, every single time, these people that put together quadratic functions and know these advanced aspects of calculus and trigonometry. There are actual rocket scientists everywhere, and to me it’s felt like here I’m this dumbass poor lower middle America idiot working in a back room on this, finding seemingly idiotic ways of accomplishing making the computer do the things I wanted it to do, finding the most simple minded perspectives and ways of looking at solutions, I don’t mean to come off arrogant, but where the smarts I’ve been lacking I think my passion has been at full drive all the way through this, possibly part of why is that rather than learning C# alone, I’ve wanted to see that finished polished product all shiney and new sitting on a store-shelf for all of this time, and I’ve strived for that every day, I want that more than anything in the universe at this point.
Over these 3 years, I’ve learned what I need to, and yes I’ve cleaned up previous code that was “bad practice” or whatever, but I want to seriously say to anyone starting out, to be honest, if at all possible…just do it your way.
Everyone has a different individual way of learning. The best part of it for me was that you actually could go about one problem with different approaches, which actually isn’t similar to many different things you might learn creatively, programming is amazing to me in this way.
My advice, having been a beginner myself, you’ve gotta just figure it out yourself, doing it your own way, you’re gonna be exercising your own brain, no one else’s. Maybe if you keep working on the same project you’ll want to do it differently and you’ll cross that boat when you come to it, but just do it your way and don’t listen to others when they say these two statements, that’d be my advice to those starting out, setting those boundaries, for me, really helped me out.
I decided, you know what, people keep saying about static variables “It’s bad practice, it’s bad practice, it’s bad practice” like a robot, well, just do it, see if it works. If it works, it works. Yes, later on I ended up changing it, but you’ve gotta do whatever you’ve gotta do to get the job done, to get to where you want to be by your own personal effort.
People told me that using IEnumerators were better because they had less overhead than state machines, well today my game runs on state machines, and you know what it works. It’s my own way of doing things. People say “Well, it’s 0.2 milliseconds slower”, well for me it works, what can you do.
First year I just used underscores instead of namespaces, and even tried to put the code in as few scripts and classes as possible, and that was ‘bad practice’, but it was my own way of doing things. Yes, it changed later, but there’s something to be said about the creativity of it being a child/spawn of your own brain. It’s going to be yours and no one else’s, and that’s what let’s the passion flow.
Some people prefer if statements where switches might be, some people prefer switches were if statements might be, some people use only switch statements. Some people use state machines with int variables instead of enums for it’s states, sure I’ve seen that statement used again “bad practice”, but if it works for them, it works for them.
An example of a breakthrough, when I figured out that I could use nested classes/objects, and when I figured out the simple minded way of just seeing classes/object’s methods as simply buttons on the class/object, that opened up doors for me. To someone learning formally, they might laugh when they realize this was almost maybe 9 or 10 months after starting, but I learned it MY way, and when it stuck, now it’s so integrated and I’ve practiced it so much over the years that I’ve got it down, and I’ve also learned from driving forward like this how to help people out that are just starting to understand this concept early and in a very easy and simple minded way.
Everyone’s different. Think for yourself, do it your way, individualism is power in a creative endeavor. When you do ‘get it’, you’ll understand it YOUR way and no one else’s, the information will be uniquely yours, it’s your brain after all and no one else’s. And forget about how long it takes to learn, just make what you want to make in Unity today and you’ll pretty much get it if you keep at it.