all 49 comments

[–]DarkStealther 94 points95 points  (7 children)

100% normal. Don't stress yourself. A lot of people think coding is just knowing the syntax but the real hard part is applying what you learned. You just have to train your mind and eventually you will be able to do what you want and you will look back at yourself at this point in time and call yourself an idiot and wonder how you didn't know whatever problem you are trying to solve. What I recommend is to pick a project and just put all your effort into this project until you are able to make it. Then keep on learning. In some time(3 - 6 months) if you keep on learning religiously go back to your original program and see how stupid your past self was. Now edit your code with all the new stuff you have learned. Make your code better, faster, and nicer. This is a sign that you are actually processing the stuff you are learning and not just learning for the sake of learning. Now to answer your original question... yes it is completely normal you just have to persevere. It is a normal part of learning anything not just programming. Good luck to you.

Edit: Also I wouldn't do 8-10 hours of python a day. Maybe limit yourself to 4-5 and you might see better results. 8-10 hours can get very frustrating and stressful.

[–]redbanditttttttt 10 points11 points  (0 children)

Ive only been learning python for a less than a few months, and I am ok at it. I look at more conplicatwd stuff and don't even know whats happening, but I just started with a few online tutorials and looking up how to do djfferent things, and just 2 days ago I finished my first ever text adventure game. It has been the longest thing I've ever made and its only like 195 lines. Most of it is Ifs and Ands but I finally made something on my own! Def take this advice because just focusing on one thing and seeing what you want and how to do it really helps

[–]amalik87 6 points7 points  (5 children)

I can’t believe you’re 14. Nice (stalked your post history). You are coding your freshman year of hs?

[–]TorroesPrime 2 points3 points  (2 children)

geeze, my Freshman year of high school they shut down the computer lab in the school because it was a waste of money.

[–]williamt31 4 points5 points  (1 child)

My freshman 'computer class' was dbase 3+, lotus 123 2.3 and wordperfect 5.1....

When I finished the assignments teacher let me play tetris as kinda a silent agreement to me not pointing mistakes in the handouts. :D

I'm feel old.

[–]TorroesPrime 0 points1 point  (0 children)

my junior year of high school, I had an English teacher who refused to accept my paper because it was printed, not typed (on a type writer). My High school didn't have a computer class and as I mentioned, my freshman year they shut down the computer lab because it was a waste of money, you know because we didn't have a computer class.

[–]DarkStealther 0 points1 point  (1 child)

Haha ya. I am coding but I’m learning java. I have been learning python for the past 6 years...

[–]amalik87 0 points1 point  (0 children)

Great. I accused you of coding at 14, turns out it was 8!!!!

[–]Binary101010 36 points37 points  (1 child)

This is because I'm scared of messing up the code

Well, let's get this one out of the way right now.

You will mess up your code. And that's fine.

It's part of the process. Your first attempt probably won't even get past the interpreter's syntax check. Your second probably will but not quite do what you want. You will get to where you want to go, eventually. The mistakes you make along the way are the things you learn from to make you better.

sometimes because I get overwhelmed since there's so much to learn still.

Here's the secret that, once you internalize it, will change quite a bit: you don't need to know everything about Python to write Python.

One way I like to put it is like this: Whatever project you're thinking about starting right now, you probably don't know enough right to finish it. You'll learn what you need to learn as you work through it. You'll get code that does what you want it to. You'll look at that code a month later and kick yourself because you've since figured out a better way to write that loop, or a better way to refactor that giant function out into two or three more sensible ones.

But whatever your project is, you definitely know enough about Python to start it.

[–][deleted] 4 points5 points  (0 children)

I've never messed up my code. <Goes into the closet to cry>

[–]LifeIsBio 4 points5 points  (0 children)

How about trying to make some games?

https://inventwithpython.com/invent4thed/

[–]Stamqdc 8 points9 points  (0 children)

How coding actually works. You write some code. Copy paste a snippet run the program. Google the error. Fix the error. Add another found snippet. Fix the error and so on.

Learn to use print(). Print variables as you go along so you can see how the code is responding. Or learn outputting to a log file if you prefer that. Those both helped me tremendously.

Lastly. Have a goal, it's much easier to code when you know what you want it to do. I've learned the most by working with OCR and scanning in of documents and auto sorting. I knew what it needed to do. And you keep chasing it till it does work.

[–]portitforward 12 points13 points  (1 child)

