Disscusion on learning programing

Hey everyone, so first of all this is the first time I am doing any kind of programing, and so far I have gotten through the course well. However I am not independent. So my question for discussion is: how does learn programing well? what steps does one do? what excercises has helped people develop? How does one practise? what motivates people?

best regards, Carl

1 Like

As in all things, practice practice practice.

I know that doesn’t sound very helpful, but it’s the only way to learn.

Take the block breaker section for example. Once you’ve completed it, do it again, this time doing as much as you can on your own without watching the videos.

Or the Text101 game. Once you’ve finished it, think of how easy it would be to make it into a trivia game like Who Wants to be a millionaire.

So start it over from scratch, without using the videos as much as possible, and this time, instead of describing a room, and giving them action choices, ask them a question and give them 3 wrong answers and 1 right answer, and only let them proceed if they get it right.

Then think of ways to improve it. Maybe look into storing your questions (and the 4 possible answers) in an array, and randomly choosing a question, and displaying the answers in a random order.

Or give them lifelines. Or a timer, etc.

Thats how you learn. You do things over and over again until you’ve gotten the hang of them, then you take what you know and do something different with it.

The course videos are great, and you will learn a lot from them, but you can’t solely rely on them to learn to be a good programmer.
Go view other tutorials on youtube. check out books on the subject, packtpub.com/packt/offers/free-learning offers a free book every day. They vary, so its hit and miss if you’re just looking to learn C# or Unity. Check your local Library too!
Try https://www.codecademy.com/ they don’t offer C#, but go practice in Javascript, or Python, or PHP. It will help you learn how code functions, and the core concepts behind programming, which can be applied to any modern language.

4 Likes

I would absolutely concur with this 100%. For me I find sometimes turning the pages of a book etc helps me produce something, but, especially in the case of some Microsoft books I’ve been through in the past for work, it doesn’t feel very rewarding. The courses (and Ben’s book) here are completely different, creating something that is very interactive is a huge benefit I think because it makes you want to naturally do more with it.

Like Chris suggests above, after each game on the course, look for enhancements you may want to make. Keep a list of them, some may be pretty straight forward to do straight away because of the things you have already learnt on the course, others may require you to try things, to ask for help, to look for some examples online, but gradually keep working through your list.

An example of this for myself was one of the games in Ben’s book, it’s an infinite runner style game, you are against the clock, there are some simple shapes whizzing towards you which you have to avoid or collect (for more time) etc. When I had finished it I thought… I need more obstacles! That lead me to think, I want patterned obstacles, e.g. a whole line of them, so the player couldn’t just dodge them but had to jump over them. That lead to maybe star or circle shape patterns of obstacles. The power ups were simply for more time, but that lead to me thinking about having a power up that would speed you up, or slow you down, or make you invincible etc etc. These all felt like items I could achieve myself. Then I wanted to have “gaps” in the track, that lead to me thinking, be nice if the track wasn’t just straight but had some corners in it, or perhaps some dips and so on. These latter ideas were the “well I’m not sure how to do that yet” section… For me, the motivation comes from thinking “what can I do next”, or “how can I make this better/more fun”, but I recognise I may not have all of the answers I need immediately so try to break things down into smaller, bite size pieces which are manageable, meaning I can feel good as I work through each, rather than trying to battle an enormous monster and feeling terrible because I am running out of lives! :slight_smile:

When you have got to the end, compare what you have created compared to the original on the course, I bet you will be surprised at how much you have achieved. Never be afraid to ask here for help either. The community here is fantastic and so diverse with people from all over the world all at different stages on the course and all with varying levels of experience, I believe you will either find someone that can help you, or people that are willing to find out with you, and by sharing the questions and working through them, and sharing the solutions, it benefits everyone in the community.

2 Likes

Thank you to both of you for great replies, the reason I asked is because I have a lot of experience with language learning, and I thought that programing and language learning would be different, since at least what I have done is to watch foreign language TV. AKA passive learning, and programing is active learning. I am planing to take a course at university in basic programing this fall. One last question that I have personally is when it comes to the logic of programing, and that is if people have a certain pattern of thinking to understand it, as in what techniques does people use to understand the sometimes somewhat abstract logic of programing.

