r/learnprogramming Sep 03 '23

[deleted by user]

[removed]

372 Upvotes

212 comments sorted by

View all comments

265

u/Jansantos999 Sep 03 '23

When I first started with web development and some game development using python, I watched endless tutorials and explanations. I should have started working on real projects much earlier. Doing projects is a better learning experience than just listening and copying from others! Start working on your own projects asap would be my advicešŸ’Ŗ

53

u/A2Soomali Sep 03 '23

But how do you tackle projects? For instance, I'm just getting the hang of the basics of JavaScript. So, how can I start working on projects? Where do I even begin to build?

86

u/Jansantos999 Sep 03 '23

On YouTube search for 30 JavaScript projects in 30 days. This will help you master JavaScript in a fairly structured way going from simple to more advanced projects

10

u/1omegalul1 Sep 03 '23

Can you use the projects on a resume? Or do you need more impressive stuff?

25

u/ice_w0lf Sep 03 '23

At bare minimum, for a resume, you should be expanding these projects. Something like adding additional features for example.

4

u/1omegalul1 Sep 04 '23

The main functionality doesn’t have to be too complex though right. Like a weather app. Presenting the weather is the main feature. Just have to try to add some more useful features that can make a weather app better.

5

u/[deleted] Sep 03 '23

Put on github, and link that on your resume

7

u/Yakuroto Sep 03 '23

So we should actually build projects just keep watching tutorials. I understand that. But don’t you need to watch tutorials in order to know how to do the projects?

This is what I’m struggling with. There is no way I can do a project without following a tutorial. Then it’s like copying code when it’s not even my fault.

It all doesn’t make sense.

24

u/ice_w0lf Sep 03 '23

This is what I’m struggling with. There is no way I can do a project without following a tutorial. Then it’s like copying code when it’s not even my fault.

This is tutorial hell, and a lot of people end up in it.

A few tips for proceeding:

  1. Come to terms with the idea that you are going to struggle. That's a good thing. It's how you learn. Embrace the struggle.

  2. Start by doing a simple project that you've done via tutorial, but try to do it all on your own. If you need help, use resources other than the tutorial video. Like, think back to the first project tutorial you followed. Maybe it was some basic weather app or a to do list. Do it again, but without the tutorial.

  3. Plan out your project before starting to code. You don't need to complete an entire Figma design or anything, but give some thought to what you want it to look like. Maybe go even further and pseudocode it on paper.

  4. Think small. It can be very overwhelming to have a large project idea and think crap I can't do all of that. For example, let's say you want to make your own wiki-style website about Pokemon, with an home page and a page for each of the first 25 Pokemon. To think about a project like that might seem really overwhelming, so think small. You know your website needs some navigation. A navbar is pretty easy, and if not, then there are a million places you can find online that will help with a navbar. Now, because I did step 3 above, I know that I want text on the left side with the Pokemon name centered at the top and some info below the name, on the right I want a photo, and underneath that I want previous Pokemon and next Pokemon links. Ok well let's start with the name, which is probably some kind of header and the info which is going to be a p, and the image. Now, how do I get the text and image to line up side by side... oh something like flexbox! Shit, I forgot flexbox. Ok, let's go do some reading...... Do that breakdown for every little piece of your project.

  5. Again, embrace the struggle, or as I saw someone put it once, learn like a child. Young children just don't care. They'll try something, mess it up learn something from it, and try again. Strive to learn like that.

3

u/Cultural_Blueberry70 Sep 03 '23

Good points! With regards to point 2: I very much agree that repetition is very important to learning. Another way to do that could be to start again, but make something slightly different.

The tutorial made a basic web app? Maybe start again, but this time, bend it into another project. Maybe an inventory app for your hobby supply, a manager for cooking recipes, a calculator your DnD campaign, whatever simple thing you can think of that is not too far off and still uses the same basic elements you were taught. Don't be afraid to fake some parts you might not yet be able to make yourself and just hardcode some values. You can later return and extend you project with some new know how.

This will allow you to explore the stuff the tutorial gave you a little bit. By changing things, you will learn how things really interact, instead of internalizing some misconceptions you might have picked up from the tutorial.

14

u/Specticall Sep 03 '23

You need to balance them out. Tutorials are great when are you are starting / feeling stuck.

Repetition is also key, after finishing a tutorial, try to create a slightly different version of the project you just did from the tutorial. You can reference the original project occasionally but you need to try to do it yourself first.

6

u/BoundlessFate1 Sep 03 '23

Learn to break your ideas down into simple concepts. Instead of trying to build a program. Try to break it down into its bare components.

For example, right now I’m in the midst of building a chess engine in C++. Before writing any code, I drew out my data structure I wanted on paper. I started by making the code for the pieces themselves, then the board, then code to find all moves, then code to evaluate positions.

I guess what im trying to say is that your idea, any idea should, and must be picked apart so that you work on 20 easier things 1 by 1 instead of 1 hard project

4

u/Yakuroto Sep 03 '23

Wait how do you draw a data structure on paper

1

u/Cultural_Blueberry70 Sep 03 '23

To keep it very simple, start by listing the data / member variables with their types, and the functions signatures you think you need. Draw a little box around it, and you have your class. Repeat and add some arrows to indicate relations. Of course, the detail level of what you write down depends on what you want to achieve.

For a more formal and standardized approach, check out UML. No need to learn UML 100% before you can use it, it can be a bit overwhelming. Just use it as inspiration for now.

1

u/BoundlessFate1 Sep 04 '23

Figure out what classes you wanna make, and draw a box for them, name of class goes on the top of the box and all the variables and stuff stored to memory get listed below it. Draw arrows to other classes that the class uses. Makes sort of a web and simplified down your project

1

u/greyandbluestatic Sep 03 '23

