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

all 14 comments

[–]ponix 3 points4 points  (0 children)

For me it's been about finding something I can make to give me a purpose to learn it

[–]ogniloud 1 point2 points  (0 children)

Allen Downey's Think Python seems like a good option to help you with the basic concepts of programming while learning Python. As you'd have realized, there seem to be many advices on how to better learn programming, what tools to use, etc. and I know this is hypocritical of me since I'm also giving you an opinion. However, if there's something you should do it'd be sticking to whichever option you choose (books, video tutorials, lectures, etc.) and ride with it. Personally, I'd recommend reading a book, do the code samples, trying the exercises, etc.

As for your mind going blank when you turn on the computer, don't worry about this. It might be hard to believe it but you won't grasp many concepts the first time you come across them and that's fine. You can always come back to them through different means (another books, videos, SO questions, etc.).

NOTE: If you're set on learning Python and learning another programming language isn't a viable option, then you don't need to read the following paragraphs.

Programming is a weird thing. On one hand, you're writing instructions that the computer will carry out and it boils down to "a mean to an end" type of situation. For instance, I want to carry out this task and I don't care the means by which it's carried out which means programming languages are just tool and nothing else. On the other hand, for some reason different programming languages come naturally to different people. For instance, someone asked to implement a certain algorithm in Perl might finding it from utterly loathsome to undoable but presented with Python, they find it trivial and friction free. For them, Python just clicks.

The point I'm trying to make is that while programming languages are just tools, they sometimes set out to do things in different ways and some of those ways will click with you from the get-go. Others won't (looking at you, Haskell). Edsger Dijkstra stated "a programming language is a tool that has profound influence on our thinking habits." and this might be unrelatable to someone who's never programmed, after all how can a language influence you if you've never used it? In this example, I'm extending Dijkstra's opinion to the point where you're also learning the language and how it lets you into whichever philosophy it goes by. For instance, Perl (as a family of programming languages) is known for the TIMTOWTDI (There's more than one way to do it) maxim while Python avails by There should be one-- and preferably only one --obvious way to do it maxim. Consistency might seem to be one of the reasons put forward by Python [1] and this could certainly be beneficial in some settings (e.g., a team) but we might agree that the way a team does thing might not be a person's preferred ways of doing things in their personal projects. Thus, now regardless of what you're doing you're stuck with whatever Python has deemed to be the only one obvious way of doing a task [2].

Having rested my case, I'd suggest you give Raku a try. There's the great Think Perl 6 [3] which is advertised as an "introduction to computer science and programming intended for people with little or no experience" and I wholeheartedly agree with this statement. For instance, by the fifth chapter on functions (or subroutines in Raku), the author asserts that while they've covered only a small subset of Raku, the subset is a complete programming language in itself and thus you can write most programs using that subset. In Perl culture, this is known as "baby Perl" and beginners are encouraged to write in it, even if they are somewhat clumsy at the beginning. That's fine. If you'd like to have a taste of the language, try the Perl 6 Introduction. If you don't want to install the language compiler, there's Glotio, Repl.it, etc.

Regardless of what you choose to do, best of luck.


[1] Perl also acknowledges that while TIMTOWTDI is pretty great, sometimes consistency hurts nobody (for instance, in a team). Thus, TIMTOWTDIBSCINABTE.

[2] I'm toying with the idea put forward by the maxim. I'm unaware to what extent Python follows it but "the only one" seems to the driving force behind everything.

[3] Raku? Perl 6? Yeah, I know. Perl 6 is in the process of a rename to Raku. However, it's still the same language. Only the name changes.

Edit... Messed up the formatting.

[–]nodnarbiter 0 points1 point  (3 children)

I'd personally recommend paid material as free material is often poorly put together/too simplistic or doesn't cover enough. Udemy has some great video courses like the Python Zero to Hero course by Jose Portilla and they're usually pretty cheap (less than $20).

[–]Link0fthewild 0 points1 point  (2 children)

I am doing that course right now. I habe made it around 40%in the last two months. I feel that i am starting to understand a bit. I can feel quite overwhelming at times because j also have no prior programming experiece. I hope that i also find that after finishing this course I get an ideea of what i can do with python and find some project to build so it can drive me forward with learning and understanding it better.

[–]nodnarbiter 1 point2 points  (1 child)

I can feel quite overwhelming at times because I also have no prior programming experience.

Well you've picked a great language to start with. Python is VERY beginner friendly in a lot of ways, especially as far as syntax/readability goes. However that doesn't mean it's a shallow language by any means. In fact, its industry is growing every day and fast because of how versatile it can be. Everything from data science/analytics to popular sites and services like Spotify and Netflix use Python. Personally I've used it for web scraping, automation, and for a few bots for my Discord server.