1 Like

He @Carl_Christophe_Loui, no problem :slight_smile: regarding the above question, wow, that’s quite deep!

Personally, when I first started, not with Unity but generally from a developer perspective, I don’t think I focused on a specific technique for understanding. That may just be characteristic approach, or, it may be perhaps because I didn’t go on to higher education, where maybe a technique of learning is also learnt.

My approach was, and still is, fairly much trial and error I suppose… and if you are picturing a gorilla bashing a keyboard with his palms at the moment you are forgiven! :slight_smile: seriously though, it was all very incremental steps. I actually started with ASP for web development I suppose (ignoring things like BASIC way back when I was a kid), so I would have started out wanting to try and achieve something and typically that would have been formed around a question, “how can I make this do that?” for example… immediately some IF / THEN logic would have come up. Syntax wise I would have most likely used a book or hit the many forums/websites for examples and gradually pieced things together.

Over time I think that that style (for want of a better word) has grown, so a lot of the basics are fairly well known. Even if I am not fluent in a specific programming language I would suspect I could look at it and think, “ok, yeah, I get the idea of what this bit is doing”, and then I would be drawn perhaps to specific keywords/methods that I wasn’t sure about, so I would be researching those maybe online.

When I started with Unity I came primarily from a VB.Net background, so C# wasn’t really a big issue for me, it is primarily syntax differences. The knowledge/understanding of OO, services, layers and so on has just been home grown. At work, developing web based applications I tended to try and write my code with as much re-usability as possible, so I tended to focus more on the architecture of the application, writing code libraries which could be easily extended and re-used for other applications the team would create. It was a learning process. Sometimes it worked well, sometimes it didn’t. I would review, work it out, resolve it and move forward, next time knowing a little bit more.

With tools like Visual Studio, being able to step through your code for debugging is fantastic, and that really helps with learning too as you can visualise very easily which methods are being called, which values are set and so on.

Hope this is of help although I’m not sure I have directly answered your question. :slight_smile:

2 Likes

Hi Carl,

With regards to understanding the logic of programming, I find no better tool than a pen/pencil and some paper. Drawing a flowchart helps me understand what a particular function needs to do and what it will need to interact with or what dependencies it has.

There are even alot of programming flowchart makers that will help you in doing so, if you prefer to work on a computer instead of the oldschool pen and paper method.

If you do a flowchat for each function you come across that doesn’t make sense to you, soon you will develop a pattern of thinking that let’s you look at any function and have a good idea of what it takes in or spits out.

I’d also advise researching how the hardware we’re manipulating through our programming, actually works, eg. how a processor adds two numbers together, or how memory is stored and acessed. Learning a little of the low level stuff will help you understand the more abstract high level programming a lot better. (with low level meaning low level of abstraction here, as oppose to entry level.)

Particularly if you’re like me and like to know “but why does a do b and how does it do it”.

2 Likes

Another good thing is to have community resources where you can ask questions if you get stuck. I know having classmates I could turn to and look over my code when I got stuck was invaluable to me. Another technique that is really useful is partner programming - how it works is one of you writes the actual code while the partner (sometimes called pilot and co-pilot) watches and offers feedback, and then you switch. Fortunately, you have a great community right here, so it’s a matter of finding someone to partner with whose goals you align on.

Which languages are you learning to program in? Are you using C# as per the Unity course, or C++ with the Blender course, or something else entirely?

2 Likes

I am learning C# sharp in the unity course, in the fall I will also take a course in java script at university.

To everyone who has replied, thank you for your responses!

I’d actually recommend starting with Scratch. This is a tool developed by MIT to teach programming concepts to kids.

It is actually a very good tool for adult learning as well, as it teaches the core concepts of programming, plus some graphical concepts relevant to game dev, in a visual way:

  • variables
  • events
  • x/y coordinates
  • if/then/else logic
  • sprite concepts
  • loops
  • boolean logic

I’ve actually seen some really complex and creative things built in Scratch, and you can download others’ projects to see how they’ve built them. Give it a try!

1 Like

I was going to post a similar question until a pop up showed me this post. This has been helpful and I thank you for showing and talking to people like me who don’t quite know how to program yet! Thank you!

2 Likes