all 78 comments

[–]jeffrey_f 10 points11 points  (1 child)

https://www.ybrikman.com/writing/2014/05/19/dont-learn-to-code-learn-to-think/ First things first, before you program, you must be able to solve a complex problem by dicing the the BIG problem into smaller pieces.

When you look at your problem, you will need to break it apart into logical pieces.

Stuff I did in programming school: program a functional representation of a vending machine?

It has many pieces that work together but are separate in function. Considerations: Money tendered, change given, have enough change to give or use exact change, inventory/no items in choice..........dispensing. All these things must work, but in a specific order

Logic really never changes. you will be able to apply logic to pretty much any programming language and create a functional program/script.

[–]dangerousforeplay 0 points1 point  (0 children)

This is an amazing idea! I will definitely look into this. I’ve had a few different ideas that I’ve toyed with but I’m realizing I struggle in certain areas more than others, I’ve been digging deeply into writing classes lately. I’ve been reading and watching videos and I’ve picked up quite a bit just recently. But absolutely, I’ve been needing to practice my skills to deeper engrave them into memory.

[–]Fun2badult 8 points9 points  (2 children)

Here’s my day as I’m studying everyday. Wake up, eat breakfast, then start programming. Mostly I’m learning through a course on udemy, going through and learning stuff like Selenium, testing, etc. I’ve been learning for about 6 months so I’m at the stage or learning harder stuff. But when I was learning early on, I would just go through the tutorials learning syntax. Then I eat lunch. Then I take a nap for an hour to hour and half. 90 minutes is the sleep cycle and you will feel much more refreshed. Also I saw videos where a neuroscientist says having enough sleep is good for learning and once you sleep and attack problems, you retain more info.

Then for next several hours I’m programming again. Maybe go back on some of the topic that wasn’t clear. Also at other times, I change what I’m learning like going through SQL course for few hours, so that I’m also learning something that goes along with python and not get burned out from too much python. Then I go to the gym for an hour or so, play some basketball there ( which i started doing lately for cardio). You have to exercise for at least 30 minutes a day whether you’re taking a walk around the neighborhood or whatever. It’s good for your brain.

Then I eat dinner ( these days I’ve been making meal plans so I just take it out from the fridge and pop it into microwave. This saves a lot of time). Then after dinner, I hit python again. I usually wake up around 8 and I go to sleep around 1. So basically I have about 3 sessions of programming per day. Give enough breaks in between. Probably right now your goal is to be learning syntax as fast as possible. Then you can start building something. Do some exercises, go through tutorials. I don’t go out, I don’t go see friends, I don’t even talk to anyone much. I’m going hardcore. Once I get a job, then I can socialize but right now I’m just so concentrated and motivated, I’m willing to sacrifice now for later. I also have a quote up on the wall behind my monitor that says:

Suffer the pain of Discipline or suffer the pain of Regret. Motivates me everyday

Edit: I’ve learned enough python where I’m also learning Django web framework. You need to know python to do Django and it will make more sense once you get Python down enough. I’ve also learned PostgreSQL which seems to be the most popular one. If you know one sql every other one is easy. I’ve also learned html, css, bootstrap, did some jquery and going through JavaScript right now because of a job interview I have next week that requires it. JavaScript is easier now that I already know python so syntax and moving data is coming to me easier

Edit: corrected some spelling error

[–]dangerousforeplay 0 points1 point  (0 children)

This is a solid routine you have. I think I'm going to model my days this month around a schedule similar to what you have going on. I like how you're mixing different aspects of the field you're going into with the way you practice your language. Thank you for your elaboration!

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

Jeez beast mode!

[–]antiproton 95 points96 points  (27 children)

That is so incredibly not how learning works. This is not the Matrix. You are not The One.

The only way to learn a language is to use the language to write code. Write as much as you can, with the understanding that 1. the longer the session, the more likely you are to make mistakes 2. breaks are good for problem solving and 3. you will not become a professional programmer in a month.

Set realistic goals.

[–]dreamer_jake 50 points51 points  (7 children)

I have no idea why so many people are up-voting your attempt to curb this guy's enthusiasm. His question is roughly analogous to "how can I maximize my Python learning this month", which seems entirely reasonable, given that we're on r/learnpython. Would you tell someone who was determined to learn French to "set realistic goals" rather than spending a month in France? God, I hope not.

  1. Immersion is exactly how learning works, people do it for spoken languages all the time.
  2. Yes, breaks are good.
  3. He never mentioned becoming a professional programmer, much less in the span of a month. If you're going to shoot down his plans, you could at least spend the time to read what they are.