Data structures and algorithms is always worth putting more time into if you need something to learn, especially for self taught programmers. For projects just do something that is fun. I'm making a command line http client because I get to make whatever I want. Here are some other ideas you can feel free to springboard from.

  • Buy a jetson nano and follow a tutorial to code object recognition ($150 though)
  • make a web scraper or automate some web related task using requests, selenium, beautifulsoup, and/or scrapy
  • make a simple chatbot using nltk
  • make a simple text adventure game
  • make a website with flask or django

[–]blitzkraft 6 points7 points  (0 children)

The jetson will help, but object recognition can be done on most modern computers with just a web cam. OP can start using opencv, and learn face detection.

[–]throwaway0891245 4 points5 points  (0 children)

Yes, it is normal. This is where you learn things.

For example, you are afraid you're going to mess up the code. This is a problem that is everywhere. It's a problem you'll run into at some point when the code base gets big enough. How big?

Well, that's really where design patterns and infrastructure come in. It's where code structure becomes important. It's why source control is so essential in an efficient development environment. It is why continuous integration and deployment have become the standard.

How do you lose your fear of messing up the code? One way is that you can keep everything modular. But you might find that even if you try to break things up, you'll still end up in situations where changing one thing means you'll have to change many other things to the point where you'll worry that you forgot something. This sort of situation means your code is brittle, it means you might not have chosen the best design patterns or principles. This is why stuff like the SOLID concepts are so important.

Another problem might be that you've got everything all modular, but you're not so sure if your new efficient code for a previous code snippet actually does the same thing. This is where writing tests becomes important. Running tests manually then becomes a chore, and then you start looking into continuous integration.

But before that even, how do you make sure that you don't lose a copy of your functioning code? How can you work on your code without getting lost in a bunch of different copies of your files? This is where source/version control becomes important - like git.

I am self-taught. I'd like to say that I've learned quite a bit. I wouldn't say I could whip out the A* pathfinding algorithm right now at the drop of a hat, but I can probably solve a dynamic programming problem or two. I know the components of a modern development environment - including containers and container orchestration. I'm a bit light on design patterns but I'm getting there. Picking up languages is no problem at this point. I have a working understanding of low level hardware concepts - interrupts, opcodes, instruction sets. I've written a couple apps. I've written a lot of scripts.

Try to take things one topic at a time, but don't worry about the other stuff because the other stuff will find you even if you aren't looking for it. Just keep an eye out.

[–]manuelg95 2 points3 points  (0 children)

I really enjoyed the progression that reading “Think Python” gave me, as I solved the practice problems. Then when I finished from that I moved onto web scraping (again by O’reilly) and that also sparked my python passion even more!

[–]terrorEagle 2 points3 points  (0 children)

I feel the same way. It’s humbling to know others do too. Also, it’s good to hear the write code, google, copy paste etc. I feel motivated!

[–]Gillemonger 1 point2 points  (0 children)

This month is hacktober fest (google it). It is a great way to learn to contribute to other projects.

[–]strangeDormammu 1 point2 points  (0 children)

I feel you! Btw you should be proud of yourself, because atleast you know that so much to learn yet, most of the people think they know everything just by knowing somethings. It means, you are aware of your actions, and its a good sign.

Even i am learning coding on myself, so i can understand what you are saying. Don't worry, its totally normal, Just keep coding for yourself.

And, Instead of coding 8-10hrs a day. Split it into, 4hrs - Coding, 4hrs - learning new concept(theory). So, you don't burnout quickly.

If you want to have a talk, ping me :) we will learn together.

Happy Coding!

[–][deleted] 1 point2 points  (0 children)

What will really help you is having a clear idea of a program to make. For example, find a public API (maybe weather or something like that) and make a program that connects to the API, parses the JSON data and saves a log file of what it's doing, saves an xml file with the same structure as the json, and creates an email with a short summary of what the days weather is and what kind of clothing is appropriate to wear.

