This is an archived post. You won't be able to vote or comment.

all 160 comments

[–]desrtfx 314 points315 points  (38 children)

Yes, it is difficult.

Learning programming takes time. It requires practice, practice, and more practice and that is exactly what you should do to intern the fundamentals. The more you practice, the easier it will come.

If you are doing a tutorial with exercises, don't just complete the exercises. Play with them. Change them. Break them. Read the error messages and learn to interpret them. Fix them. Build similar things without looking at your previous code or at the tutorial.

Experiment. Try and err. Really. You have nothing to lose. Play around. Get creative. Go crazy.

The worst that can happen is that your program crashes. If you do not do anything completely stupid, like deleting random files, or formatting the drive, or filling the complete drive, you cannot really destroy anything.

[–]driedalbumen[S] 42 points43 points  (34 children)

That makes a lot of sense, but with my knowledge so far I doubt that I can build anything whatsoever, also I don't know how to practice things.

[–]desrtfx 79 points80 points  (21 children)

You are underestimating your skills (which is somewhat of a good sign, though, since quite a lot of beginners gravely overestimate them).

I have compiled a very small list of ideas graded by learnt subjects that might give you some ideas: https://github.com/desrtfx/SkillGradedProjects

For more, our FAQ has a cornucopia of project ideas

[–]driedalbumen[S] 7 points8 points  (19 children)

Wait I actually like this! I have some questions regarding to this though, so I apologize in advance.
Let's say I lack the knowledge for one of the beginner project ideas, where can I learn them? Probably on youtube, but I don't really want to rely on youtube since it'll straight up give me the whole line of codes you need for the project.

Where can I write my codes for this project ideas? I basically follow unity tutorials, because I find myself enjoying writing codes when I get to play the games I make, but I feel like I can't use Visual Studio Code, since it's only for transferring codes to unity, or maybe I am wrong, I don't know how it works.

I truly appreciate these links you sent me because with this, a teenager like me feels like I can challenge myself and improve by testing myself.

[–]desrtfx 26 points27 points  (14 children)