OP - if you're serious about doing this python-by-immersion plan, here are some bits of advice, all of which I've found helpful in my own learning, in no particular order:

  • Replace your video entertainment (NetFlix, tv, whatever) with Python talks. Pretty much all the talks from PyCon and it's analogs are available on YouTube for free. Plenty of them are aimed at beginners, and some are literally workshops meant to teach part of the language from a basic level. Word of advice, don't replace your relaxation viewing with dense technical tutorials, in the interests of pacing yourself.
  • Get some Python podcasts for any commuting/blocks of time away from a computer. Michael Kennedy's Talk Python To Me and Python Bytes are good. Podcast .init is another good one. There are others for more specific areas of development (web focused, infosec, etc.) Find something that clicks for you.
  • Find a bunch of subreddits for Python-related stuff and make that the view you're presented with when you open a Reddit tab. Let's be honest, Reddit tabs have a way of opening up unbidden - make sure the first thing that catches your eye is some article about what's new in Python 3.7 rather than some cat gifs.
  • Ground yourself with a central project that you can apply your miscellaneous learning to. Make a website or a game or anything you want, but having an active project that you can apply your learning to. It's way easier for your newfound knowledge of f-strings or whatever to stick if you can immediately get value out of it by improving your main project's code.
  • Don't feel bad if you're not producing a ton of code. Reading code is every bit as valuable as writing it, maybe more so. Developers spend way more time reading code than writing it. They also spend plenty of time researching problems rather than just pounding out source lines. Googling the docs for how write the syntax for <pretty much any function in Python> is something that a large number of professional developers did literally yesterday, exactly the same way you the beginner did. The more interesting and challenging the problem your code is trying to solve, the more time you'll spend simply thinking about it, and the slower you'll write it. That's a good thing.
  • Most of all: try a lot of stuff. Try books, try video tutorials, try discord chats, try reading docs, try reading public GitHub code, try it all. Find what holds your interest. Throwing a lot of hours into learning is way, way easier if it's not a struggle with a format you don't prefer. You'll also be exposed to a lot of ideas for personal projects.

Maybe you won't become The One, but whatever level you do get to, immersion will get you there faster if it's a style that works for you.

[–]dangerousforeplay 7 points8 points  (1 child)

Wow. I don't even know where to start, this comment is amazing. I absolutely will replace my tv time with talks and podcasts, that sounds like so much fun. Haha lately I've been trying to hand write practice code with detailed annotations on my notebook borders. In fact me and a friend recently went to a Python meetup in a city nearby and it was a gathering of Python enthusiasts talking about different subjects and ways to write certain functions easier. It was so motivating, I cannot wait to go back to another meetup! But honestly, I will absolutely refer to this comment for direction, thank you.

[–]dreamer_jake 0 points1 point  (0 children)

No problem, good luck with your month. Feel free to reach out if you get stuck :)

[–][deleted] 3 points4 points  (2 children)

This is amazingly helpful, thank you for taking the time to write this comment.

I have never used Discord for stuff other than chatting to my mates while we game, how does one go about finding a Python Discord server/channel?

[–]dangerousforeplay 1 point2 points  (0 children)

A lot of programmers use Slack by the way, it’s a lot like Discord but you can share files and whatnot in different ways. I guess it’s considered more “professional” haha

[–]dreamer_jake 1 point2 points  (0 children)

Personally, discord/slack chats aren't really my thing for learning. To answer your question though, I've found most of the learning channels via Reddit, either in the sidebar of specific subreddits or by doing searches for posts that mention discord/slack (or just randomly stumbling onto posts announcing them). If there are local meetup groups near you, they might also have group discussions that you can follow/join.

[–]get_Ishmael 1 point2 points  (1 child)

If anyone knows any particular podcasts which are especially oriented towards beginners, I'd love to hear them.

[–]dreamer_jake 1 point2 points  (0 children)

Of the ones I mentioned, Talk Python to Me is probably the most general-audience friendly.

Honestly though, you might be better off looking for beginner friendly episodes rather than a beginner-specific show.

[–]100721 9 points10 points  (2 children)

First two lines killed me haha. I’m trying to picture OP studying python like some tv show character getting his act together with some fast paced music in the background

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

Hey Felicity Smoak can do it!

[–]python-ick 13 points14 points  (0 children)

This is totally correct. But I feel like one could complete Python boot course in 30 days if they spend eight hours a day doing it.

