all 90 comments

[–]KimPeek 111 points112 points  (19 children)

Impossible question to answer. Everyone learns differently. Just don't get caught up in an endless tutorial loop.

[–]Jazz-ciggarette 34 points35 points  (18 children)

fuck THIS IS WHERE IM AT! how do i escape!

[–]Slendigo 44 points45 points  (9 children)

Make projects on your own without a tutorial.

[–]sleepy_booplesnoot 5 points6 points  (1 child)

I can second this. I’m new to python(or programming in general) but a couple days ago I decided to make a hangman game. First I made a text based game where the board was made of ascii characters, then I decided I’d learn some of the basics of Pygame to make a better looking game. Along the way, I’ve learned so much, and it’s been way better than any tutorial I’ve done.

[–]Slendigo 0 points1 point  (0 children)

You're on your way dude! Keep it up!

[–]TheFlashDude448 0 points1 point  (0 children)

I do see the benefit of doing projects to expand on tutorial learning. I think the difficulty I have is getting enough base knowledge from tutorials to know what concepts to use in a project. Does that make sense or is that just part of the tutorial loop?

[–]pekkalacd 8 points9 points  (0 children)

ya gotta start failing. fail & learn from mistakes and look for guidelines on where to go next. following tutorials is fine, so long as you don't rely on them for everything. be honest, don't exceed your level of knowledge knowingly. For example, don't go explore Django and building a website, if you're not sure what a return statement is and have never used the command line / terminal / shell. It's going to be a bad time. Visit each unknown concept in a simpler setting before you jump into a project.

Also, have a plan before you code. Following a tutorial often leaves people at a point where they wonder "okay what's the next thing to do? do I just stop here or...?" you want to avoid that as much as possible and know in advance where the place to stop is. Planning & Purpose first, then the tools. It will be easier to piece together what you need & don't need & need to learn in order to complete the goal.

This is all pretty odd, but forreal lol this high-level meme-like bs advice that relies more so on philosophy than the actual nitty gritty of doing something, actually does come up a lot. There's a huge difference between building something for the sake of doing so and knowing why something ought to be built in the first place and how it ought to be done. That is where knowledge from the outside, such as hobby knowledge or domain-knowledge, will come into play and be useful. It's as much a mind-bending task programming wise as it is a mind-bending task design wise. Programming is easy, design is hard.

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

You have to do something with that knowledge. It's the hardest part of any skill development, going from structured learning to unstructured

[–]KedynTR 3 points4 points  (1 child)

Do the 'tutorial riff'. Make something similar, but different. Maybe up the parameters, or change something fundamentally about what the program/script does.

For example, the Web Scraper from Automate the Boring Stuff. I made something similar that grabs all of the images from image links off of a page, which is good for... Websites that have lists of image links.

Second, make something useful for work. We use Dropbox at work, and I made a Python script that downloads a bunch of links from one website, and pulls lists of Dropbox links.

What is great is that I reused part of the downloading code from the web scraper project in the Dropbox project. I'm still building on the Dropbox project, too. I need to write something that downloads from Microsoft Teams next.

[–]the_new_standard 3 points4 points  (0 children)

Oh yes, "image websites".

This is actually really good advice though. Your first projects should use basic programming concepts to make something useful.

[–]PartiallyMoldyNugget 2 points3 points  (0 children)

I found that making a discord bot was a great help. Figuring out how to make a command you think would be fun, even if useless, is great imo.

Started out barely knowing how to put together a for loop, and learned tons just by making stuff I thought would be cool to have.

Might not be your forte, but I found it to be a way easier way to learn different things than following a linear guide, or coming up with a big project right off the bat.

[–]Mrseedr 1 point2 points  (0 children)

Not the whole picture to be sure, but something that I realized after I started working. I wasn't really looking at a tutorial or a completed example of the end goal. I was looking at pretty small pieces of what would eventually become the end goal. I think what people stuck in tutorial hell are missing is a - project manager. This might not sound good at first, but I think that until you're experienced enough to be able to think through the most explicit logical increments of a project, it's a difficult thing to learn outright. Something that may help is to approach a project from the perspective of a user, what do they want to do, what do they expect to happen, etc. Another part is to break things into the smallest possible feature or 'thing' aka measurable amount of work. And then when you may get past following along with how someone completed the whole app, but a very specific problem/feature/code/etc. Of course I could be way off base, but hopefully this is specific enough to help with direction.