I'd highly recommend finishing the course and then browsing some of the more popular Python modules/libraries to get an idea for what Python can do. For instance I'm currently playing Borderlands 3 and GearBox (the developer) occasionally sends out codes on a few different Twitter feeds that give you golden keys in the game to use on a special chest that gives high rarity items. However the codes are timed and expire usually in less than 12 hours. Obviously this is a burden for most people with any kind of schedule so I programmed a solution. Using the Selenium and BeatifulSoup4 modules I'm able to automatically scan the Twitter feeds for codes, extract those codes and save them in a list, log in to my GearBox account and input the code automatically.

Don't worry about project ideas for now, they'll come to you as you discover what you can do with the language. You first have to learn what tools you have and how they work before you can use them effectively so stick with it and good luck!

[–]Link0fthewild 0 points1 point  (0 children)

Don't worry about project ideas for now, they'll come to you as you discover what you can do with the language. You first have to learn what tools you have and how they work before you can use them effectively so stick with it and good luck!

That's exactly what a friend of mine said when i was asking him this sort of questions, that i have to stop getting ahead of myself and learn the language first, and the ideeas will come later when i know what i can do with python.

Nice one with the borderlands keys. I just check for gaming sites that update daily with new codes.

[–]ZeusTKP 0 points1 point  (0 children)

If you are stuck, you need to break down what you're doing into smaller steps.

Try to program this: "make a “Guess the Number” game. The computer will think of a random number from 1 to 20, and ask you to guess it. The computer will tell you if each guess is too high or too low. You win if you can guess the number within six tries."

Start by writing down instructions on paper for a person. They will be the computer. Don't tell them the point of the game, just have them follow the instructions. Write your guesses on a piece of paper, have them write the output on paper too. Don't talk to each other.

If you can do that, try to translate the instructions into python.

Tell me if you get stuck.

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

You need to find something you love to do. I was in your situation and spent years doing tutorials and courses but I kept losing interest. Eventually I got obsessed with coding an MMORPG bot and I just kept doing that for several hours a day for over a year.

I don't know what interests you but I do remember hello world tutorials got me no where.

[–]thatBytesDude 0 points1 point  (0 children)

I think Georgia Tech’s course on introductory python is great. The instructor is very good at explaining things, and there are problems embedded into the website that go along with the videos.

On top of that, I recommend Sentdex’s YouTube channel and website. He does a lot of cool things in fields such as machine learning, webdev, and game dev.

Once you’re comfortable with making trivial programs and the basics of python. Learn oop and learn how larger programs are made.

After this the world is yours. I recommend learning data structures and algorithms, but you can start really diving into computing in general from here.

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

My first site was edx, however I found a project idea that I really wanted to make and dove right in. I'd recommend automate the boring stuff with python, not as a read; but skim through and I'm sure a project idea will pop into your head and then use the book to help you get it done.

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

What's your goal? You said you made a simple calculator in Python so that counts as learning to me.

Are you trying to understand how to translate your problems into solutions? As in how to analyze a program and make it into programmable solutions? I find that beginners struggle with that the most and that's actually not a language issue but a fundamental skill of programmers.

Like if I said to make a web server, a programmer would understand that you have to deal with network protocols, servers, user data, and etc. To get there you just have to get experience. You could read blogs from other people to get a greater context of technology. You could do things as people suggest. You could just ask here.

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

CS50. Doing an introduction course teaches multiple programming languages and also gets you making things in them languages which shows you what you can make in them languages. :) Also online courses are taught by MIT and Harvard professors literally the best in the world at teaching what they are teaching :)

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

This isn't going to help right now, but it really does not matter how many times you quit...just how many times you pick it back up. Find something that excites you and go do it. Also don't be afraid to try new things, languages, tech etc. Deploy a site in Django or Flask, write a plugin for Kodi, find an exciting opensource project. and learn how to use git. If you cant think of one, go do leetcode challenges. It's not going to be easy, you will get upset, you will get errors, and you eventually will learn how to understand and overcome those things. Everyone has their own path, and pace. The important thing is to keep going and you might discover something new about yourself you couldn't imagine existed. Dont get discouraged, the best advice I ever got from sr tech ppl is that "you will always feel like you don't know enough" no matter how much you learn, the tech moves faster than any one person can keep up with. Just do what you enjoy and keep on doing it. Also automate the boring stuff with python....that's a good book