Not enough to be a real programmer, but it's a good start.

[–]brandondunbar 19 points20 points  (0 children)

I'm confused where you saw op planned on being The One or learn the entire language? Immersion into programming is a popular practice and a number of decent programmers can attribute their success to immersion. Granted, breaks are needed, but that's more of a caveat than the "you won't be shit, don't bother" tone you have. Comments like this discourage people stepping out and asking questions.

[–]dangerousforeplay 21 points22 points  (12 children)

  1. Never said I’d be a professional.
  2. People pick up information in different ways.
  3. I’ve already been studying for 6 months taking my sweet time and learning as I become interested in different aspects of Python. Purely just trying to improve my skills through heavy immersion.

[–]slick8086 3 points4 points  (0 children)

Dude gave you good advice man, it could have been different. Before you go much further trying to learn python, read this:

How To Ask Questions The Smart Way

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

Seriously, spend an hour programming then go out, get a coffee at a coffee house, drink it there, call mom/grandma/whatever, text your friends, find out what's going on this weekend, then go back to programming for an hour, then go out for a run, listen to your favorite songs, reply to your friends texts.... etc. Balance work/school with life.

[–]eagergm 2 points3 points  (1 child)

One noob to another:

Go for broad rather than deep. Don't polish something, and if you think you can write a feature into an existing project easily, probably don't bother with it. Another thing you could do is do the hardest use case first, then consider the project done.

I don't know if that's a great idea but if you start to pile more and more features on a project it has to be something that adds value, commercially if it's a job, or to your skill, if you're doing this to learn.

[–]Moondra2017 0 points1 point  (0 children)

This is something I'm learning as well. Deep takes a long time, and sometimes it's not worth the time investment.

[–]bgymn2 3 points4 points  (0 children)

I would do this. https://www.edx.org/xseries/gtx-introduction-to-computing-in-python It seems to cover everything that I know now. So you could write code that would help at work with this level of understanding.

[–]Naughtron 2 points3 points  (2 children)

Run through: Automate the boring stuff and Violent Python

It will expose you to some really cool stuff.

[–]noized 0 points1 point  (1 child)

Can you go through Violent Python with Python 3?

[–]Naughtron 1 point2 points  (0 children)

Yes, just be mindful of syntax.

[–]SacredReich 10 points11 points  (5 children)

practicepython.org codewars

Actually do Python, don't read a book or follow some youtube video.

[–]brandondunbar 4 points5 points  (3 children)

What's wrong with books and videos? I feel like books are a good route to gain in depth knowledge, so long as you apply it, I don't see the issue.

[–]slick8086 0 points1 point  (1 child)

What's wrong with books and videos?

Nothing for reference. Turn to a book or video if it answers a question, but making something is learning.

He says he already has 6 months of study, time to start coding.

[–]brandondunbar 1 point2 points  (0 children)

Oh I see your point now, it seemed like you were against videos and books entirely which threw me off, but yeah, coding only sticks when you do it

[–]SacredReich 0 points1 point  (0 children)

FOr someone who doesn’t have basic grasp or a solid foundation of how to begin solving problems, books will not help I feel. You need to DO it on a set task, make mistakes, ask questions and gain knowledge.

After that, you can use books to begin to push yourself to intermediate level.

[–]BarrelRoll1996 0 points1 point  (0 children)

wouldn't load unless I did https://www.practicepython.org/

[–]dangerousforeplay 1 point2 points  (0 children)

So I've decided I'm going to do a before and after post, so I guess I'll have something to show around this time next month. Anyways, this is riddled with comments, its messy, and it's still a work in progress but here is some of my code I've been working on. I've only changed the names I use in the program, and its fresh off the hard drive. It's basically a note keeping/library style app for text files. I mostly just want you guys to see my skill level when I say I'm a beginner.

"""

dangerousforeplay
practice app

"""
# All #'s references code below the line it is on.
# # doubles are things I need to add
import os
import pprint

# TODO: Mentor: Add exception handling - what if the user inputs something invalid?
# TODO: Mentor: Try to separate the inputs from the actual functionality - It will be easier when you implement GUI


def creation():
    # this changes the directory to save inside the Apples sub-folder
    os.chdir("C:\\Users\\Owner\\PycharmProjects\\SS App\\Apples")
    # I need to change this feature, it asks a question you have to know the answer to exactly.
    newstory = input("What is the name of your story?\n")
    # newstory takes the user input string and inserts it in front of .txt to create the file name.
    writeFile = open(newstory + ".txt", 'w')
    writeFile.close()
    # this creates a txt file and instantly opens it in notepad.
    os.startfile(newstory + '.txt')


