|
I've been working at a game development studio for a little over a year now as a QA tester with the goal of becoming a programmer eventually. With the new year, one of my resolutions is to do as much as I reasonably can to meet that goal. Which got me thinking "I go to work every day with people that obviously have the skills required to get the job I want." I figured why not just ask one of them to tutor me, perhaps to make some extra cash on the side as I would be willing to pay. I'm pretty good friends with a bunch of the programmers already, so I'd imagine it wouldn't be a big deal to ask.
I've been giving this a lot of thought though as it seems like an unorthodox approach and perhaps something that I don't hear being done elsewhere for a reason. Can anyone here think up some reasons why this is a bad idea?
EDIT: Sorry I didn't give more information, didn't cross my mind for some reason.
I'm reasonably well versed in programming already, I've got a 4 year Computer Science degree and I've recently been programming small tools for people around the office. I've been getting quite a few requests these days after it became well known that I'm willing to do these little apps for people to automate various repetitive tasks for them. So all in all I'd like to say I'm not a complete programming noob. 
The reason I'm considering asking one of the programmers to tutor me is because I want to take my skills to the next level and I feel like I could vastly accelerate my learning if I had a tutor guiding me in addition to the programming I do on my own.
Seeing all the recent Starcraft coaching threads got me thinking about it in those terms too. I could get better at Starcraft by reading TL/Liquipedia religiously and mass gaming ICC. However, couldn't I really take my skills to the next level faster and more efficiently if I had Inc tutor me? Or in my case, I have access to the equivalent of pros so imagine having Flash tutor you or something.
EDIT2: As I think about this more, any suggestions on what specifically to ask for would be helpful. I think I have a pretty good idea what I would request in terms of tutoring but I'd like to hear what you guys think as well.
   