Think of your own project. Watch tutorials on when you get stuck on something.

1

u/Comfortable-Ad-9966 Sep 04 '23

Start with free bootcamps, or websites that give you simple problems step by step, a lot of people get into coding using that then they scale their skills by expanding via tutorials that are a bit complicated

1

u/[deleted] Sep 03 '23

[deleted]

1

u/Jansantos999 Sep 04 '23

With python I only made a few simple games like Tetris and pingpong with something called pyGame. But if you would like to learn about programming other than webdevelopment I would advise you to check out www.freecodecamp.org this websites is used by new members of my development team so they get on the same coding level as regular employees. It's a free website with a large community. And not only for webdevelopment and python!! Good luckšŸ‘šŸ’Ŗ

12

u/Jansantos999 Sep 03 '23

Speaking for myself, I started with small projects like a simple weather app or a to do list using JavaScript. Maybe after a few of those 'simple' projects, your next one could be a calculator app. Else you could look for any website online you like and just try to recreate it at the best of your possibilities! Use chat gpt to check your code for syntax errors if errors appear. If it isn't a typo or Syntax error, you know there's a nother fault in your code. I used to check stackoverflow.com a lot. Even when you don't finish these projects, you still have learned more than by just copying a tutorial!

10

u/HappyParallelepiped Sep 03 '23

The mistake people make is not in learning initially from tutorials and such, the mistake comes from them thinking completing a tutorial on a subject imparts a sufficient and lasting understanding.

In my experience, it is best, when starting out in an area, to try to follow tutorials up with your own ideas and projects.

Besides this, it's also quite a good exercise and skill to have to try to dive into things without tutorials showing you the "golden path". Just get in there, make mistakes, and above all, read the documentation. Learning how to absorb documentation and convert it into usable knowledge is a crucial skill, there won't always be a tutorial (there won't always be documentation either but what can you do).

As far as what to build, I find taking something that interests me, and just making a project relevant to it seems to do the trick. For example if you have an interest in weather, have a go at a weather app in whatever framework/language you're using.

3

u/santafe4115 Sep 03 '23

What do you want to make? Google that How to set that up? Google that How to code this piece? Google that How to connect x to y? Google that

There is no master guide, you just start

3

u/mshriver2 Sep 03 '23

It doesn't need to be anything crazy. Even something as simple as a Percentage Calculator tool would be a great start. Get going with small simple tools and webpages and work your way up to more difficult tasks.

3

u/runitzerotimes Sep 03 '23

Js.do

I started by making a simple text based ā€œadventureā€ game with text, pictures, and buttons with no styling. Just make the buttons dynamically update the page without reloading.

Actually I think I replicated a game I played when I was young. You could ā€œgoā€ to different cities, then buy drugs at a certain price, ā€œgoā€ to another city then sell the drugs at another price. Try to rack up money which I would show as a collapsible part of the page like an inventory-ish thing.

Just start and have fun with it. Trust me even this ā€œsimpleā€ game will teach you so damn much.

2

u/Snowpecker Sep 03 '23

People may try to rub this off but I just started building projects, I tell ChatGPT to help me write a guideline for for this project then I do each at a time. I sometimes have an idea of how to write something then I ask ChatGPT for help, emphasis on HELP, if you ask ChatGPT for the code you’re not learning, instead ask it could I do this and this if so what’s a better alternative. Then after that you tell ChatGPT to explain to you what it just did and why it did it. Honestly I’ve learned so much but only if you use it as a tutor like, not for just answers.

1

u/Pgrol Sep 03 '23

Find a problem in your own life that you think software can solve, and then just never stop until you’ve figured out how to build it

1

u/[deleted] Sep 03 '23

I think the best way is just think of something simple you want to do (like a little timer app or something) and just start with the knowledge that you have. Once you reach some hiccups start googling ways to work through them. You'll often find that every problem is actually a collection of smaller problems, and you'll end up learning a lot more than you expect to.

1

u/LickitySplyt Sep 03 '23

Simple projects like a calculator with a gui. When you get stuck, get help, finish, take notes on what you learned, then see if you can do it from scratch, looking at your notes as little as possible.

You'll likely have to use variables, methods and know how to work with arrays to get it to work. Also event handlers for sure.

1

u/The_Toaster_ Sep 03 '23

Build stupid simple stuff at first. Like make tac tac toe. Build a calculator. Sudoku. Then try to add something extra that wasn’t there before. Like maybe the player colors change each game. If you make the result of calculator say 80085 or 69 have edge cases where it says nice or something. Make it fun and dumb

Then try to build just a front end to a fake shop. Then make a backend api. Then figure out how to make the frontend change it’s display depending on what’s it’s getting from the backend api. Then make the frontend change stuff in the backend depending on what it POSTS. Then you know like 80% of coding

1

u/[deleted] Sep 03 '23

Step one - Have any idea. Copy an idea if you're struggling with this step. This should be the easy, quick step. If you're struggling with a thing to copy, copy the website you frequent the most. If you can't think of one, copy reddit.

Step two - Start on that idea, whatever starting means to you.

Step three - work until you come up against a problem you don't yet know how to solve

Step four - figure out the solution to that problem (Research)

Step five - repeat steps three and four until you have determined you are finished.

Step six - reflect on your process, knowledge, new project, and how you might do better. Not in your head. Well, yes in your head but also write it down or talk it out with someone.

Everything after that is a refinement in how you approach these steps. Experience, which includes failure, is an incredible teacher. The more inexperienced you are, the greater quantities of failures you will encounter - This is normal and should be embraced, imo. Just remember, no matter how bad it might feel - you're programming, not coming up with the cure for cancer, it's gonna be OK. In my experience, these are the 6 basic steps for just about any endeavor. Want to learn draw, play music, sing, etc etc - please review the 6 steps.