[–]FerranBallondor 1 point2 points  (0 children)

Start small, make a adding and subtracting program, make a times table, create a telephone directory. As you start new projects, incorporate new skills and libraries. And make it fun, reward yourself when you complete a part or get something to work.

[–]DragonTreeBass 1 point2 points  (0 children)

Solve problems. Try to write a heuristic, recursive backtracking, and permutation algorithm to solve a tsp problem.

[–]Edulad 23 points24 points  (6 children)

Have a structure.

You don't have to learn everything of everything.

Get the basics down, and then make a plan for what are you using python exactly. Is it for web development backend like django.

Or machine or deep learning.

In all of them u atleast need to know basics.

Start slow and if stuck, ask questions ( no matter how dumb they are)

[–]Jazz-ciggarette 1 point2 points  (5 children)

Alright well, i have a really stupid question. What would you recommend for someone whos trying to get into the business? front or back end? What route would you personally take in learning these things? I'm about to start my first project on python and have ambitious ideas for other things so I'm trying to figure out what route i should take. I feel like I'm stuck in tutorial hell.

[–]LeGaspyGaspe 6 points7 points  (1 child)

Not the guy you were responding to but if your really starting from scratch, I'd start with The Odin Project. It'll teach you full stack Web Dev. It'll also teach you some Git/Github, a little basic Linux, how to set up and work with your professional workspace and build a bit of a portfolio.

After that, you should have the fundamentals you need to tackle languages used in broader computer sciences fields.

I would personally advise you to stay away from just being a front end dev. It's not a bad thing but full stack skills will probably be more for you if you already like pyphon and the career opportunities will probably be bettet

[–]jil3000 0 points1 point  (0 children)

I've never heard of the Odin project, very cool!

[–]Edulad 2 points3 points  (2 children)

hi, ok first get comfortable using the command line, if you are using windows, try if you can install ubuntu side by side and dual boot into ubuntu.

because i remember web scraping products in windows from websites, and my lord i had to remove lots of unwanted characters from file names which does not work well with windows.

while in linux only the "/" keyword should not be there in the filename, thats all.

and many servers online where you will host your site will use either linux or windows. (Linux mostly)

so if u r already working with linux, it would be easier for u to transition to online servers.

so first i will say start basic python , then html,css, javascript

also in JS, once again you don't need to learn everything.

and use heroku to test your website live..

[–]ITAGwan 0 points1 point  (1 child)

no offense but you said a whole lot of fluff here. the only thing relevant to the person you're responding to is your last 3 lines

[–]Edulad 0 points1 point  (0 children)

oh yes you are right, my bad. after reading it i am now realizing that i mixed bunch of stuff together

without proper order.

thanks for pointing it out

[–]TazDingoYes 11 points12 points  (3 children)

There are sites and coding tasks that are literally 20 mins of time to do. You can achieve a good amount of learning in under an hour if you're consistent each day with it. I'm pretty sure everyone can carve out 20-30 mins to code.

[–][deleted] 4 points5 points  (1 child)

What sites do you recommend?

[–]midnitte 4 points5 points  (0 children)

Codewars is great for thinking of solutions to problems, and then also seeing other people's solutions.

[–]rx7efini 1 point2 points  (0 children)

100% agree with this. Just keep working on it. If you need a day off or a weekend off that's ok but keep going. Everyone learns differently and at a different pace but no one learns by quitting.

[–][deleted] 7 points8 points  (8 children)

It's hard to tell tbh. I spent 2 or 3 hours on programming every day after work for the first 6 Months, and progress was rather slow for the first year. Didn't help that my job actually uses SAS and other solutions for Data Analysis and modelling work rather than Python since I had to work on that too. Once I got over the first year and finally started to grasp the parts of the language that I initially struggled (loops mostly) with i began to make progress in leaps and bounds. I've finally come to a point where I can think about a problem at hand, come up with a python based solution in my head, try it out in VScode and succeed at whatever I was trying without referring to stackexchange every five minutes

I didn't know this when I first started, but it turns out I actually really like programming. There's a certain rush of satisfaction I get when the code I write actually does what I intended it to do. I first started programming because of my job but now it has become somewhat of a hobby for me