|
Wait. You need TUTORs to TEACH you how to program? Are you for rela?
|
On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that?
|
you dont really gave a lot of info about what you did so far to achieve your dream. So a little info on your experience in programming so far would help to give you some advice.
|
find a book to learn the basics
then find a more advanced book.
if there's anything you don't understand, that's when you ask someone else.
|
*shrugs*
On one hand, people like making bank, and at a game dev studio they're gonna be super busy. OTOH, some people really like helping/teaching (I'm one of those), so you might get lucky.
A lot of programming can be learned solo. I'm not sure sure where most of my knowledge comes from, I learned it all so haphazardly.
I will say this: the best way to learn programming is to program things. Sounds silly, but it's true. If you're serious, pick a project, and try to make it happen. Develop a space invaders clone, or whatever. Then, instead of thinking of a 'tutor', think of someone to help you past roadblocks. This could be a real person, could be stack overflow, whatever. You're gonna develop some pretty terrible software your first time around. Yet, you can make it work, and you'll learn so much that your second large project will be 10x better. Stuff like this gives you something to show companies; people who have that kind of 'learn on your own' dedication are greatly desired.
|
On January 08 2010 11:27 Cloud wrote:Show nested quote +On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks.
|
On January 08 2010 11:28 dhe95 wrote: find a book to learn the basics
then find a more advanced book.
if there's anything you don't understand, that's when you ask someone else. I think he learnt "the basic" already. To OP: situation you've described is a bit vague. How is your programming skill right now? Maybe you should write some code on your own and ask the programmers you know for some input. The tutor thing can come later.
|
yoden pretty much hit this one right out of the park. I learned without books or classes; only with the use of tinkering and Googling. It sounds inefficient time/speed-wise, but it is probably one of the better ways to learn.
He's also right about people issue. I know that I'd rather find more ways to make more money rather than help a friend all the time. Sure I'd help them here and there and point them in the right direction, but I wouldn't go out of my way to spend hours a day or week to tutor them.
|
On January 08 2010 11:30 illu wrote:Show nested quote +On January 08 2010 11:27 Cloud wrote:On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks. I always knew that that computing science career was a fraud.
|
Learn the basics from a book, then use google for the rest.
|
The best thing you can do is start a small project, think of anything and start your own project. Once you are done you can start adding enhancements, refactor code, etc. Also I recommend you join an open source project (apache commons for example if you know Java). You will get code review, etc all for free .
|
|
programming itself isnt too hard to pickup yourself, but there is tons of books out there that will teach you bad programming( meaning bad errorhandling/possible overflows/memory and processor efficiency/ etc ).
But selfteaching also gives you a lot of limits. I also knew my way around java and c to get a basic program to do what i wanted before i entered university, But once you get out of basic text/math operations, you will see that there is tons of math involved that you probably can not teach yourself.
I dont know how universities work in the US, but for example here, you can register yourself as a "guest auditor" ( i dont know if this expression exists in english on the fly translation and just take part in a specific course. So taking some computer science courses like that might be more useful then asking some randomperson from your job to tutor you.
|
On January 08 2010 11:35 Cloud wrote:Show nested quote +On January 08 2010 11:30 illu wrote:On January 08 2010 11:27 Cloud wrote:On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks. I always knew that that computing science career was a fraud.
A degree in computer science is not a fraud. There are many open questions in theoretical computer science; while in applied computer science there are still many powerful algorithms without implementations.
|
Kennigit
Canada19447 Posts
I think LiminaMadness had the best idea. I would highly suggest the open course videos from MIT/Princeton/Yale. Just search on youtube and you will find all the courses completely open sources (full lectures etc).
|
Sorry I didn't give more information, didn't cross my mind for some reason.
I'm reasonably well versed in programming already, I've got a 4 year Computer Science degree and I've recently been programming small tools for people around the office. I've been getting quite a few requests these days after it became well known that I'm willing to do these little apps for people to automate various repetitive tasks for them. So all in all I'd like to say I'm not a complete programming noob. 
The reason I'm considering asking one of the programmers to tutor me is because I want to take my skills to the next level and I feel like I could vastly accelerate my learning if I had a tutor guiding me in addition to the programming I do on my own.
Seeing all the recent Starcraft coaching threads got me thinking about it in those terms too. I could get better at Starcraft by reading TL/Liquipedia religiously and mass gaming ICC. However, couldn't I really take my skills to the next level faster and more efficiently if I had Inc tutor me? Or in my case, I have access to the equivalent of pros so imagine having Flash tutor you or something.
|
On January 08 2010 11:56 Kennigit wrote: I think LiminaMadness had the best idea. I would highly suggest the open course videos from MIT/Princeton/Yale. Just search on youtube and you will find all the courses completely open sources (full lectures etc). I knew about MIT's open courseware, didn't know that Princeton and Yale had that as well. Thanks for the head's up.
|
Belgium9945 Posts
Second this. Really nice book that's become a standard in the industry.
|
wut u have 4 year cs and need a tutor? and i thought i was going to come out with my cs degree knowing shit...
|
On January 08 2010 11:30 illu wrote:Show nested quote +On January 08 2010 11:27 Cloud wrote:On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks. But the way most self-taught programmers code is comparable to using a chopstick as a spear. Sure it works a lot of the time, but everyone else who sees it is gonna wonder what the fuck you were thinking.
|
On January 08 2010 11:30 illu wrote:Show nested quote +On January 08 2010 11:27 Cloud wrote:On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks.
It's easy to write code that works.
It's hard to write code that 1) is flexible so that years down the line unforeseen situations can be easily handled 2) is modular so that thousands of people can concurrently work on it 3) maintains consistent hierarchy and naming conventions so that it is easy to understand.
|
On January 08 2010 12:22 ulszz wrote: wut u have 4 year cs and need a tutor? and i thought i was going to come out with my cs degree knowing shit... I was foolish and wasn't able to secure an internship before graduation which made it awfully hard to get an actual programming job right out of college hence why I'm working as a tester right now to get my foot in the door. I'm paying for that stupidity now but I've resolved to redouble my efforts this year.
Just don't be like me, make sure you get that experience via an internship before you graduate. Or at least build up a decent personal portfolio you can talk about and pull code samples and such from. Thinking that this diploma alone would guarantee me a job was so utterly idiotic in hindsight. Makes me wish I could go back in time and punch myself.
Anyway, back to looking towards the future...
|
Illu... oh man. Rofl. Disappointed. Your remarks are the true symbolism of a terrible, terrible programmer.
Or you find chopsticks insanely difficult to use.
Anyway the point is, I think it's definitely worth paying money to have good programmers teaching you how to program. You'll develop way less ferral habits, and you'll have someone else's brain to bounce of asap rather than trawling community sites for advice which might be the advice of someone like yourself. And we don't want that.
|
On January 08 2010 13:16 prOxi.swAMi wrote: You'll develop way less ferral habits, and you'll have someone else's brain to bounce of asap rather than trawling community sites for advice which might be the advice of someone like yourself. And we don't want that. This is pretty much what I was thinking. Steering away from bad habits and such.
As I think about this more, any suggestions on what specifically to ask for would be helpful. I think I have a pretty good idea what I would request in terms of tutoring but I'd like to hear what you guys think as well.
|
On January 08 2010 11:30 illu wrote:Show nested quote +On January 08 2010 11:27 Cloud wrote:On January 08 2010 11:25 illu wrote: Wait. You need TUTORs to TEACH you how to program? Are you for rela? Uh what's so wrong about that? I just don't think it is worth his money to hire someone to teach it to him: writing computer programs is easier than learning how to use chopsticks.
Please post more terribly. I have tried both activities and using chopsticks is far easier.
|
Bill307
Canada9103 Posts
What exactly do you mean by "learning how to program"? Obviously syntax isn't an issue, and I'm assuming your schooling has taught you a number of useful algorithms and how to analyse efficiency and such.
So I'm guessing you are wondering how to write good code.
Personally, I highly doubt the usefulness of being tutored on writing good code.
IMO, the most effective way to learn this skill is to write your own programs, then try to modify / augment them a month or two later. There is nothing more memorable than seeing and struggling with your own past mistakes, and viewing your own code through the eyes of someone who had no idea what you were thinking when you wrote it (not touching your code for a month will generally have this effect).
Another crucial experience is to write one very large program over the course of many months to a year, as opposed to writing many small ones. For one thing, you will inevitably find yourself coming back to pieces of code that you've long-forgotten and needing to improve it, so it takes care of the above. But in addition, there are skills you will learn from writing a large program that you will never learn from writing small ones. Such as, how to organize your code and data so that you can: - easily find a method or piece of data after you've forgotten where it is - wrap your mind around all aspects of the increasingly-complex program without going insane - etc.
For instance, you might try writing a moderately-complex game, and experience the following:
1. You get bogged-down from the growing number of relationships and amount of communication between different game objects.
2. You make your code easier to comprehend by using event senders and listeners for communication between objects, as opposed to having unique methods for every interaction between objects.
3. You start encountering the drawbacks and caveats of event handlers. E.g. maybe you thought, if object B is listening to object A, then object B doesn't need to keep track of object A, but then object B is destroyed and suddenly you get an error because A tried to send an event to B. So now B and A have to know about each other, so that B can tell A when it is being destroyed. But if B simply called a method from A, then A wouldn't have to know about B and the whole interaction would've been much simpler. Or maybe you have A check if B is still active before sending it an event, but now it becomes much harder to pool Bs for reuse, and you might find yourself with a veritable memory leak because the event just doesn't get triggered 99% of the time. In any case, you find a simple call from B to A would have been a much better option in this situation.
4. You gradually learn the kinds of situations where events are useful, and the kinds where they are more trouble than they're worth, and you establish a healthy balance between the two in your game.
Now imagine you learn several dozen things about programming in this way. If you were simply told these things by someone else, and never got to experience them first-hand, how thoroughly would you actually understand those lessons, and how many would you remember two years from now when you end up needing them?
|
GOOD LUCK computer science isn't easy. Getting stuff to compile is so annoying.
|
On January 09 2010 04:47 Bill307 wrote:+ Show Spoiler + What exactly do you mean by "learning how to program"? Obviously syntax isn't an issue, and I'm assuming your schooling has taught you a number of useful algorithms and how to analyse efficiency and such.
So I'm guessing you are wondering how to write good code.
Personally, I highly doubt the usefulness of being tutored on writing good code.
IMO, the most effective way to learn this skill is to write your own programs, then try to modify / augment them a month or two later. There is nothing more memorable than seeing and struggling with your own past mistakes, and viewing your own code through the eyes of someone who had no idea what you were thinking when you wrote it (not touching your code for a month will generally have this effect).
Another crucial experience is to write one very large program over the course of many months to a year, as opposed to writing many small ones. For one thing, you will inevitably find yourself coming back to pieces of code that you've long-forgotten and needing to improve it, so it takes care of the above. But in addition, there are skills you will learn from writing a large program that you will never learn from writing small ones. Such as, how to organize your code and data so that you can: - easily find a method or piece of data after you've forgotten where it is - wrap your mind around all aspects of the increasingly-complex program without going insane - etc.
For instance, you might try writing a moderately-complex game, and experience the following:
1. You get bogged-down from the growing number of relationships and amount of communication between different game objects.
2. You make your code easier to comprehend by using event senders and listeners for communication between objects, as opposed to having unique methods for every interaction between objects.
3. You start encountering the drawbacks and caveats of event handlers. E.g. maybe you thought, if object B is listening to object A, then object B doesn't need to keep track of object A, but then object B is destroyed and suddenly you get an error because A tried to send an event to B. So now B and A have to know about each other, so that B can tell A when it is being destroyed. But if B simply called a method from A, then A wouldn't have to know about B and the whole interaction would've been much simpler. Or maybe you have A check if B is still active before sending it an event, but now it becomes much harder to pool Bs for reuse, and you might find yourself with a veritable memory leak because the event just doesn't get triggered 99% of the time. In any case, you find a simple call from B to A would have been a much better option in this situation.
4. You gradually learn the kinds of situations where events are useful, and the kinds where they are more trouble than they're worth, and you establish a healthy balance between the two in your game.
Now imagine you learn several dozen things about programming in this way. If you were simply told these things by someone else, and never got to experience them first-hand, how thoroughly would you actually understand those lessons, and how many would you remember two years from now when you end up needing them?
Thanks for the response, I can definitely see what you're getting at. I without a doubt remember the lessons I learned the hard way through weeks and weeks of toiling better than the stuff I was simply told in class. I guess I was thinking about the time that I've been sinking into that kind of approach. I retain things better but it takes a lot longer obviously. Perhaps I'm just getting impatient with myself...
I really should start a larger project, and I've been meaning to for awhile now that you remind me.
So do you really feel there is no way to better take advantage of my proximity to a large collection of programmers? I understand your points but I can't help feeling that I'm squandering an opportunity to accelerate my learning.
|
|
|
|