I have the programming basics covered and I am feeling so stuck right now because I feel like investing time to understand CS concepts and at the same time the advice of “work on real projects” keeps blaring over my shoulder. When I sit down to write code I’m paralyzed by the realization that I do not understand how to write high-quality code and as such just building projects would not get me to where I want to be in terms of mastery. SHould I just work on projects and ignore that itch to “know some software engineering theory” like design patterns and the likes. Please help, Zed.
To be good at programming you generally have to study at least these four topics all the time:
- Theory – this is algorithms, math, etc. I don’t get into too much of this in the first book, and only lightly in the second book, mostly because there’s already lots and lots and lots of books that cover this.
- Creativity – This is coming up with new ideas and getting them going.
- Process – Figuring out a method and sequence of steps that will increase your chance of producing a viable piece of software from nothing.
- Quality – Making sure that what you wrote actually works well.
What you’re basically asking (if I reverse it on you) is, “How do I avoid practicing and studying three of these so I can only do one of these?” It really doesn’t matter which one you try to avoid, because you’ll then need the other three to do pretty much anything. The key is to come up with a plan that actually studies all of these, and to be efficient about it. For example, coming up with a project that creates a library of data structures you implement in Python and then doing it using TDD only. Done, you just did all 4 to pull that off.
More importantly though: Why are you so down on yourself? There’s no reason to be stressed, blue, worried, burned out, stuck, paralyzed or anything like that. It’s just a matter of sitting down to attempt something and working on it, even if it’s just a copy of something someone else did. In fact, you could spend a year or two just copying other software and never do anything else and that’d be just fine. If people are “blaring” at you to do X or Y or Z then they’re ignoring all the above things, and my little list here isn’t even the whole list. It’s just the four things beginners suck at (well, all programmers suck at it).
And, I’ll just pimp my Learn More Python Book one more time, as this is the whole reason I wrote it. It’s literally a ton of little projects covering all these things.
Thank you, Zed.
“The key is to come up with a plan that actually studies all of these, and to be efficient about it” - I can’t seem to come up with a definite one thus far. Any ideas?
“It’s just a matter of sitting down to attempt something and working on it, even if it’s just a copy of something someone else did” - I’m having a hard time finding a project with the right demand of theoretical knowledge and hacking skills, that is neither beyond me nor too low-hanging.
You know what, can you put me on an actual diet covering these things, Like hey dude read these chapters from this book give me feedback, hack that code, give feedback. It can be non-blocking so it doesn’t eat your time or anything, we can use this thread too.
What do you think?
That’s what this book is:
A complete plan that teaches the basics of a lot of topics while working on Process, Quality, and Creativity.
Loved your answer there.
When I get down on myself about how little I know, I often remember little pieces of advice you’ve given (mostly about, ‘just do it’) and that almost always helps.
Thanks again for your generous contributions to us newbs.
Well thanks @LaruelVW. I’m glad little things like that are helping.