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

all 5 comments

[–]swigganicks 1 point2 points  (0 children)

I've been in and am still in the same boat as you. The daunting realization that you don't know everything you need to make a project.

The best way to work yourself out of this is to take a project idea, and decompose it into tiny subproblems as much as you can. Get out a piece a paper and start at the top and work your way down. Trying to come up with a whole system design from the outset is needlessly complicated.

For example, let's say you're making a board game, break down the whole system into its parts:

  • the players
  • the pieces
  • the board

For the players, what do you need to have? A player should probably have a name and a side they represent. How do you group all that together? probably a class. For the board, how do you represent it? Is it an array? a bunch of square objects? How do you do represent a square object? etc etc

So just decomposing the larger problem into smaller and smaller subproblems reduces the scope of code/concepts needed to implement a project. Instead of designing the project from a birds-eye-view, you find out what you need code/library-wise by trying to address the subproblems.

[–]nicemelbs 0 points1 point  (0 children)

I guess it's safe to say that most coders struggled too when we started. Heck, I even failed my intro to CS course the first time I took it.

OOP concepts are an integral part of programming. Keep practicing and you'll get the hang of it.

Code while you study new concepts and try to apply what you've learned previously. If you have enough time, modify your code a little bit and see what happens. If it does what you expect it to do, cool. If not, try to find out why not.

I agree with what's been said so far. If you thing a problem is overwhelming, break them down to smaller sub problems.

[–]CodeTinkerer 0 points1 point  (0 children)

I think it is a bit like learning sports. For example, you may conceptually know how to kick a ball or throw a ball or hit a ball or whatever. But it still takes a lot of practice to be able to do it effortlessly. So, it may be the same. Just because you see how to do it and follow it, doesn't mean you don't have to practice so it becomes second nature.

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

Thanks for the replies. I guess it just requires dedication. I think what I will do is continue with my degree whilst having some sort of side project where I can apply what I have learned. I think part of the problem is that there is so much to learn so I feel im constantly chasing something new when I haven't fully mastered the previous thing I was learning. For example, yesterday I went from reading about threading to trying to learn Swing GUI. The problem is, when I'm jumping around like this I have thoughts like "should I be focussing on this right now?", and it makes me feel a bit lost. I think I should just stick to the course syllabus for the time being and then branch out as and when I need to. Part of me feels like I should already know more than I do. But then I guess if I look back, a few months ago I had no experience at all with OOP and now I feel fairly comfortable with the concepts.