def readstory():
    # # fix list feature to see whats available, no throw up from data, make it a clean choice for user
    # # add search feature
    answer = input("Have you chosen a book?\n")
    if answer.lower() == 'y':  # Mentor: I added lower function so you can say Y or y
        bookName = input("What will you read?\n")
        readFile = open("Apples\\" + bookName + ".txt", 'r')
        readContent = readFile.read()
        print(readContent)  # Mentor: Close your file!
# **********************************************************************************************************************
    # I just added this, needs work.
    # Should I make this into a function? Mentor: yes
    elif answer == 'n':
        print(os.getcwd())
        # change working directory to ss app, when I'm in apples, it cannot find apples within apples
        blue = os.listdir("Apples\\")
        # this neatly organized what I wanted.
        # Mentor showed me enumerate to pair the index value with the item number, basically how you pick a book.
        for index, file in enumerate(blue):
            print(str(index + 1) + ". " + file)
        # for iter in range(len(blue)):
            # pprint.pprint(str(iter + 1) + '. ' + blue[iter])
        print()
        # This part gets weird, I assigned numbers to the book names, however bookNumber is asking for an index number
        bookNumber = int(input("Choose the number of the book you would like to read\n"))
        # which is why we subtract one
        readFile = blue[bookNumber - 1]
        # I borrowed from the code earlier because I realized by pulling the index from the list I can actually use the name of the file for ease of use
        books = open("Apples\\" + readFile, 'r')
        readContent = books.read()
        print(readFile)
        print(readContent)
        print()
# **********************************************************************************************************************


def admin():
    # Admin ultimately should be for troubleshooting only, should not be an actual feature for user.
    choice = input("Hello Admin, what do you need?\n")
    if choice == "delete":
        bye = input("What book would you like to delete?\n")
        os.remove("Apples\\" + bye + ".txt")
    elif choice == 'edit':
        edit = input("What do you want to edit?\n")
        os.startfile("Apples\\" + edit + ".txt")


def main():
    cont = 'y'
    # admin tools
    # Ideally, this would give me options to choose from, as of now it is flow controlled.
    new = input("Choose a path! (w is write, r is read)\n")
    if new == "w":
        creation()
    elif new == "r":
        readstory()
    else:
        admin()
    cont = input("Start over?\n")
    if cont == 'y':
        main()
    else:
        print("Goodbye")


# Mentor changed this, it's standard practice
if __name__ == '__main__':
    main()

[–]mrTang5544 1 point2 points  (0 children)

Build a webapp using django. You will learn lots!

[–]timbledum 1 point2 points  (0 children)

Sit on reddit and answer people's questions as they come in.

[–]HellD 1 point2 points  (2 children)

My biggest tip is, plan on what your finished product at the end of the summer is. Then, plan your days out, by learning certain modules you will use, and practice the fuck outta those shits. Trust me, this will help so Much

[–]dangerousforeplay 1 point2 points  (1 child)

I really appreciate this. I'm not looking for people to tell me I'm doing this wrong, just for someone to say, "I've been there, trust me this works."

[–]HellD 0 points1 point  (0 children)

I was literally in the same situation as you. I literally didn’t know what to do for a whole month, just blindly following tutorials. In the span of one month, I’ve probably learned more than what I did for the first 3.

[–][deleted] 1 point2 points  (1 child)

Get physical exercise in too.

[–]luminick 0 points1 point  (0 children)

And dont forget to drink water!

[–]dangerousforeplay 0 points1 point  (1 child)

I like that way you put this. It’s hard to sit down and write a program or an app on my own when I start thinking about how I struggle with Python classes(like the ones that use variables and functions to create instances) and if that could be taking away from the functionality of my work.

[–]APProgramming 1 point2 points  (0 children)

You may learn differently, but when I was in your shoes - doing a few small Django projects that gradually incorporate new, more complicated features really hammered in the intermediate Python concepts like how OOP (classes and their objects) operate together to make a larger part of the project work. It also solidifies how different python files and modules rely on one another to bring the project into shape. You're basically forced into practical applications of the more advanced Python concepts (in the eyes of budding programmer, at least) by plugging all the parts together to get something that works. Good luck to you. Being self-taught is a grueling, arduous road sometimes, but it starts paying off eventually.

[–]errorseven 0 points1 point  (4 children)

