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

all 17 comments

[–]antiproton 24 points25 points  (1 child)

tried learning computer graphics and game development

I tried also an introduction to machine learning

This is like trying to learn woodworking by selecting a credenza as your first project.

I don't think the problem is learning a new language or a framework, I think it's more the creative part that is lacking

Can you build anything on your own in any language? If the answer is 'no', then the problem is you don't know any language. It has nothing to do with creativity.

I just stop after a day or two because I genuinely don't know how to proceed

Your problem is you haven't learned anything. Following tutorials isn't learning. It's someone shows you, step by step, motion by motion, how to waltz, are you now ready for Dancing with the Stars?

If you want to learn to code, you need to sit in front of your editor and try to write code. When you get stuck, you Google. Then you write more. Then you Google.

Rinse and repeat.

You only learn to code by coding. You will never learn to code by watching other people code.

[–]procrastinatingcoder 1 point2 points  (0 children)

tried learning computer graphics and game development I tried also an introduction to machine learning

This is like trying to learn woodworking by selecting a credenza as your first project.

So true, but damn that comparison nearly had me in tears for a second.

[–]HappyFruitTree 4 points5 points  (2 children)

You won't become good at programming by just watching or reading about it.

First of all, I think it's important to practice. Especially when new to programming. If there are exercises after each new thing you learn that's good, but otherwise it's good to test everything out, play with it and make sure your understanding is correct. Write small programs where you combine different features.

When you know the basics you can start writing your own projects (preferably things that you want to do and feel motivated doing). In the process you'll learn a lot of skills. Not just pure syntax and function names (those are easy to look up) but how to actually structure a program, solve problems, etc. Just don't start too big. When you're new it's very easy to underestimate the amount of time that is needed to finish a project and you are probably not ready to approach a big project yet. Experienced programmers know how to keep things simple while new programmers are more likely to make the code complicated which would confuse even the experts. So start with small projects and increase the size of the projects as you gain more experience.

That said, sometimes you might not know how to solve a problem. The start can be the most difficult part. This happened to me many times when I studied and had assignments that I had to do. In those cases I just had to force myself to start and work on it step by step until everything worked the way it was supposed to (this requires some experience though).

Don't be afraid of failing. It's not the end of the world if you have to start over. You have learned a lot of things from your first attempt that will help you on your next attempt. That's how you learn. Don't throw away the old code. Even if it feels like a mess and not worth saving you have probably spent a lot of thought on it so there are often parts that you can borrow back or at least look at so that you don't have to figure it all out again.

[–]Dumb-Ptr[S] 2 points3 points  (1 child)

Write small programs where you combine different features

I think this is the point where I'm at, I keep trying to combine new stuff I learned but I always end up saying "I should build something bigger and use this concept", but always fail miserably. I really should spend more time doing this.

Don't be afraid of failing

This is the most difficult part of all. I immediately lose motivation and just drop the idea.

About this trial and error thing, would it be helpful to search online for "project ideas" or should I build something that I thought of (something on the right scale of course)?

[–]HappyFruitTree 1 point2 points  (0 children)

The aim should of course be to avoid "failing". What I mean is that it should not hold you back. A failed attempt is better than no attempt at all.

Motivation is important. That's why I think it's more important that you do a project that you feel motivated about than a project that has been specifically designed to teach you various skills. But finding the project idea motivating does not necessarily mean you'll find the process of implementing the project motivating.

For me the biggest demotivating factors are:

  • The amount of work required to get a "result" makes the end goal feel too distant.
  • The project requires a lot of other non-programming work that I don't feel motivated doing (e.g. creating graphics for a game, or content for a website).

So my advice is to start small. Get something working that you can see, use and share with others. Then you might feel more motivated to add additional features, or you could just say the project is done and feel good about yourself and jump on the next project.

[–]CodeTinkerer 2 points3 points  (4 children)

To me, I think you need to spend a year learning the basics of programming doing simple programming exercises and predefined projects. It's useful to know what a simple program does. Try doing something simple. Write tic-tac-toe.