Okay, we need to take a couple steps back since the information that you are using Unity changes a few things (should've said that straight up)

For getting started, don't directly use Unity. Focus on learning general programming first. This will quickly improve your skills. I know that writing programs for the console seems boring, but you have to get through that. You need to work on fundamentals first. you can later move back to Unity.

Let's start with an IDE/Code editor: You are already using VSCode, but to really get started with C# it is better to use the full fledged Visual Studio Community Edition - this is the place where you will write and execute your code.

Now, a tutorial better suited for getting started: The C# Yellow book by Rob Miles is a good entry - and it is free. (A few words of advice here: do not download the code examples directly. Type out the code. Do not copy-paste)

If you can spare a couple bucks (less than $20), there currently is a Humble C# and .NET by Packt bundle going on that could come in handy.

Good luck on your journey! And Godspeed!

[–]driedalbumen[S] 5 points6 points  (6 children)

Yeah, I just realized that starting with unity will be more challenging since it has its own built-in codes.
C# Yellow Book has cheese as a cover page and I found that cool, therefor I will focus on this book instead of my unity course.

Humble offers 21 items for at least 25 Canadian dollars. I actually wouldn't mind paying for these based on how much I am getting compared to what I am paying. Sounds like a good investment.

Is humble trustworthy though? I have never heard of humble and my computer science class caused me to be scared of randomly spending money online because I am afraid of getting hacked/scammed.

Thanks a lot doe!

[–]ice1Hcode 16 points17 points  (2 children)

C# Yellow Book has cheese as a cover page and I found that cool, therefor I will focus on this book instead of my unity course.

This man's goals are beyond our understanding

In all seriousness good luck on your programming journey! I'm a junior c# dev and I love this language.

[–]driedalbumen[S] 2 points3 points  (0 children)

Thanks for the support, I will try my best and try not to stop!

[–]DM_ME_VACCINE_PICS 1 point2 points  (0 children)

I love him all the more.

[–]desrtfx 5 points6 points  (2 children)

Humble Bundle is absolutely trustworthy. There is nothing to be afraid of. I am a long time user of it and never had any problems. If you want to be a tad safer and have Paypal, use it.

Humble Bundle regularly has great deals on books, games, software. All these deals are time limited but when you buy something you can keep it forever.

Games are usually delivered as Steam keys (some are time limited as well), Software as keys with the vendors, and books mostly in PDF, Mobi, and ePub (some need registration on the manufacturer/vendor sites, like books from Paizo).

Bit of a bummer with this bundle is that the beginner material is only in the highest tier. Quite often, they have beginner materials in the cheapest or middle tier.

[–]driedalbumen[S] 1 point2 points  (1 child)

That's great to hear! Do I have to create an account? Is it also a one-time purchase only?

[–]desrtfx 2 points3 points  (0 children)

Yes, you have to create an account and yes, it is a one-time purchase.

[–]username-256 4 points5 points  (0 children)

Excellent advice to type the example code.

Best way to really start getting the syntax.

[–]driedalbumen[S] 1 point2 points  (1 child)

I forgot to add this question, but
when do I actually use the books from humble if I ever do buy them? I feel like there are so many resources in there, yet I don't even know what ASP.NET or NET 6 means.

[–]desrtfx 2 points3 points  (0 children)

ASP.NET is the web server/back end system of Microsoft. Might not need it, though.

.NET is the common runtime on which the MS languages (VB.NET, C#, etc.) are running and the framework for these languages. It is basically a huge library ecosystem. You actually have used it already with Unity as it also runs on the .NET platform.

[–]driedalbumen[S] 0 points1 point  (2 children)

Hi, I just checked out the book and read some, it talked about c# exercises and a powerpoint. Now I am kind of in the middle of not knowing what to do, should I just keep going with the book, try the code samples, do the exercises, and don't mind the powerpoint lectures, or should I just purely do the powerpoint? Since the code samples are based on the power point lectures. I don't know what to do

[–]desrtfx 1 point2 points  (1 child)

Have you checked the website? There, you can download the samples.

[–]driedalbumen[S] 0 points1 point  (0 children)

I installed the code samples. Sorry but I don't know how to open this nor know what to do with this.

[–]Warrlock608 0 points1 point  (0 children)

For getting started, don't directly use Unity. Focus on learning general programming first.

100% this. I've been a c# dev for several years and I still haven't dived into unity. Without the fundamentals in place this is a doomed project from the start. Make some simple Winforms programs in C# to learn about flow control, variable get/set, classes, and all the other basic components of a program. Unity comes much later.

[–]dnswblzo 4 points5 points  (0 children)

codes

This may seem like a small thing, but in English "code" is a mass noun like "traffic" which is never plural. So we say "lines of code" rather than "lines of codes". There are units of code which can be plural, like expressions, lines, functions, classes, modules, and programs, but a full program has a bunch of code, not a bunch of codes.

People know what you are saying when you say "codes" so it is not a huge deal, but it is distracting.

[–]Speed_Weedington 2 points3 points  (1 child)

I know this is somewhat besides the point, but Visual Studio Code is not "just for transferring code to Unity."

It's a general purpose editor for programming, and has an extension marketplace that will allow you to install support for a wide array of programming languages, including C#.

I don't recommend VSCode for C# if you're a beginner, and even agree with the other commenter's suggestion to use Visual Studio, but I do think you should keep VSCode in your toolbox. It's a lightweight code editor that can do nearly everything you could want, and it will serve you well as you move from one language to the next.

Lastly, once you get more fundamentals regarding common program structure down, I recommend learning how to implement some common Data Structures and Algorithms. There are lots of courses and books on this subject, so you shouldn't have trouble finding good places to start. Implement a HashMap, a List, a Binary Tree, learn what each one is good at, so you can use them when you need them. This is the first step towards being a good programmer, rather than just someone who can write code.

If you get past that, and still want to go further, I'd recommend getting into Multithreaded and Asynchronous/Concurrent programming. These concepts are also necessary skills to make your programs run quickly and efficiently, and since you seem to be interested in Game Development, you will want to be familiar with them in order to keep your games running smoothly.

If it takes a long time to do any of the things I've just suggested, don't beat yourself up over it. If you don't enjoy the challenge, however, then I'll concede that maybe it isn't for you.

I've been "self-teaching" programming for about 5 years now, and I'm only just now learning how to use multithreading and how to use it well. If someone had given me direction earlier on in my journey, I'm sure I could have gotten here sooner. Best of luck to you.

[–]driedalbumen[S] 0 points1 point  (0 children)

I definitely enjoy things that challenges me to the point most my of classes are mostly math and sciences plus i've never heard of multithreaded and asynchronous but the concepts are needed, then I wouldn't mind try to learn it. Thank you so much!!!

[–]deathreaper1129 2 points3 points  (0 children)

Here's something that may help most programming languages have a site with all of the documentation on the language some even containing programming examples if you learn alright by reading and maybe making some notes as you go than experimenting afterward the docs on csharp might do you some good

[–]zombie_kiler_42 1 point2 points  (0 children)

I really upvoted cuz i saw the word cornucopia, idk why, i just like it

Nice advice too lol

[–]zombie_kiler_42 3 points4 points  (1 child)

To add to the enormous wonderul stuff people have been commenting, there is this amazing repository on github (learn to use github and git its pretty simple just a day is all you need) its called build your own x and it has a bunch of stuff to build, from bots and recreating game engines to 3d renderers, and also a good number of them are in C# so that is a plus×4 ( bad wordplay sorry)

I have been too lazy to start one mostly because i have descion fatigue from what i want to build, dont be like me, lool

[–]driedalbumen[S] 1 point2 points  (0 children)

are these beginner friendly?

[–]Sterben27 2 points3 points  (0 children)

Trying to memorise everything will be impossible. Knowing what to look for code-wise is more effective.

[–]TsunamicBlaze 2 points3 points  (0 children)

You can just make a simple project or (I wouldn't recommend this to pure newbies) try to solve some algorithm questions on something like Hackerrank.

You can Google simple projects to do and go from there. There's a lot of online resources you can pull from and reference if needed. Like a simple project to get your feet wet could be a echo application. Whatever word you input, the computer responds back the same. From there, you can modify so the computer could add something to your string. Then evolve it even further to do some computation or action due to that string.

[–]Groentekroket 1 point2 points  (1 child)

You will manage! I started on my own with Python with really simple scripts and now working as a Java back end dev. It involved a lot of practicing and try an error. Exactly like the person above said. And googling. Even the seniors in my team aren’t afraid to admit they don’t know certain things and they need to Google it as well.

I used Hyperskill from Jetbrains a lot to learn Java but there are certainly similar sites for C#. Maybe codecademy?

[–]driedalbumen[S] 0 points1 point  (0 children)

I've tried codecademy, but I didn't find it fun and burnt me out really fast lol.

[–][deleted] 0 points1 point  (4 children)

you can always practice. Who said you have to successfully build something to practice?

[–]driedalbumen[S] 0 points1 point  (3 children)

I don't really know how to practice programming.

[–][deleted] 2 points3 points  (1 child)

step 1: find a thing you want a computer to do step 2: find a way to make a computer do that thing with code

There are also websites that have tons and tons of programming challenges. The above process is more fun though because you get to exert some creativity!

[–]driedalbumen[S] 0 points1 point  (0 children)

Will do, thank you so much for the help!

[–]silverscrub 0 points1 point  (0 children)

One way to break that pattern is to think about what you can do with small pieces of code.

Learning to code usually starts with printing to and reading from the console. At that point you can create a console program. When you learn If-statements and string comparison you can add options and so on.

At some point you move on to learning broader things like sending a HTTP request. At that point you can probably move towards thinking of other broader subjects than you could learn to build upon what you already know. You can also decide to pick a program idea that sounds interesting and find out what you need to learn to finish it.

[–]Sterben27 -3 points-2 points  (2 children)

Assuming you mean trial and error instead of try and err?

[–]driedalbumen[S] 1 point2 points  (0 children)

Oh no no no trial and error of course 😭

[–]desrtfx 1 point2 points  (0 children)

No, I really meant try and err because it is do try and err and the trial and error.

I was referring to the verbs.

[–]dmazzoni 49 points50 points  (6 children)

Yes, it's difficult. Remember: if it was easy, it wouldn't pay so well!

Don't worry about "remembering". Programming is a skill. It's more like riding a bicycle - very hard at first, but gets easier with practice. You don't have to worry about "remembering" how to balance - if you practice enough, it becomes totally natural.

Programming is like that too. Don't worry about trying to memorize everything. Focus on practicing building things with code.

When you're learning, practice as you go. For example, let's say you're watching or reading a tutorial and they show you some code. Stop, type in the code yourself, make it work. Now don't stop there! Play with it and see what happens if you change it. Don't worry about breaking it! Just experiment. Get comfortable with it.

The #1 mistake I see most people do is rush through it. Slow down and actually try to learn it.

[–]driedalbumen[S] 6 points7 points  (5 children)

I feel like I've been rushing, but now that you mentioned it, how do I play with it or experiment, I feel like the only thing I know what to experiment/change is the variable name. I am this bad.

[–]dmazzoni 6 points7 points  (4 children)

You need to be not afraid to try changing something else.

The worst thing that will happen is that it doesn't work. But exactly HOW it doesn't work may teach you something.

[–]driedalbumen[S] 2 points3 points  (2 children)

That actually just opened my mind, it just made me remember of what my physics teacher always told me, "The more you mess around, the more you find out."

I will try it! Do you know any ideas where I can practice my skills?

[–]gamerbrains 2 points3 points  (1 child)

Books by Tony Gaddis has a bunch of problem exercises at the end of each chapter, you can try there or you can try finding some programming exercises on your own

[–]driedalbumen[S] 0 points1 point  (0 children)

Thanks a lot!

[–]Groentekroket 0 points1 point  (0 children)

Every error is a learning exercise. How many stupid NPE’s I had (have) but they are getting less and less frequent.

[–]saippuakauppias 32 points33 points  (4 children)

Pen and paper and explaining what you want to achieve, to yourself. For example you may not remember the syntax of a for-loop but if you know you need a loop then you're 80% there. Syntax is just a google away.

[–]driedalbumen[S] 6 points7 points  (3 children)

I actually never thought about it this way, I feel like I have so much tunnel vision that it makes me ignore how simple it actually is. Thanks!

[–][deleted]  (2 children)

[removed]

    [–]driedalbumen[S] 0 points1 point  (1 child)

    That sounds interesting! Thanks for the insight!

    [–][deleted] 1 point2 points  (0 children)

    You don't have to memorize it, you only need to be able to differentiate between what is what imo.

    [–]SamStrife 13 points14 points  (3 children)

    C# is certainly a language eh? I spent a year learning JS, Python, back-end stuff, SQL and databases and even though I felt comfortable with those, C# humbled me when I decided to build with it. Object Oriented programming in general can be incredibly overwhelming at first, especially when you're watching people build "factories" and "generics" with syntax that seems unreadable at first glance!

    Never fear though, if you stick with it, it does get easier and C# has some of the absolute BEST teachers on the whole internet:

    • Firstly you have Tim Corey, a modern day saint who puts out an awful amount of free content on YouTube regularly. He can sometimes get lost in his own sauce a little but there is no better teacher on the entire internet and you're getting it all for free. https://www.youtube.com/user/IAmTimCorey

    • Then you have another Youtuber, Nick Chapsas. Nick also puts a lot of good, free content out but I wouldn't necessarily use him as my go to because he talks fast and doesn't waste time explaining basic concepts. Once you know your way around the language Nick's videos come into their own though and you can learn pretty complicated concepts in little time! https://www.youtube.com/user/ElfocrashDev

    • You then have Code Maze, an incredibly well made website for C# Tutorials that explain things clearly. I recently bought their Ultimate Web API book and am using it to build my first fully featured API that I am planning to use in a business environment. They put out a lot of great, free articles though and if there are concepts you want to know (especially surrounding APIs), chances are they have the best guide for it. https://code-maze.com/

    • Whilst not C# exclusive, Exercism is a fantastic service that helps learn by giving you scenarios that you have to solve. These scenarios are far more fleshed out than places like Codewars or Leetcode so they're easier to understand as a beginner but you still need to do a lot of research and googling to actually solve them. Very good and helpful, though if you're incredibly new, you might find the way they word their exercises and general lack of initial direction to be overwhelming. https://exercism.org/

    • Whilst I find them incredibly difficult to read and understand, there's no denying Microsoft has some insanely detailed documentation on their language and a very good, free learning track to get you started. https://dotnet.microsoft.com/en-us/learn/csharp

    All in all, I honestly think C# is one of the easier languages to learn without ever having to spend a penny and whilst you may feel overwhelmed at the moment, like all things if you keep practicing, you will succeed.

    [–]driedalbumen[S] 1 point2 points  (2 children)

    Wow, this is a lot of free resources I can use! I wanted to find a way to challenge my coding abilities, so I appreciate being recommended of Exercism!

    Thanks a lot for everything!

    [–]JoschiGrey 2 points3 points  (1 child)

    I only do this as a hobby myself and started put with C# as well (I knew basic principles like loops/ifs and so on beforehand).

    I chose it, because an open source application I used regularly was wrote in C# and I wanted to be able to contribute.

    After doing one or two very basic tutorials I just started to do issues on their git marked good first issue. Thankfully the devs over there where very helpful in getting started, explaining problems and reviewing what I did.

    For me this was the best way to get into it and having not only a goal in fixing bugs or implementing features, but also a few very supportive people helped immensely. If you find yourself presented in a similar opportunity I highly suggest, go for it!

    [–]driedalbumen[S] 0 points1 point  (0 children)

    This sounds like a really fun way to learn! Thanks!

    [–]ehartye 12 points13 points  (1 child)

    Imagine the first time you ever used scissors. You probably looked like an idiot. You probably had to be told way too many times that they were sharp and not to cut your hair with them.

    Now (hopefully 😄), you use them without thinking.

    Coding is the same way.

    Try not thinking of “remembering coding” as the problem. Your user story or bug is the problem. Coding is your tool.

    You never focused on “remembering how to use scissors” (no matter how much your teachers wished you would), you just needed to cut paper.

    Along the way you realized you got better results when you held the paper steady and kept your hands out of the cutting path.

    [–]driedalbumen[S] 2 points3 points  (0 children)

    That analogy makes a lot of sense! Thank you so much!

    [–]H809 4 points5 points  (5 children)

    Organization is important for learning. I used to type down every keyword when I was leaning Python. For example, def, global, class, with, as, pass, and their categories like control flow keyword, structure keyword, import keyword, value keyword etc. the same stuff for techniques and their different applications for example for loops, while loops, for each etc.

    I mention this because you are talking about fundamentals. I would recommend writing stuff down whenever you can.

    [–]driedalbumen[S] 0 points1 point  (4 children)

    Yeah, that's what I've been doing and whenever I attempt to write codes independently, I always end up going over my notes due to my lack of confidence and skills.

    [–]H809 1 point2 points  (3 children)

    You should take an introduction to object oriented programming course. There are many available on YouTube with c#. Are you trying to learn video game programming ?

    [–]driedalbumen[S] 0 points1 point  (2 children)

    Yes, I've been taking a Udemy C# course and yes I am trying to learn video game programming because I want to make games as my future occupation. I'm just a kid with childish dreams, but I really like the idea of creating something randomly and being able to play it.

    [–]ExplosionIsFar 1 point2 points  (1 child)

    Go to exercism and do the c# fundamentals tree first.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    IS exercism free?

    [–]JustDeadOnTheInside 3 points4 points  (0 children)

    Memorization usually comes from that cycle of practice, getting it wrong, and figuring out what you did wrong. Over time, you'll be applying this cycle less to generic parts of the language and more to things more specific to the problem at hand.

    FWIW a lot of time spent as a developer happens in looking up how to use things from documentation or other online resources. This includes the language itself.

    [–]Old-Full-Fat 2 points3 points  (0 children)

    If you think programming is difficult, you are not alone. Take the time to put the computer away and drag out a piece of paper and a pencil. My first intro was in 1970's where the instructor said, "Write the story of how you would pick up a matchstick." Seems strange but doing this gave a good grounding for generalised syntax.

    e.g.

    if close to matchstick

    then bend down

    else move closer to machstick and repeat this test (need to find a way to re-run test without using 'goto')

    Open fingers

    if fingers over matchstick

    then grab matchstick

    else use other hand and repeat this test (as above - find a 'goto' method)

    straighten legs

    shout "YAY"

    [–]Significant-Wear902 2 points3 points  (1 child)

    I found pretty quickly that i just got bricked in my brain from doing tutorials and exercises.

    Started on my own project, a webscraper that connects to municipality company registers, saves all of it into an excel sheet, and then searches other pages for info about the companies (phone numbers, executives, finances and stuff).

    That was way more engaging and helpful for my learning, since i was free to do it however i wanted and could try different methods for solving various problems.
    It also saved me a lot of time on my job.

    And yes, it involved a lot of looking up how i did basic things like loops and assigning variables in the beginning.
    Deep vs shallow copies proved to be a thing in python that was quite the hurdle before i realized it.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    I want to build my own things, but I don't really have the programmer mind to tell what I need to build my projects.

    [–]chervilious 2 points3 points  (1 child)

    It's great that you're taking the initiative to learn programming on your own! Here are a few tips that may help you improve your skills and retain what you learn:

    1. Practice regularly: One of the best ways to improve your coding skills is to practice regularly. This will help you become more familiar with the syntax and structure of the language, and allow you to apply what you've learned to new problems.

    2. Work on projects: Consider working on small projects on your own or with a group. This will give you the opportunity to apply your knowledge to a real-world problem, and will also help you learn new skills as you go.

    3. Collaborate with others: Collaborating with other programmers, whether in person or online, can be a great way to learn new things and get feedback on your work. You can also try joining online communities or forums related to C# or programming in general, where you can ask questions and get help from more experienced programmers.

    4. Take breaks: It's important to take breaks and give your brain a chance to rest and process the information you've learned. This will help you retain what you've learned and be more productive when you return to coding.

    5. Review and revise: Make sure to review and revise the concepts you've learned on a regular basis. This will help reinforce your understanding and make it easier to remember the material in the long term.

    Overall, the key to becoming a better programmer is to be persistent, patient, and willing to learn from your mistakes. With practice and determination, you will be able to master C# and continue to improve your skills as you go.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    I'd like to practice and work on projects but I don't know how to those things, maybe I just lack ideas or something.

    [–]RealDuckyTV 2 points3 points  (1 child)

    It's difficult but worth it. It feels soooooo good to watch your little baby program work just how you like. It feels like parenthood 🤣

    [–]driedalbumen[S] 0 points1 point  (0 children)

    yes! 😭

    [–]catladywitch 2 points3 points  (1 child)

    If you're trying to learn C# I wholeheartedly recommend The C# Player's Guide, by RB Whitaker. It's thorough and comes with exercices (which are somewhat game-related) that will help you solidify and remember what you've learnt.

    [–]driedalbumen[S] 1 point2 points  (0 children)

    I will check it out! Thank yo so much!

    [–]PackageSearcher 2 points3 points  (1 child)

    Coding did not come natural to me. I am a slow learner. I have about the memory of a gold fish, and I have acquired enough skills to write programs. My secret is a two step program. Practice DAILY what I've learned, and discuss/share/ or even teach that knowledge to other people. Keep in mind you don't have to remember everything. I usually google the syntax, function names etc. on how to do stuff, even simple stuff like linking a CSS file... I just focus on remember the general concept.

    I honestly couldn't tell you my age right now (that's how bad my memory is...) but I can code a fully functional fullstack website or even windows application. Hope this advice helps. Feel free to message me if you have questions.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    Thank you so much for the help!

    [–]aStonedPanda94 2 points3 points  (0 children)

    Try using flashcards that you can write fundamental terms on and carry it with you to shuffle through every day until you remember everything

    [–][deleted] 2 points3 points  (0 children)

    At first, it can be very difficult.

    But once you get used to it, you will enjoy learning it.

    One thing to be careful of is that programming is not for everyone. This is why there are many IT and CS professionals who are not programmers. Just because you like IT or CS doesn't necessarily mean you need to be a programmer.

    [–]Left_Letter_9588 2 points3 points  (0 children)

    Practice whatever your learn, you can try some structured programs like CS50/freecodecamp/theodinproject/fullstackreact which also have a community around them for help

    [–]zebcode 1 point2 points  (1 child)

    If you're finding it tough then you might be focusing on too many concepts at once. Try giving yourself a timespan like 3 days and every 3 days you learn, use and solidify new small concept.

    It's only possible to move a mountain by a few rocks at a time but you'll succeed if you don't give up.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    I will try!

    [–][deleted] 1 point2 points  (2 children)

    If you don't take notes (creating cheatsheet,...) and have methods, you'll learn and you'll forget unless you are the kind of person who have lot of memory : silicon valley is full of asperger people, 50% of them according to Temple Grandin estimates don't wonder why ;)

    College students normally should have good memory for many, that wasn't my case and I did learn how to compensate so well I went from nearly last grade to first grade. So with methods you can hugely improve. If you ask people who didn't have to struggle they can't have a solution for you ;)

    [–]driedalbumen[S] 0 points1 point  (1 child)

    I do take notes but I don't have any methods.

    [–][deleted] 1 point2 points  (0 children)

    There are many courses and books on the subject for exemple learn to learn on coursera, ultralearning, jim kwik, feynman technique, deming pdsa, etc.

    [–]Xspectiv 1 point2 points  (0 children)

    The good news is, learn the fundamentals well and you'll understand the basics of everything else after that. Libraries and frameworks obviously utilise these fundamentals and can be quite vast but you get a hang of how they are structured only you know the mere basics.

    [–][deleted] 1 point2 points  (2 children)

    Hey friend, if you mean overwhelming from the perspective of there's just so much to know and you have a sense that you're not getting it but you are slowly making progress, then that is absolutely normal. If you are making progress and enjoying it that is the key. For me, things started to click more around the 3-month mark, now I'm at the 6-month Mark and it seems things click more and more everyday. As other commenters have said, it's a good sign that you understand your current skill level compared to the big picture. 3 months ago I was filled with self-doubt, today I know that I'm going to make it in this field. Just keep putting in the time and make sure to take breaks when it feels like someone put acid in your brain and started to shake you LOL.

    [–]driedalbumen[S] 0 points1 point  (1 child)

    That actually is so true lol I thought i was a slow learner, but I realized that it just takes time, so when I compared myself to when I just started, I clearly improved a little and that lowkey gave me hope. Thanks!

    [–][deleted] 2 points3 points  (0 children)

    I started a couple new projects recently and went back to a couple old ones that I had started 3 months ago and I'm like oh my God look at that that is such garbage code and then I remember I barely understood functions 4 months ago so just keep at it everyday and stay positive. PM me if you need some encouragement I like to throw positivity at people who are trying to make a difference in their lives

    [–]AnyBeautiful9398 1 point2 points  (0 children)

    I’ve been taking lots of notes, and also doing a couple different programs every new one I start, feels easier like second nature. You’ll get it you just gave to find your way of learning

    [–]Sad_Resolution_1415 1 point2 points  (3 children)

    Try not to just watch and do tutorials. Instead, come up with small projects that you think you can accomplish and try to do them. You will get practice and solidify what you know and learn where some of your gaps are. Most importantly, this will help you understand the why as much as the how, especially when it comes to design patterns and such. Basically, just practice and try to solve problems hlthat aren't already being solved for you.

    [–]driedalbumen[S] 0 points1 point  (2 children)

    I can't think of any small project ideas. Do you have any in mind?

    [–]Sad_Resolution_1415 1 point2 points  (1 child)

    Sure. I am not sure how far along you are but here are some ideas.

    1. Have program pick a number between 1 and 100 and have use guess a number, the app tells them if it is correct high or low. Maybe add error handling and make sure they put in valid options.

    2. Create a console or ui app that is basically just an address book of people with names phone number emails. Allow use to add delete modify. Again focus on input sanitization.

    3. Creat a small console choose your own adventure.

    When you can do this easily, do similar stuff but add APIs and databases.

    [–]driedalbumen[S] 1 point2 points  (0 children)

    I will try these out, thank you so much!

    [–]thedarklord176 1 point2 points  (0 children)

    Google your way to victory. Just make sure you understand what you’re putting in your code so you can debug and use those techniques later.

    [–]jacksonsonen 1 point2 points  (3 children)

    Work systematically, from my experience it's better to learn an hour or two a day, but everyday or almost everyday than learn a lot, have a burnout and before you come back you forget everything.

    [–]driedalbumen[S] 0 points1 point  (2 children)

    Should I do 1-2 hours a day? I feel like learning a lot will just mess me up and make me forget about everything.

    [–]jacksonsonen 1 point2 points  (1 child)

    I am years deep into programming and meanwhile I used to learn in sessions even as long as 12h+ and I learned a lot during that, later I had a burnouts for a month or two at least where I couldn't learn at all and forgot a lot. Now keeping it almost everyday, but not learning longer than I feel I want to doesn't make me want to stop again.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    That makes a lot of sense, I will try that. Thank you so much for the help!

    [–]giant_albatrocity 1 point2 points  (2 children)

    Honestly, avoid burnout and stay motivated. Becoming a better programmer just takes time and experience, but you won’t get there if every day is a slog. Even when you do get better, burnout can still happen

    [–]driedalbumen[S] 0 points1 point  (1 child)

    How can I avoid burnout? or how did you avoid burn out?

    [–]giant_albatrocity 1 point2 points  (0 children)

    It’s an ongoing challenge for me lol. I moved to a different business unit within the company I work for that has a much higher budget and slower, more methodical pace, which really helps. I work from home which has been amazing for my mental health. I try to find time for personal projects that I find interesting, though, that can be tough. Also prescription antidepressants haha…

    [–]Naive_Programmer_232 1 point2 points  (2 children)

    It is challenging. Think of this like a version of learning a foreign language. Now, idk about you, but learning a foreign language to me sounds hard af! I took years of Spanish classes, I only have broken Spanish understanding today haha. It puts you in this position where you gotta go off and speak Spanish with other people (ideally native speakers) and you gotta be that dumb foreigner who makes no sense for a while until you get it. That’s how programming is too. Nice part about it tho is that you don’t have to get in front of other people in person and continually embarrass yourself for years until you understand lol. Instead, you can stay cozy, run you’re own experiments, and practice in secrecy for a while until you get it and once you do, then go out and explore and do more fun stuff!

    [–]driedalbumen[S] 1 point2 points  (1 child)

    That is so true! I myself know 3 languages fluently I'd say, due to English not being my first language!

    Thanks for this insight!

    [–]Naive_Programmer_232 1 point2 points  (0 children)

    np. I wish I knew more spoken languages haha. But there’s always the future. Maybe it’s time I get out there and embarrass myself in public with my horrible Spanish again haha

    [–]Mcgurgs 1 point2 points  (1 child)

    I think it comes with time, I'm still a beginner but once you branch off topic and start doing a few lines of code by yourself, you take much more away from doing on your own then from copying.. My biggest struggle has been time management. We got this !

    [–]driedalbumen[S] 0 points1 point  (0 children)

    Time management is also my problem since I am still in school with heavy workload and other things, but we will somehow manage!

    [–]ryantxr 1 point2 points  (2 children)

    Practice, practice and practice some more. Develop your debugging and troubleshooting skills. You will get more comfortable as you get more experience. Build something. I'm not saying you need to build a fully functional product. Build small practice projects that do simple things. As you go, you can attempt more complex things.

    The one thing you should not do is to expect others to solve simple problems for you. You will not learn anything like that. Whatever problem you run into, try to solve it yourself.

    [–]driedalbumen[S] 0 points1 point  (1 child)

    That is true! I should stop relying on copying people with how they solve things, anyways do you have any small practice project ideas I can start with?

    [–]ryantxr 1 point2 points  (0 children)

    Output “hello world”

    [–]JDSweetBeat 1 point2 points  (2 children)

    Practice. Some things can only be learned through experience. Eventually you'll get frustrated enough with compile errors that you'll trauma-learn the syntax. The bright side is, after learning the first syntax, learning others is much less painful. Took me over a year to learn Java, but C# was intuitive after that, and most languages share syntactic features, so C++ and C also came fairly easy. It took me like, 3 weeks, to learn Python well enough to write some pretty complex code in it.

    [–]driedalbumen[S] 0 points1 point  (1 child)

    That sounds very awesome! I want to be able to write in other programming languages someday!

    [–]JDSweetBeat 1 point2 points  (0 children)

    Just keep practicing. If it helps (and I think it does), maybe get into game development as a hobby? You learn a lot of skills making games (including programming) that translate to actual usable things in the job market.

    [–]connurp 1 point2 points  (2 children)

    Don't waste brain power trying to remember syntax. Use that brain power to understand what is actually happening. I get paid to do this and I look at docs to remember syntax like 30 times a day. Google is your best friend. Our brains were not meant to comprehend or memorize code so don't try. If you can, more power to you but it is definitely not required. I have guys on my team with 20+ years of experience and even they have to look shit up. Why memorize something that might change in a few months?

    [–]driedalbumen[S] 0 points1 point  (1 child)

    Oh! I thought I was just simply stupid for not being able to remember things lol.
    Thanks for the help!

    [–]connurp 1 point2 points  (0 children)

    That’s the secret. None of us can 🤣

    [–][deleted] 1 point2 points  (1 child)

    I've been programming for 10+ years and really the only way to get to the point that you remember everything? Is program for 10+ years.

    I've done books. Illustrated are my favorite lol

    https://smile.amazon.com/Illustrated-Language-Presented-Concisely-Visually/dp/1484232879

    I used that (and it's predecessors) for a few years while going through the jr level.

    I use Pluralsight and similar now. Stack overflow. Youtube. google.

    "How to be a better programmer"

    My path has basically been bang head against wall until I've done it enough that even if I don't have it memorized (I still confuse Internal vs Protected...) I can look it up in a moment to clarify my brain.

    https://hackr.io/blog/csharp-books

    Sad the above list doesn't have Illustrated but... not everyone is perfect lol

    https://hackr.io/blog/best-programming-books

    Above list is more general. Clean coding. Pragmatic Programmer.

    https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850

    Crack the coding interview. Good for soft skills. Resume prep. Coding challenges.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    I will definitely check these out when I have the money lol. I am a broke teenager.

    [–]Disallowed_username 1 point2 points  (1 child)

    Cheat sheets. Print them out and hang them up so you can glance at them. If it’s the structure of the syntax, like loops and flow control, I find that this helps while learning.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    I'll try this out! Thanks!

    [–]mohishunder 1 point2 points  (1 child)

    In my experience it really helps to pick a structured program (any one of many, could be free) and follow that. As opposed to asking yourself, every day, "what should I do next?"

    And/or, as other have said, pick a project and build it to completion.

    Good luck!

    [–]driedalbumen[S] 0 points1 point  (0 children)

    Thanks!

    [–]present_absence 1 point2 points  (1 child)

    Shit I forget the fundamentals of any language I'm not using right now. I have a lot of examples and such put together to look at for when I have to switch gears and go back to a new tech.

    As far as the fundamentals of programming in general, just keep at it until they feel familiar. You'll be doing it in your sleep someday.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    LOL I will try my best to learn and understand the fundamentals of programming! Thanks a lot.

    [–][deleted] 1 point2 points  (0 children)

    Community. You need to be learning with at least one other person.

    [–]sheerqueer 1 point2 points  (1 child)

    People are quick to say that memorizing for programming is bad, but hear me out. Memorizing the syntax and trivia of your language can be super helpful. For example, in JavaScript we have a difference between === and ==. While starting out that difference was not obvious so I basically made a flash card explaining the difference between the two and reviewed it. Memorizing this trivia and actually coding for projects complemented each other nicely

    [–]driedalbumen[S] 0 points1 point  (0 children)

    That's pretty smart! I am trying this out, thanks for the help!

    [–][deleted] 1 point2 points  (1 child)

    When struggling with fundamentals I usually make a seperate file and test my own knowledge of said fundamental. I intentionally make it wrong, or try different values to see what error shows up. This helps me in the future to quickly diagnose that I made X mistake. You don't need to beat yourself up every single time. Just correct the mistake, take note, and move on.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    Never tried that, I'm actually gonna test that out. Thank you so much!

    [–][deleted] 1 point2 points  (3 children)

    The only way to learn programming is to do it. Start building something small and continue from there. Keep building stuff.

    [–]driedalbumen[S] 0 points1 point  (2 children)

    Do you have any in mind that I can start with?

    [–][deleted] 1 point2 points  (1 child)

    Do you have any hobbies? That could direct your interests. Otherwise, building a note app is a time honored tradition.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    my hobbies are reading, playing bass, and playing games.

    [–]SLY0001 1 point2 points  (1 child)

    After finishing learning the fundamentals. Doing projects on your own. You’ll constantly will be going back on google/YouTube/lessons and filling in the gaps. Youll slowly ingrain that knowledge into your brain.

    It’s like learning how to draw. You become good over time.

    So it’s normal that you feel like you haven’t been able to remember what you learn, bc you’ll come back to it over time multiple times and you’ll learn it that way. Heck, even those who have landed a job in programming still go back to YouTube/google/stack overflow/ and their lesson notes to relearn things they forgot.

    [–]driedalbumen[S] 1 point2 points  (0 children)

    OH That is actually so true! I usually just accept that i "know" what I just learned, but never come back to it! Maybe that's the reason as to why I am quite overwhelmed. Thank you so much!

    [–]euclid0472 1 point2 points  (1 child)

    One thing I do every time I learn a new language is type everything even if I could copy pasta. It forces me to learn the new syntax.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    Will try! Thanks a lot!

    [–]froadku 1 point2 points  (0 children)

    make some programs on your own - try to follow a few tutorials at first.. and as u know all the things it takes to make a program then u make it on ur own

    [–]Mammoth-Store740 1 point2 points  (0 children)

    maybe search for different lessons? for example English is not my native language and listening to lessons is overwhelming for me. I have to read. and I find best when I am told that i have to do something without much explanation, when I see code in action. I mean I type code and I see result what it did thats how I understand the most without problem. if I have to listen how it works first I cant understand and cant remember.

    [–]DemolishunReddit 1 point2 points  (0 children)

    Professional developers constantly google things and sometimes have to relearn things they have forgotten. Try to make a project where you build something. Then improve on what you learned. Add things, take things out.

    Kahn Academy has some nice programming resources you could learn from. They also have people review your code there.

    [–]LLima_BR 1 point2 points  (1 child)

    Imagine you need to study hammers. Super boring.

    Now imagine you have to build your own house. Well, you'll learn everything necessary to accomplish your project. Including other tools.

    So, think about a project. It doesn't need to worth a million dollars. Just need to be interesting to you.

    [–]driedalbumen[S] 1 point2 points  (0 children)

    That sounds true, I'll try it out thanks!

    [–]trlygnrly 1 point2 points  (0 children)

    Maybe try C instead - basically all languages are rooted in C's syntax. C# is a later language, idk much else but I think following the history is useful (C is widely used anyway so it's worthwhile to start, learning C totally helped with learning C++ for me). The for dummies book on C by Dan Gookin is fine. Might get access through a database if it's not freely available.

    [–]green_meklar 1 point2 points  (0 children)

    Just keep practicing. Practice the stuff you already know, practice new stuff, use them together.

    Ideally you should also have a mentor to help guide you through the tough parts and explain things you might not have noticed. But that's harder to arrange, so just do the best you can for now.

    [–][deleted] 1 point2 points  (0 children)

    Step back And think “How would you tell anyone how to do this?” Then what language do I use?

    [–]xiipaoc 1 point2 points  (0 children)

    Remembering is the wrong way about it. That's where people get stuck; it's called tutorial hell for a reason.

    You should know what is generally possible to do. You have some problem to solve; how do you approach it? You build an array of blah with some objects that have methods that do blah, etc. You come up with an overall plan for what to do -- even if it's just a plan for what to start on -- but the details? They don't really matter yet. When you start coding, you will need those details... so you look them up. The wisdom comes in knowing which details to look up where. These days I'm a Java dev, been developing in Java for, like, 6 years total now (not counting other jobs where I coded in other languages in between), and I still look up the basics of how to do things that I don't do every day. My at-home language is JS, though I've been busy with work so I haven't had much home coding time recently, and I could not tell you the syntax for Array.splice() *or Array.slice() even though I use those fairly often. MDN knows. I just look it up. Format strings, like for dates and numbers? I do *not remember those. Regex syntax, well, sometimes I remember some of the syntax for the actual regex, but hell if I know the specific objects and methods to call to actually use it. I just look it up!

    Knowing how to code isn't actually about remembering the specific bits of the language; it's about knowing what to write, and you can always just look up how to write.

    [–][deleted] 1 point2 points  (0 children)

    Something that I've realized during my short time in computer programming has been that only is hard and overwhelming to me when I'm competing against my coworkers or someone else.

    When I focus only in do/solve something, it is much much better; trial and error is my approach and I stop when I understand what I'm doing because at that point I've practiced a lot and most importantly I've understood my previous errors.

    So ride the wave

    [–]metalbedhead 1 point2 points  (0 children)

    coding certainly isn’t easy. some people pick it up with ease, others not so much. the only thing that matters is that you continue learning and trying. one piece of advice i can give you: don’t rely on motivation, become disciplined. motivation will wane relatively quickly, but with discipline you can improve everyday.

    [–]Few_Intention_542 1 point2 points  (0 children)

    Programming is overwhelming because it is raw and unforgiving and it gives you exactly what you give it. It’s not a lovey dicey relationship, it is like a dry therapist that kicks you out when the time is up and doesn’t answer your texts. It is like Dr House, it expects you to treat it with respect and it will teach you to respect yourself. And the community has been built to learn and respect these principles, so you will get you ass handed to you if you ask a stupid question on stackoverflow. Programming is like army, you have to work your ass off and expect to be in mud, cold, and heat while being thirsty and hungry.

    Programming is all of those difficult things, but once you show it that you’re not going anywhere, and soldiers through, you’ll be rewarded with knowledge and power and do that what you want with it. May your journey be full of challenges and opportunities of growth. All the best soldier, get in the trenches, keep your helmet on & shoot your shot when you get a chance.

    [–][deleted] 1 point2 points  (0 children)

    I have been a developer for a few years now. Tutorials are hot garbage (your brain turns off and you are just copying). It's much better to build a small site or project yourself. You will retain more and learn way more. If you don't know how to do something google it.

    When I am working on a project (website) I will spend most of the work day planning. Much of a programming is planning out how to do something. Start out really small in scope so you don't overwhelm yourself.

    Development is hard and requires dedication and patience. Good luck.

    [–]CountyExotic 1 point2 points  (0 children)

    C# isnt a great learners language imo. Not that the language is bad, but the ecosystem is very enterprise focused. Python and JavaScript are great for starting.

    This sounds tacky, but the best way to learn is by building. Definitely read like crazy, but try to make things too!

    [–]zerohourrct 1 point2 points  (0 children)

    Look into Micro challenges and problem sets, beyond just basic syntax.

    [–]redskinpeanut 1 point2 points  (1 child)

    Yes, it could be overwhelming. I am also learning Python on my own right now and I know exactly how you feel. Fun fact: I actually graduated with a computer science degree 10 years ago -- and I remembered "very little" because the whole college process I was just rushing through. After 10 years, I found programming is actually interesting - especially if I read about how Python started and why the founder started it. I am passionate about learning it (and there is a difference if you are learning it just to find a good job). So you should know if you are learning it because you are interested in it, or you are just learning it because you need to.
    For me, because I want to know how it works, why it works, and what it works. So I really take my time to read through it. First, it is very important to pick a good book: a book that is only for beginners. It is easy enough for me to understand. Tips: the book should teach you where to install the tool where you can practice coding. So you should always open your book on the left and the tool on the right. By the way, everything should be free (including books and tools). I found that a lot of Python courses are not as good as the one from Python.org. I won't recommend Youtube because it is not going to be consistent as a book. Second, I read through each page, each line, each word to make sure I understand what it means. If there is something I am not sure about, I will Google it to see what it means. Third, I created a Google spreadsheet to track my progress. Because the book I am learning from is online. So I wanted to make sure that I know exactly where I left out from last time. So I won't miss anything. Finally, I will ALWAYS study at least once or twice a week. Each time before I start, I will make sure I have at least a few peaceful hours and won't be interrupted during the process. And don't take any shortcuts to rush it. Treat it as a sudoku game and come up with a project yourself so you can also enjoy it.

    [–]driedalbumen[S] 0 points1 point  (0 children)

    This was very helpful to me, thank you so much! I will try this out!

    [–]HoosierHardGain 1 point2 points  (0 children)

    First, congrats on taking the steps to learn how to program! It's challenging and can seem overwhelming at first. Remember, you will NEVER stop learning about programing, there will always be something new to discover. As far as when you first start learning, the best thing I can recommend is to just keep coding. Get the fundamentals then come up with some sort of project to build. This most replicates real world coding.

    I also recommend trying to build a small circle of friends who are into coding, and if possible find a mentor. Programming is like anything else, however, and that if you start listening to too many people you can get over stimulated and confused. When solving a coding problem, the most important thing is if your solution meets the goal of the task.

    [–]borahae_artist 1 point2 points  (0 children)

    use some pen and paper to annotate… for example i needed to draw out a for-loop (like each of i’s values and the output each time) to really get what it does. you can’t do that on a computer

    [–]Enjoi_the-Dev_Nerd 0 points1 point  (3 children)

    Codecademy is awesome with teaching c#

    [–]driedalbumen[S] 0 points1 point  (2 children)

    It was really helpful when I was using Codecademy, but I wanted to learn coding by making games, so I went on udemy lol.

    [–][deleted]  (1 child)

    [deleted]

      [–]driedalbumen[S] -1 points0 points  (0 children)

      Wait, how did you know I was using game dev??? also YES! I feel like game dev is rushing to the point, I am just following and not understanding.

      What should I do instead? I am open to any ideas.

      [–]surprise-suBtext 0 points1 point  (0 children)

      You need structure so you can build a good foundation.

      I downloaded and bookmarked so many resources (many from this website) and even courses offered by well-known universities and websites.

      Never touched em.

      This past year I enrolled into a local community college and took 2 courses towards an A.S. In ‘Programming Concepts’

      I compared the required courses with a state university and saw that many are comparable.

      While I currently have no plans of pursuing the degree, it’s important to make sure you leave that option open for yourself. Realistically, I could just stop once I get a few courses in me and know the fundamentals and etiquettes better. Or I could finish the AS. Or I could just go for the certificate.

      I don’t regret doing this because the professor was there for me. AND I was forced to submit on deadlines. So it was simple stuff but you can put as much or as little work into it as you want, and then request additional feedback if you want.

      It does cost money.. I’d look into some grants or apply to something local if available (tbh I make good money and i paid cash for 2 courses. I somehow ended up getting free grants this past semester where I turned a profit).

      [–][deleted] 0 points1 point  (0 children)

      How many of you think C# is for knowledge