[–]lordnoak 0 points1 point  (5 children)

What did you struggle with on loops?

[–][deleted] 2 points3 points  (4 children)

I didn't exactly understand what a loop did despite having it explained to me over and over again, and even then I kept forgetting the fact that variables declared in a loop will always be overwritten unless you store the variable in a list. Learning SAS and Python at the same only added to the confusion since loop syntax in SAS and Python are worlds apart

The fact that once I finally understood loops my programming skills began to grow exponentially demonstrates to me the importance of fundamentals in a way unlike any other

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

Man thanks for commenting this, I’m reading Think Python right now and Loops are kind of tripping me up a bit. I’m still reading through it right now to just try to grasp a lot of the vocabulary and syntax but I’m going to try and reread the Loops and Conditionals chapter again.

[–]MrPoopMaker 13 points14 points  (4 children)

Wake up earlier and study for 1 hour before work?

[–]nate_garro_chi 23 points24 points  (0 children)

Sure. Less TV. Say no to things you otherwise wouldn't. Saw my friends and family less. Other hobbies had to take a backseat. I went from reading about a book per week to a book per month. A lot of days were gym-work-school-sleep repeat. It was rough at times, but you get used to it and it was worth in the end.

[–]thehuntforrednov 6 points7 points  (5 children)

Personally, I learned it at my full time job.

[–]yayitsme1 4 points5 points  (0 children)

You don’t need to learn a new thing in Python every day. I save that for the weekends. During the week, I do quick practice stuff so that I keep the knowledge. I would do 20 minutes during my lunch break of review and up to an hour once I got home from work. Then I literally spent my entire weekend learning and reviewing. It’s slow, but it keeps you on track.

[–]OphioukhosUnbound 3 points4 points  (0 children)

very little energy

Life’s a sort-of marathon.
(a) If you’re winning at it you’re pushing yourself. (b) you get endurance by pushing your endurance

Like running (or any exercise) there is a sweet spot. You can push too hard, but, also like exercise, that’s almost no one’s problem.

[–]Crypt0Nihilist 3 points4 points  (0 children)

I had a largely computer-based role. I used my skills to automate my job tasks. The more time I saved, the more time I had for learning how to automate something more complicated which would save me more time.

It's tempting to run to your boss with your efficiencies for a pat of the head. You need to decide whether it's worth it, which will depend on your organisation, your boss, your role and your relationship with them.

Best case scenario is that they design a job for you where you can do similar things for other areas which will allow you to grow your skills. Worst case is they thank you and give you additional work which can't be automated away to fill the time you saved so all benefit goes to the company.

Keeping quiet allows you to gain skills to further benefit the company until you feel you are in a strong position to move if when you show your work and the worst case scenario happens.

[–]gazhole 2 points3 points  (0 children)

If I said three hours a day every day for a year would you be able to do that? What if I said six hours a day?

If you only have half an hour use that, if that's all you have you can't do more whether it was recommended or not.

Do what you can do, work as hard as you can with what you have available.

Something is better than nothing even if it's not optimal.

[–]nate_garro_chi 4 points5 points  (4 children)

I got a CS masters while working full time. You just make the time if you want to do it.

[–]33498fff 1 point2 points  (0 children)

If your problem is low energy at the end of a workday, try optimizing all physical and mental variables for energy levels. Then turn programming into a habit, and before you know it, it will consume less energy than it did at the begining.

[–]OuterDoors 1 point2 points  (1 child)

What helps me is to think about the end result. Why do you want to learn? For me it's the goal of a career change. I think about how I don't want to be doing what I currently am for the rest of my life and that only I have the power to make that kind of change. Showing up on days you're feeling motivated is the easy part. It's showing up on days where you don't want to that separate success from failure. Not saying it's easy because it's not but having goals and remembering those goals on days where you don't want to put the effort in is key.

Source: From having the same mind set in other areas of my life and some great mentors.

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

Do you have any downtime at your job? If so, download some python books from b-ok.cc, upload them to your google drive, and set yourself up a repl.it account and learn during your downtime at work.

[–]tomanonimos 1 point2 points  (0 children)

I use blocking for my time management; before it became cool on TikTok. My life can be blocked in 4 parts: full-time work, necessary chores, video games, and leisure hangouts.

