Sign in to follow this  
gRnt

Self teaching? Good or Bad?

Recommended Posts

Hello all I am a 23 year old who's always been very enthusiastic about computers and gaming. I have recently applied (and gained access) to a degree in computer science and digital media at my university, as I have decided to quit my current job and move into a field I am extremely passionate about. However I'm a bit wary about self learning as I am afraid I will pick up bad habits, that will cause problems later down the track if and when I am competent enough to design a game, or is it a good idea to learn what I can myself before my course starts simply to boost the knowledge I have once I actually enter my studies.

The other question I have is there any benefit at all in me picking up an SDK for an already well established game and make a small mod? Is the time invested in proprietary software like that useful for an overall idea on the design process for a game, or am I simply biting off way more than I can chew? Should I look to join a modding team who needs simple coding work done? Essentially I'd like to focus more on programming than anything else, though would like to have knowledge in more than one area. Coming from an engineering background now I know how much tradesmen hate engineers who don't understand why making a square plug is a lot more of a pain in the rear end than just drilling out a round one, I'd like to take that same approach to programming.

Would my best path of action be to pick up some Python documentation, start learning the basics on the language with the attempt to try and make a simple text based game within a certain time frame? (6 months or so given I will have to start learning the basics first). Then attempt (if at all possible) to port it to something with a simple 2D based game world. Rather than being like "HOMG CAN'T WAIT TO MAKE THA NEXT WOW", which seems to be common on these boards.

As I am really interested the thought of having to wait till probably second year (so 2014) before I can start sinking my teeth into programming is a little disheartening, however I don't want to teach myself bad coding practice.

Share this post


Link to post
Share on other sites
I think you should jump right in and learn what you can on your own. You will probably develop bad habits, but that way a lot of the advice that you'll get later on will make a lot more sense, because you've seen some of the bad consequences of not following the advice. Bad habits are not all that hard to correct in this field.

Make sure at some point you try to program with other people. It will force you to read other people's code and it will make you appreciate clear code, which is really important. Beyond a certain problem size, programming is primarily a problem of organizing a team people to solve problems, and you should learn that aspect of things.

Share this post


Link to post
Share on other sites
I agree 100% with alvaro.

I am entirely self-taught; it's more work in a sense because you spend a lot of time unlearning all the stupid stuff you taught yourself, but it's much more valuable at the same time than just swallowing the "best practices" advice without truly [i]understanding[/i] why that advice is good.

In short: if you're the kind of person who is willing to constantly be wrong and learn from it, and who doesn't mind expending a lot of effort to master something, do it.

Otherwise... best stick to the lectures and textbooks :-)

Share this post


Link to post
Share on other sites
Ok thanks guys was just worried about learning bad practices in an environment that was build around a lot of structure, but if that is the case might dust off the old Python install (I've fiddled around with it before) and go from there I guess.

Share this post


Link to post
Share on other sites
[quote name='Tom Sloper' timestamp='1311085935' post='4837400']
Both. Self-teaching can't cover all the bases. You should get an education from professional teachers, AND self-teach.
[/quote]

Actually, I am an almost purely self-taught programmer and I don't feel like I have any big gaps in my education. I did however receive a lot of formal training in Math, which allows me to understand some parts that would be tricky to learn on your own otherwise (e.g., complexity theory, the connection between formal languages and automata...).

Share this post


Link to post
Share on other sites
Both and neither, not everybody has the discipline or capacity to be fully self taught, and even if you are, as soon as you start interacting with other developers and sharing work you'll realize a lot of what you taught yourself is wrong or you will have a massive ego crash in the lines of "everyone else is wrong because they do things differently than me", and somebody that relies on other people to teach them everything will never be more than a coding monkey.

As for formal education in computer science, I often find that not presenting code until far into the second or even third year is a very common cause of desertion, and there is no reason why you cant present students with some basic coding exercises after they have grasped the basics of logic and discrete mathematics. You should try learning programming on your own while studying computer science, even if it is just to keep the entusiasm for what you changed careers in the first place.

I would suggest finding a good online programming course to teach you the basics of programming, I recommend starting with C# or C++ (c++ can be too low level for raw beginners, but its not impossible to learn and once you learned that you can easily learn other languages). Once you have the basics of logic and programming I would recommend using an SDK that abstracts you from both DirectX and OpenGL, and lets you go to the game logic, I think you'll learn a lot there and keep a low frustration level.

If you are interested in the low level stuff, core engine functionalities and so on, you can move on to that after doing a few simple games on an sdk, good exercises are a Tetris, a Snake, a Pacman and a Mario style plaformer, in that order, and you should be able to pull all of them off in six months if you start with a solid sdk, personally I use XNA. Even if you are going after the low level stuff, I think its always a good idea to have experimented first hand the different possible needs of the high level implementations.

Share this post


Link to post
Share on other sites
When learning something new I generally prefer both (I don't always [i]do[/i] it, mind). You can go a [i]long[/i] way with self-teaching, but there is also a risk that you might skip over or skim through things you don't quite get, or focus primarily on a particular area of interest at the expense of other important stuff. If you know that you've got the self-discipline to avoid that, then go for it, but on balance I think it's useful to have something more formal to fill in the gaps, and someone who's been there/done that to ask questions of and get answers from. On the other hand saying "formal teaching only" means that your knowledge is going to be restricted to what's on the curriculum; unless you're willing to stretch out beyond that on your own you're probably going to top out at a "quite average" level of understanding.

Share this post


Link to post
Share on other sites
I just realized that my previous post was simplistic and somewhat cocky. A good formal education in CS would be great to have, it's just that I didn't have access to one, and it turned out to not be that big a deal. I should mention that I learned a lot from working with others and some things from local gurus. I should also mention that the process took about 20 years. :) Perhaps the combination of self-teaching and formal education can make you a proficient programmer faster.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this