Alright, so first let me talk about a couple things in your response that bother me (not about you, but the situation):
- “And I was doing a CSS tutorial on moving and placing objects.” Ok, stop trying to go to this school. CSS is not programming and it’s a bad teacher that has you doing that to get into a coding school. Just skip them, and that means it is entirely not you it’s them.
- “Often times, I’ll ask for help from a fellow developer, and he/she will tell me I’m not prepared for this basic material, or if I don’t understand it, I should give up trying to code.” Ok those people are just being jerks and you should stop listening to them. Obviously you don’t know the material yet, but saying you should just give up is just lazy and mean. Again, it’s not you it’s them.
- “My goal is to get into a bootcamp, one that you pay after you get a job, that way I don’t lose my money.” These bootcamps will steal money from your paycheck for as long as they can’t, just avoid them. I’ll give you suggestions on alternatives in a bit.
Now, I’m not trying to absolve you of all responsibility, but I am trying to point out that you are either listening to the wrong people or giving yourself horribly unrealistic expectations.
I’m going to avoid being your psychologist and simply point out something that perfectionists just seem to not understand about creating something:
Every single thing that is created by any top awesome professional looks like total garbage at first.
I have no idea why perfectionists think that they shouldn’t be making any mistakes while they work, but it’s completely contrary to the way every single creator of anything works. Whether I’m painting, writing some music, writing a book, coding, it doesn’t matter. I always start off with a rough unprofessional piece of garbage and then use my skills to maybe turn it into something professional.
So, when you make that first mistake in the beginning and then beat yourself up for not being perfect, you’re simply just not understanding how to create something. You actually did something good, which is you found a mistake in the beginning where it’s easy to fix. Why would you beat yourself up over that? That’s awesome. It’s better than getting to the end and realizing it’s totally wrong.
Other than that, you need to wrestle this need to be perfect to the ground and try to stop it. Programming is a job where you spend ALLLLLLLL DAAAAAYYYY BEING WRONG. Wrong. Wrong. Wrong. Wrong. Wrong. All day. The computer is brutal. It does not care about your feelings, it just says you’re wrong. Not only that, but it’s wrong many times for arbitrary reasons because some other idiot decided that this is how you’ll do it so you have to just suck it up and play along.
If every time you’re wrong you fold and have a meltdown then you’ll never make it. What you need to do is beat this into submission. Every time that feeling comes up take a break, and tell yourself it’s a totally false garbage feeling or thought to have. It is just wrong. You are supposed to make mistakes, and lots and lots of them.
Another thing that comes up is people will do this:
- Work on a complex challenge for about 30 minutes without any study.
- After this measly little bit of time they see that they don’t magically know the answer.
- They then flip out and proclaim “I’ll never be a programmer!”
I’ve worked for decades with people of all ranges and skills, and I don’t know a single programmer ever who figures out a complex problem they’ve never seen before in 30 minutes. Everyone I talk to says they take about 2-3 months to get up to speed on a new code base. TWO TO THREE MONTHS. And these are experienced veterans. How is it possible that your totally untrained self is going to get code in 30 minutes when a top pro take 3 MONTHS?
The other way this one comes out is people who think they should be able to figure code out “naturally”, which usually translates into “staring at the code like in a movie and it flying around my head and I magically see the answer then hack NASA and make all the money”. Nobody competent in the field of programming just stares at code. They study it, alter it, diagnose it, draw up diagrams, research papers, read on the internet, google stack overflow, and do anything they can to take the code apart and understand it. Again, why should you have some magic brain that can see flying magic code when every programmer on the planet doesn’t do this?
The gist of all this is: Your perception of what you should be able to do is way out of whack. You have to work and build up your understanding, and none of this is magic knowledge. In fact I do know real actual math geniuses who suck horribly at code.
Chances are you might have ADHD, so maybe go talk to someone, but if not then there’s a good chance you just avoid doing the work you need to do so that you can’t face failure. The best advice then is to use the Pomodoro Technique to work in small chunks and build up your tolerance, and to get better and embracing failure. One good way to embrace failure is to call everything you do a “study”. If you’re sitting down and treating my exercises like they’re fully fledged professional programs you’ll sell then you are doing it totally wrong. You should approach it like it’s a study. An experiment. Something that is supposed to be garbage.
I bet if you wrote down how much time you spent on social media or TV or video games you could find 3 hours a day. If that’s the case, then shutting down all your social media and selling your TV might be the only way to stop it. However, I have another suggestion that might be more practical:
Look into local community colleges and try to study there. A class forces you to show up and do the work. If you can sign up for classes and make sure you stay on campus to do all your work, then you’ll be forced to rework your life to make it happen. Also community colleges are usually inexpensive and have more night classes.
Now, if when I say “community college” you get all uppity and think that’s beneath you then I’m going to refer you back to your Perfectionism and tell you to work on that arrogance.
If you are starting at the top, typing everything in, and then expecting it to run then you have not been watching my videos at all. Even when I have the code right in front of me, and even though I’ve typed it in hundreds of times, and could probably do it from memory, I am only typing in a small amount at a time before checking it. Nobody codes like this. Everyone builds code up gradually, checks it as they go, and cleans up or even deletes code as they learn more.
From now on, when you code, I want you to do this:
- Write a little bit of code and check that it runs.
- If you try to write a whole lot of code and you have an error, then you are now required to delete your file and start over. DELETE THE GARBAGE. This is the only way to make you work in chunks.
- Keep track of the mistakes you make in a notebook and then devise practice sessions or check lists to reduce them in the future. Did you see how I said “reduce” rather than “avoid”? You will never prevent all bugs. Your job is to reduce the probability as much as you can, but accept that you’ll always have some defects.
You’ll think this is insane because you’ll slip up one day after 2 hours of typing in 300 lines of Python garbage and you’ll swear you can fix it. But I’m telling you, all that work is wasted work because you weren’t being conscious of what you did as you did it. It’s better to just toss it out and start over the right way than to try to beat a dead rotting horse until it works.
This DELETE THE GARBAGE mantra also applies to first attempts at code you write. If you try to make something and you create some garbage, it’s better to throw it out and try again. The reason this works is a lot of programming is learning about a problem, so none of that first attempt work is wasted. You learned something and then your second or third attempt will probably be better simply because you learned something.
Now, I don’t want you to take any of this to mean I know anything about you as a person. I’m just making guesses based on the kinds of problems I see people having. The hardest work you have ahead of you is to start getting ahold of that Perfectionism and not let it get in your way. If you can start accepting the fact that you and nobody else is perfect you’ll do a lot better at everything. After that it’s just a matter of doing the work slowly and building your understanding of what’s going on.
I hope that helps.
One more thing I need to add. I believe the difference in mindset between me and you is possibly this:
You believe that your brain should be a perfect machine that understands the world perfectly as long as it’s according to reason. I call this “Cartesian Thinking”, from Descartes who believed that–while what you perceive may be flawed—your logic and reason can be perfect. People like this assume that what they think is correct, and when they’re presented with an obvious example where that’s totally wrong, tend to collapse.
I believe that Descartes had no idea how the brain really works, and that my brain constantly lies to me, even in my own thoughts and logic. Memories are flawed, perceptions are altered by these flawed memories, and emotions change how you do almost everything. I assume that my brain is severely flawed and gets everything wrong, so I have to check it or accept it. In code I check it. In painting I accept it (and kind of like it).
I think additionally the Cartesian Thinking is anti humanity and hateful of what makes us human. I believe that my way of thinking embraces what it means to be human and celebrates it (even if I need to constrain that so I don’t blow up a website with my terrible codes).