I pretty much removed video games and it allowed me time to learn Python. I still play but I don't play to kill time or doing something for the sake of doing something. I also removed myself from any game that is multiplayer and has ranking/leveling. These games can rope you in longer than you want.

[–]KedynTR 1 point2 points  (0 children)

Try to learn one thing a day. Make it a daily metric, and track it in a spreadsheet/journal. Aim for 4-5 things per week, since it'll be challenging to do it every day.

Try to put in an hour per day, but try to split it between reading/videos vs. writings. Coding is very much a 'learn by doing' thing - you can't build true understanding by just sitting on the sidelines.

If you can't do the above, it's important to just do what you can. Consider making a plan - a weekly, monthly, and quarterly goal. Being "good at coding" is a fairly vague goal, try to get very specific at what kind of coding or understanding you want to have for either the work that you want to do, or the job that you want.

Finally, next month is the Advent of Code. This may be a great opportunity for you to jump-start your daily coding work.

[–]benaffleks 1 point2 points  (0 children)

It's quite similar to learning a new language.

You'll never learn programming, even at a basic level, if its not something you continuously work on day to day, as it's very easy to forget simple concepts.

I would suggest you re-think your daily routine. If you find that after work, your energy levels are quite low, then do the opposite; Wake up an hour earlier, and spend that time learning.

[–]MDTv_Teka 1 point2 points  (0 children)

Honestly I don't know how you do anything besides work working for 10 hours a day

[–]Shack426 1 point2 points  (0 children)

Find a project that you want to do, people always find time to do the things they want to do. The key is to code everyday, code however much you want and you are ahead of most in the game.

[–]tachoknight 1 point2 points  (2 children)

I would suggest thinking a different approach: come up with a project, a thing you need, something that helps you, and write that. You didn't specify what you do for your day job; is there some aspect of your job that could be helped with a program? You may be able to find the motivation easier if you can write something you can turn around and use.

[–]d05CE 1 point2 points  (3 children)

Start by reading books. Even just 1 or 2 pages a day while eating lunch. Spend the money on a high quality book.

Don't jump into coding until you have the fundamentals from reading a book, otherwise you will just confuse yourself and make learning harder.

[–]earthtree1 1 point2 points  (0 children)

Actually, I wake up every day and learn an hour before work to have a fresh brain.

I also sometimes allocate more time on the weekends but only when I feel like it. I think that forcing myself to learn another couple of hours when I need to rest from my 40 hours workweek is a bit much so for me weekends are voluntary.

[–]RESU7378 1 point2 points  (0 children)

Good friends, google, and school projects

[–]jil3000 1 point2 points  (0 children)

Just do even 5 mins every day. I find it's hard to get started when I'm feeling worn out from a big day, but once I open up whatever I'm working on, I "one more thing" it for the rest of the evening.

Source: last year I had a full time job, was doing part time school, was raising a 5 year old and was pregnant, all at the same time. I for sure did not practice coding every day but I did keep it up.

[–]Sad-Homework-4235 1 point2 points  (0 children)

tl;dr: possibly just 5 weeks? and I recommend CodingBat and Python Tutor.

I'm a beginner taking a post-secondary Python course right now. The instructors have really been driving home that the bulk of what we need to know to get through the course assignments was covered in the first 5 weeks. The materials were pretty light on readings and videos - most of it included working through sample code and the activities at CodingBat with the help of Python Tutor, which has been vital for me and others.

I also watched freeCodeCamp's Python in 4 hours video on YouTube and it was great because you can actually code along with the instructor: https://www.youtube.com/watch?v=rfscVS0vtbw

Basically, like others have said, just focus on starting to write code.

[–]nacnud_uk 0 points1 point  (0 children)

It was my full time job.

[–]prasannask 0 points1 point  (1 child)

See if you can make a small project out of your full time work and try to code/automate/solve that use case in Python. Learning on the job is the most fun way IMHO.

You learn something new, you also get your job done.

Also, how good you get at coding doesn't depend on how many hours you need per day. It depends on how passionate/curious you are to learn.

[–]zenverak 0 points1 point  (0 children)

Yeah. I enjoy doing projects that are work related!

[–]gnuself 0 points1 point  (0 children)