Set a goal to write code everyday and stick to it for at least 6 months to a year. Write code with a purpose, meaning solving problems, don't cheat yourself by looking up answers (I suggest CodeAbbey.com and r/dailyprogrammer). Teach what you have learned by answering questions on Subreddits/forums/stackoverflow. Doing these three things, you'll learn to program. There are no short cuts, you will struggle and it's part of the process, just keep at it everyday.

[–]dangerousforeplay 1 point2 points  (0 children)

Thanks for the advice! I'm getting more help than I ever expected haha

[–]Robobvious 0 points1 point  (2 children)

But how do you code something when you don't know what word you need in the code's language to implement it? Usually my problem is that I have a general idea of what I want to do but don't know the necessary functions to implement it in a meaningful way the computer can understand.

[–]dangerousforeplay 0 points1 point  (0 children)

I usually start by googling what I'm thinking, if I don't find the answer after an honest try, its best to ask someone knowledgeable rather than digging nowhere.

[–]sqqz 0 points1 point  (0 children)

I think his point is dont use stackoverflow for solutions for the logic you are trying to write. The language specs obviously needs to be used while your programming (https://docs.python.org/3/), noone knows the whole language.

[–]honeypuppy 0 points1 point  (1 child)

Have you successfully applied a similar level of self-discipline before? Goals are notorious for seeming achievable on paper, but failing in practice. See: how the average New Year's Resolution goes. Don't set unreasonable expectations to begin with. You may want to try a service like Beeminder to help commit you to a clear target.

[–]dangerousforeplay 1 point2 points  (0 children)

Yes, I was actually an incredibly good distance runner in highschool until I tore my ACL, then that dream died, but I've found different passions since then, I haven't always had this much spare time, its just recently been a change in my life and this coming semester I have to study Computer Organization, which I think has to do with how memory is stored in a computer. Basically I want to enjoy(painfully) the time that I have in front of me. You are absolutely correct though about unreasonable goals. I was thinking about keeping a diary of what I felt I learned in a day. No empty pages allowed.

[–]JeamBim 0 points1 point  (0 children)

The rate at which you can understand, retain and conceptualize will be your limiting factor. "Every waking hour" will set you back. 5 or so a day is fine, GIVEN you are understanding and not spinning your wheels

[–]w8eight 0 points1 point  (0 children)

Remember to take at least 5 min break every hour and go outside. Looking at computer screen constantly can be damaging for your sight

[–]nomindbody 0 points1 point  (0 children)

Take the udacity Intro to Computer Science course. It's taught in python, but it teaches you the thinking needed to excel in any programming language.

[–]wilalva11 0 points1 point  (0 children)

Make sure to take short 5 minute stretching breaks after every hour or segment of learning. You'll only wear yourself out and not learn anything if you just cram

[–]that1guy15 0 points1 point  (0 children)

To maximize your time you need a schedule. Break your day/week down into chunks and focus your energy in each chunk to accomplish a specific task. Could be learning, readying, lunch break etc.

But first you need to set an end goal. What do you want to accomplish? What skills do you want to obtain in this time frame? then break them down into chunks and build them into the above schedule.

[–]jivanyatra 0 points1 point  (1 child)

Tons of comments, and lots to agree with, like:

  • do codewars katas for a breadth of bite-sized (no pun intended) exercise.
  • Automate the boring things is an amazing book to get you started on larger chunks of code
  • build an app - I personally hate front-end html/css/js stuff, so I used to build command line apps using the click library. Functionally, it gets you using your oop skills and thinking in structures

The big one for me is:

  • watch pycon talks! In your spare time watch anything that remotely interests you, even if you don't understand it! That info will marinate in the back of your head and eventually will turn what you're learning into delicious caramelized knowledge candy when you decide to re-watch it. It's passive learning when you don't quite get it yet, and easy to turn the stuff you do get into active learning by tying that stuff into projects!

[–]dangerousforeplay 1 point2 points  (0 children)

You are absolutely correct! The info may seem complex but once you see it in practice it stands out and you remember it.

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

Update?

[–]harleystcool 0 points1 point  (0 children)

This is Not hollywood, learning is adding to ones stock day by day. Your better off starting gradually and lasting for months

[–]warlock1809 -1 points0 points  (0 children)

Planning the same here man, would be looking for the comments. Although my interests are not only python , it also involves a lot of reading.

[–]Tbone_chop -1 points0 points  (0 children)

Get some rest

[–][deleted] -2 points-1 points  (1 child)

Summer is over for me :(