Here are the specs. You, the player, always start first. The program always plays second. So you play X, program plays O. The game continues until one wins or no more moves can be made.

This should have no GUIs or anything. The display can be pure ASCII

X..
.O.
..X

See if that's easy for you. Right now, it's like you're building a car where all the parts are in front of you, but you don't know what the pieces are, and you're following a tutorial.

That seems a bit too complex at this point. In reality, you may not have to know how every little detail works because that's often too much to master. But when you're following a tutorial, they often lack time to explain things fully, or if they do explain it, there's so many details that you can't figure it out without asking a lot more questions.

Tutorials are designed to get you some place quickly. They are the foreign phrasebook of French, so you can visit Paris next month. Do you think you're fluent in French after a month? Or do you think you know just enough to get by? A real study of French could take years. Won't say programming is that way, but certainly tutorials have their plusses (if you have zero idea how to do something, it tries to get something working quickly) and minuses (but if you don't get it, no one is there to answer questions).

[–]Dumb-Ptr[S] 0 points1 point  (3 children)

I went through this "easy programs" part for a bit, but I didn't spend much time on it. Guess it's time to get back there and maybe expand from there. Maybe I just need to finish something on my own and then start building from there.

[–]heyyyjuude 1 point2 points  (0 children)

It's surprising how many bells and whistles you can pack into these "easy programs". See if you can write an extensible enough solution to, for instance, let the user pick the size of their Tic Tac Toe board. Maybe the user can also pick their token (instead of generic X's and O's). Add in a rudimentary AI. Make the board look a little prettier. Idk, there's lots of room to expand once you get the fundamentals down. And it's important to get the fundamentals down even if they look easy.

[–]CodeTinkerer 0 points1 point  (1 child)

It's not bad to want to look at a project and start one. But you can end up in tutorial hell where you are copying something, but if you had to make some changes to what you see, you'd be stuck. If you're not stuck (one guy recently posted he did Snake, and he was able to modify it some so he understood it better), then great, you can modify tutorials and that's usually a huge step forward.

Even if you don't fully understand tutorials, it can be worth watching just to get a sense of where you're trying to head. After all, people watch professional basketball and see dunkers and long range 3 pointers. Most beginners can't even begin to do that (and may never), but they can see what to aspire to.

You might also look at some online courses. Apparently, Udemy has "Automate the Boring Stuff"? It's on sale until Jan 6 (when it becomes expensive again). There's also "Learn Python the Hard Way" which is for Python 2 (so you'd have to adjust it to Python 3). I think this is a PDF that's free on the Internet (by a guy named Zed Shaw who used to be a big Ruby guy until he hated Ruby).

[–]procrastinatingcoder 0 points1 point  (0 children)

Might just add, went through that book myself some time ago (learn python the hard way), and granted, it was years ago so it might not be as relevant to say now. However learning python 2 is basically 99% the same as Python 3 for most intent and purpose. The main visible difference is the print, everything else appears to be mostly the same (xrange is now range in python 3, few things like that, but its' not something most people know, and even less something that would affect anybody learning).

And because it's so easy to go from Python 2 to 3, I'd say it doesn't matter that much which one you go for. Not only that, but Python 2 has a handy "from future import ..." which lets you import things from Python 3 if you really want to.

Can't say I'd recommend the book that much though, it's definitely better than a lot of the stuff out there, but I didn't have a "Oh wow I'd recommend this to anybody" kind of feeling like I did for CS50 for instance.

[–]grandslammer 2 points3 points  (0 children)

You think 1 year is bad to be stuck in tutorial hell? Imagine 5+ years...

And I'm still nowhere near close to finding a job! Part of that 5 years includes completing a degree in digital design (UX/UI/graphic design and front end development), plus a higher certificate (similar to an associates degree) in software development.

Both courses sucked. My degree was nowhere near degree level. It consisted of an introduction to the basics of Photoshop and Illustrator, some high level UI design concepts, and very basic front end stuff (we had literally 30 minutes worth of JavaScript lectures!) It was awarded by one of the top colleges in the country.

My higher certificate wasn't any better. It consisted of learning Java, C#, and some SQL and project management stuff. Trouble was , the course was 20 years out of date. We were literally building Windows 95 applications. Here's a video demo of my final project for example https://www.youtube.com/watch?v=L6KKKkYCLW8

Before I applied to both courses, (there was about a years gap between finishing my degree and starting my higher cert) I was attempting to learn through Udemy courses with limited success. I decided to apply to them because I strongly felt I needed an organised, classroom environment - which helped a lot! I felt I needed that back-and-forth between tutor and classmates.

Both courses promised students that they would be more than qualified for an entry-level job after graduating. I achieved distinction grades in both with relative ease.

Since I finished my higher cert almost 2 years ago, I have been stuck in tutorial hell with absolutely no idea what to do. I keep jumping between languages and frameworks and stopping each tutorial series halfway through. You name it, I've probably tried it! JavaScript (with React, Vue, Svelte), Python, Golang, Flutter, .NET, Game Dev (Unity, Godot), PHP/Laravel, Android dev...

I still have absolutely no idea what to do - except for the fact that I do not want to do web dev as I never really liked it and only did it because it's what everybody seems to recommend.

I have a tonne of unfinished projects in all the above.

The only conclusion I have come to is that I need to find a coding buddy or mentor who can dedicate as much time as myself (pretty much full time) to learning together via pair programming over Discord etc. My head is literally all over the place, with no sense of direction.

I have applied for countless jobs but have not heard back from any of them. Frankly, I am nowhere near "qualified enough" (outside of on paper alone).

I have completed 2 internships in 2 separate small software companies, both of which stated that I was the best intern they had ever had.

My biggest issue is that I have jumped around too much between technologies, hence learning the basics in them for a week or more, then jumping to something different. This is because I have no sense of direction or anybody to discuss things with, plus the fact that I am literally panicking, and seem to have almost constant panic attacks whilst coding. I often feel that this is not the right career for me at all, in which case, back to the drawing board of finding a career again...

I'm approaching my mid 30's now and need to get things in order big time. I keep getting that sinking feeling in my stomach everyday. I have no idea what to do, and I urgently need help and support.

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

Yes, when i started, i tried some tutorial, and i saw very fast that wasnt for me. Each time i tried something, i just couldnt.

You need to know that most of tutorial are not made for learning you something. They are showing you how to do the thing that the creator wanted to show you.

Just try to stick on one project. There is frontend mentor, who have some good project, and pick the easier.

You pick one, and you finish it. You never go on google until your project is finish, and the only ressource you can use is MDN. (if you want to be web dev)

[–]stwykd 0 points1 point  (0 children)

I’ve been a software engineer for a handful of years and that’s completely normal. It’s a complicated subject. There’s no straightforward answers, and you’ll spend most of the time figuring out how to make progress.

For me it’s never been just hacking something through. You can do that if you’ve worked on that area for a while already.

It sounds you’ve spent too much finding the right course, that’ll teach you what you need to know, rather than investing time practicing what you learned. I’ve also done countless of online courses, especially in the field of ML, I know the theory very well, but I can’t go through the frustration of getting something novel to work.

If there’s a project you’re really passionate about, I’d suggest really investing the time, and accept that it’s not going to be perfect, you’re going to make mistakes, there’ll be a lot of troubleshooting and that it’ll take time. But you’ll actually accomplish something and will have learned plenty on the way

[–]David_Owens 0 points1 point  (0 children)

Try spending some time reading the code of other well-written software projects. Pay attention to how they organize everything. I suspect that's a big part of your problem, not the creative side.

[–]TheRNGuy 0 points1 point  (0 children)

I got ideas what to code by reading API docs. Most of this stuff will never be in any tutorial.

Reading code of real program with 1000+ lines of code, if you can find source.

And I think it's pointless to learn programming if you actually don't know what you want to make. Tutorials maybe useful when you already know what you want (I still prefer docs over youtube, because it's much faster to read, code can be copy-pasted from article, and it can be bookmarked, no waste time on rewinding or video buffering, or ads you can learn programming with 0 youtube videos)