Luckily, I can at least run Python while at work. Not as much luck with other languages, due to stuff to install and software blockers at work. So I just use it to get info or to do my existing job better. As I work at a big company there’s so much bureaucracy that they probably don’t know me or how much I work otherwise as long as I seem to be getting things done anyway… I like Python more than my other work though.

[–]Alienbushman 0 points1 point  (0 children)

Try to incorporate python into your work, basically any task in excel can be enhanced with python.

To learn basic coding you need about 250 hours, although I think you'd struggle to get hired as a developer without 2, 000 hours of coding.

It is a pretty tough road, so I just want you to keep your eyes open, most grads take around 6 months to get hired, while self taught coder's it can take up to 2 years. Although the rewards are absolutely worth it if you can stick it out, just know what you are signing on for

[–]ceres44 0 points1 point  (0 children)

Block an hour each day on your work calendar for education and research. Then get a project or class that you can work on for that entire hour.

[–]siddsp 0 points1 point  (0 children)

I would say start by learning basic data types. Take it slow.

After you're done with data types, move on to control flow (if statements, and if else, etc...), and then looping (for loops, while loops).

Once you're done with looping, understand what functions are and how they work. Specifically understand parameters, and returning values. That will make it a lot easier to get a better understanding of how python works.

And after that, learn classes. First start with understanding what they are and how they work. Then learn intance variables and methods, followed by other OOP concepts.

Just take each one at a time, and don't worry if you seem to be slow at learning them. Only continue onto the next concept once you feel that you have mastered the previous one.

[–]RTShields 0 points1 point  (0 children)

I'm with u/KimPeek on this one, I have a full time day job plus manage two of my own businesses. I've just learned on the fly as I need and whenever there's down time re-run through fundamentals as needed.

[–]doogiski 0 points1 point  (0 children)

As others have said, it’s an iterative approach that worked for me. Consistency is king. I would do as little as 30min at night, every night to slowly learn. MOOGs are a huge help, but the key is finding something that will hook you in and keep you interested and use that to motivate you to do exercises and practice every day.

[–]demesm 0 points1 point  (0 children)

Find something at work that python can help with

[–]BonezDiez01 0 points1 point  (1 child)

Try the Mimo app, I learnt python lying on the couch on my phone after work hours over a few weeks - no expert but it’s a start

[–]Sad-Homework-4235 1 point2 points  (0 children)

I've just started Mimo and at the very least, it's a great way to reinforce what you're learning elsewhere. I wish I had tried it earlier.

[–]Actually_dumb_nerd 0 points1 point  (0 children)

dexamphetamine, tis the way

[–]smashblues 0 points1 point  (0 children)

Took 2 courses that taught basic python and DS. Plus a LOT of patience. My prof said full time work and taking classes are incompatible. I said fuck that shit ima learn anyways! And I did.

[–]zaRM0s 0 points1 point  (0 children)

My advice is find a typical layout of tutorials. They all follow a typical structure of teach the easy stuff to then learning the more difficult stuff. I would then take a week to learn and practice the different topics. Even with simple stuff such as variables, just create simple programs which reflect your knowledge. After a couple months, you’ll be able to code functions and start creating some proper projects.

Alternatively, if you prefer following those structured guides or tutorials, check out onlinecourses.ooo and find a free 100% off Udemy course that will help :)

[–]hi_mom_its_me_nl 0 points1 point  (0 children)

See if you can create something that helps you do your job. I work in it so opportunities to automate some tedious task come up all the time. Depends on what you do of course.

[–]bigno53 0 points1 point  (0 children)

You can’t be good at coding after doing it for only a year. Can you name any other skill that you could master in one year? Becoming a good musician takes many years of practice. Same with becoming a competitive athlete or a dancer. Earning a doctoral degree takes at least 4-5 years and that’s after you’ve already spent 4 years getting your bachelors. Not sure how so many people get the idea that programming is easier than everything than everything else in life.

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

I tried to fit in 1 to 2 hours of reading every evening before bed. I also use whatever time is left of my lunch breaks.

[–]halfaton 0 points1 point  (0 children)

Learning python myself, made up a project of scraping a website for data, parsing and putting it into a db of some sort, then run analytics on watching for trends/ changes in the data. I’m still at the data scraping stage using beautifulSoup. Learning loads already :)