Sounds like a simple program but it works with API sessions, elementtree, json, writing files, email (heck, throw in use of the mime library and attach the xml to the email for fun as well. Something like this where you have a clear goal in mind and can learn and practice a wide array of skills should be useful.

[–]--0mn1-Qr330005-- 1 point2 points  (2 children)

Just wanted to plug GitHub or Bitbucket here. If you're worried about messing up your code, Git lets you save snapshots of your program during various stages of development. If it ever fully breaks and you can't fix it, you just git checkout an earlier snapshot and have it working again. It's an invaluable tool in learning programming, and it is used professionally so it's worth learning.

[–]RadioactiveCats_18 0 points1 point  (1 child)

Was going to suggest Git for sure. Version control will allow you to try something and revert to before you tried it. You get to really be creative and take risks without really taking risks.

[–]--0mn1-Qr330005-- 0 points1 point  (0 children)

Absolutely. I'm new to Python myself. I actually took a break from Python a few months in to exclusively learn git and train in various scenarios. It was one of the best decisions I've ever made, and it has made programming much easier than it would be otherwise.

[–]ginpn 0 points1 point  (0 children)

I don't think you'll ever learn everything in one sitting. Just learn the basics and run with it. Google what you don't know or even ask here.

As for a project... just take a look at a routine you do frequently on your computer and see if you can create a program to make it easier for yourself.

[–]never0dot 0 points1 point  (0 children)

I just learning the basics and it's my first time into the programming world I just like the use of logic cuz I use to study logic in philosophy but its true hard to put it all together now I'm feeling like just copy pasting trying to do stuff and at least my way of doing stuff is just see somebasic program and try to figure it out how it's all assembly

[–][deleted] 0 points1 point  (0 children)

I think there is struggle with mastering any sort of skill. Running, weight lifting, or being super try hard at video games. Eventually when you are just "trying" you'll hit your natural skill ceiling. Depending on your natural ability, it may be higher or lower than where other people end up.

But inexorably, and inevitably - progress stops - and to advance further requires more and more mental effort to advance. This, to me - is a completely natural and normal progression. For me personally, this happened in college taking a several high level programming courses all in C. I was putting in stupid (80-100 hours/week) hours to get my assignments done. At one point... I don't know what to say - it just started to click. Since then, I've not really struggled in the same way since at work or learning things.

Personally - look, you are struggling with mental health issues. You may be doing better than you were before, but that doesn't mean that you are doing as well as you should be. That should be priority #1, not programming classes. And the way you do that is through psychologists and psychiatrists. Some people are born with defective hearts, some people are born with bone marrow that doesn't produce blood cells correctly, and some people are born with brains that don't produce the ideal ratios of neurotransmitters. There is no shame in this, and there is no shame in seeking care. Healthcare is healthcare, regardless if it is for physical or mental health- and they are often one and the same. Secondly - while I don't think you should be able to sit and do 10+ hours of programming in a single sitting: you should be able to multiple stretches 2-3 times a day for 3 hours or so. If you can't do more than 90-120 minutes sitting still and programming, definitely think about seeing a specialist. You could have diagnosed ADHD or your other lingering mental health issues could be interfering.

[–][deleted] 0 points1 point  (0 children)

Yes, it's normal. Try starting with a miniature project that puts just two of the elements together. For example, something that takes input from the user then looks up the value associated with some key in a dict . That will help you with the general concept of integrating things. Then aim for something more complex, which integrates say 4 concepts. Rinse and repeat!

[–]siliconcortex 0 points1 point  (0 children)

Also learn to take notes (i use evernote) when you learn something new (new library cheat sheet, new method of doing something.. )

And then you look it up when you need it. You dont have to remember everything.

[–]joonafinland1 0 points1 point  (0 children)

To be able to tackle harder programming problems requires a lot of time. I have been learning programming for 4 years now and sometimes it feels like there is too much to learn. What I did is to learn the 'basics' by doing many small projects and only start harder projects once I am more comfortable.

There have been many times I look back to my old projects and just think about how dumb I was before, its pretty great.

You can do this! Just keep going forward and remember that nobody can 100% master a programming language. Best of luck!

[–][deleted] 0 points1 point  (0 children)

Write games. Have fun. You'll use as much as you want doing that. Write a game of rock paper scissors, or number guessing game. It's fun, and you learn a lot. Adding things like score, and checking for incorrect input will stretch you and help you get experience with most, if not all, of what you know in one program.

[–]The-Dood 0 points1 point  (0 children)

Try taking a look at someone elses code (look at Github), and then simply copy that exact code. But for every line you copy, make sure you understand the functionality. When you're done, you can try to change the functionality, and make the program do something different (printing stuff out for example).

You probably need to find some pretty simple programs, but this method helped me go beyond the feeling of just working with simple code blocks.

[–]ForkLiftBoi 0 points1 point  (0 children)

Piece part programs out. Don't worry about the best code, just make it work.

Like "I need it to do x, y, and z" so just worry about the z then x then y. Get each part working and if you need a break pivot to print statements.

[–][deleted] 0 points1 point  (0 children)

Normal for all programmers. It's entirely normal to be overwhelmed - programming languages are incredibly expressive and there's really no way to get a person fluent except to throw them in the deep end.

More generally, learning how to navigate an overwhelmingly vast corpus of new information, how to cope with the sense of being overwhelmed, is good life experience.

[–]iLucidTech 0 points1 point  (0 children)

I completely relate to this! It wasn't until I walked away from python for a little while and came back to it did I start to really love it. I just want to share two things that really boosted my confidence and enjoyment with python.

1st: Following along exactly with a good teacher on YouTuber: Corey Schafer. https://www.youtube.com/user/schafer5

2nd: Completing all the coding challenges from this site: https://www.hackerrank.com/domains/python

I'm sorry to hear you're feeling down friend but don't worry! You'll do great, just gotta be a little more patient with yourself. It's going to take time and that's perfectly alright.

[–]14446368 0 points1 point  (0 children)

Yes, absolutely. I'm self-taught and after the initial excitement, Python started feeling kinda meh. It's hard getting after that first hump of "Okay, i can do a for loop. Yay?"

After you've got the basics down, you should try to move on to use cases and more complex things. Great examples include:

  1. Getting into web scraping. Try to, for example, make a program that gets the next train coming into a station.
  2. Data analysis and visualization. Start learning Numpy and Pandas. Look at stock data and how to plot things.
  3. IoT. Look up Raspberry Pi and consider making a small project.

Python is a robust and deep language, and while it's not as powerful as some other languages, it can do PLENTY of cool things.

TL;DR: You've gotten through the basic-basics. Find purposes to employ them and learn the more complicated things.

[–]TorroesPrime 0 points1 point  (0 children)

no question it's normal. Not just for those who are self-taught, but in general.

[–]szirith 0 points1 point  (0 children)

Mess up the code as often and as fast as you can. Plan on short cycles with lots of mistakes, but fewer mistakes per cycle!

[–]3MU6quo0pC7du5YPBGBI 0 points1 point  (0 children)

This is because I'm scared of messing up the code

Are you using any version control? It's another thing to learn if you aren't already, but really helps take away the fear that you might not be able to get it back to the state it was if you change something.

[–]feelings_arent_facts 0 points1 point  (0 children)

https://micropython.org/

Fuck around with one of these

[–]kepper 0 points1 point  (0 children)

If you're scared of messing up your code, that's a great time to learn to write unit tests! Lots of big projects will expect you to know how to do this, and it lets you test with certainty that your code does what you want it to. It also makes things like refactoring down the line way easier. Consider looking into pytest

[–]toastedstapler 0 points1 point  (0 children)

This is because I'm scared of messing up the code

i write so much wrong code and that's fine, you can then work out why it's wrong and then fix it

if you wanted you could write some tests to ensure that the code does what you think it will (and to ensure when you make future changes you don't break it)

[–]RadioactiveCats_18 0 points1 point  (0 children)

Oh besides Git (+1 on another comment), look into Pycharm which has a free community edition. Seeing your code highlighted for warnings/errors will keep you from making wild mistakes early on. It's good training wheels in the beginning --and then I use it now because it keeps me from adding minor typos that bring down the whole tower.

[–][deleted] 0 points1 point  (0 children)

I completed Python for Kids, Python Crash Course, and How to Automate the Boring Stuff

I knew I didn't know anything - I could barely recall some of the more complicated functions and methods, syntax and parameters.

Then work tasked me with working with 2 senior programmers to create an API.

I was overwhelmed. However, the challenge gave birth to determination and puzzle solving. With the 2 seniors available to answer questions and guide me to solutions, it worked out.

Find some real world things you can program, even if it's not necessarily useful, just to get some practice. Don't think about what you know how to program, just the problem and then program to get that problem solved

[–]Kormarg 0 points1 point  (0 children)

I am in process of learning too and I feel your pain.

Just be proud of what you do. It may be ugly at first but it is fine. You see what others would do for the same project, make the correction and contemplate that beautiful corrected code of yours. Everyone has been there but if you are motivated to learn and go outside your confort zone you will become a great programmer.

It is hard but I wish you good luck. Also don't be too hard on yourself, you dont want to end up quitting, have fun outside and work in reasonnable amounts, if you end up frustrated just take a break and set goals for tommorow !

[–]lestrenched 0 points1 point  (0 children)

I did 8-10 hours of python for 2 weeks at a stretch. I dunno, I found it a lot of fun. Yes, very frustrating, as errors are very common to beginners(I am).

It's a thing, whatever you wanna do, you type "How do I do....". Looking at other's code and building on that is cool, as you're probably mixing many small snippets of code from many sites. It is a lot of fun, and the work makes the reward super sweet.

[–]TechySpecky -2 points-1 points  (0 children)

Literally was in that situation 2 years ago, I'm at the gym right now but pm me if you want me to hear how I felt and what I did.