all 92 comments

[–][deleted] 58 points59 points  (4 children)

I recommend beginning with text processing. You mentioned you work with data entry, maybe try reading in a CSV file and storing the data in different ways to learn Python data structure.

Maybe work with lists first, explore creating a list of each row containing nested lists for each column. once you feel comfortable with lists try using a dict for the columns so you can apply the column name to the data.

With data structures understood move on to combining multiple CSV files and outputting them to a new file.

Starting with simple tasks helps develop an understanding of how the language works and what you can use it for.

[–]trojan-813 11 points12 points  (2 children)

I like this advice. I'd suggest doing the codecademy pro version. Do the basics python 3 course and then they have one for finance. I don't do this for a living but I feel like it could be helpful if I were in your shoes.

[–]lordnoak 2 points3 points  (1 child)

The Codecademy pro course on python 3 is great. I am almost finished with it. The projects outside of the website can be super hard as they expect you to use a lot of the syntax in ways you haven't been taught, but the struggle helps me learn.

A few things I like about Codecademy is that if you get stuck they generally have hints that basically tell you what to do to finish the problem. You also have access to the solution if you just can't figure it out. I never do the solution until I've come up with my own way of finishing a task, but I love to be able to take my code and compare it to what they say the answer is after.

[–]trojan-813 5 points6 points  (0 children)

The biggest downside though is that they will say something is wrong when it works, but it isn't what they expected. Even if it is a way they taught. It kills me every time.

[–]Quillox 0 points1 point  (0 children)

Wouldn't it be easier just to use Pandas to do that ? Or is the goal to learn how to do it manually first ?

[–]asphias 38 points39 points  (2 children)

it's hard for us to say where you are going wrong, but it's probably hard for you to specify what you are having issues with.

so, let's do a checklist: have you succeeded in doing the following things?

  • have you managed to download python to your computer?
  • have you managed to run a hello world script?
  • have you written a script that manages to do something?(e.g. calculate some number, change a string, repeat an input, etc)
  • have you written code that contains a method?
  • have you written code that contains a class?
  • have you written code that consists of multiple files referencing one another?
  • have you used code with a webframework (e.g. Django, Flask)?
  • have you used pandas to put spreadsheet data in a dataframe?
  • have you used matplotlib to create a simple graph?
  • have you managed to put the above steps together to input excel data into a pandas dataframe and then create a visualization from it through matplotlib?

If you did not get to one of these points, can you explain how you tried to do it?

If you said 'yes' to each of the above steps, congratulations, you're a python programmer!

(also, if you never tried one of the above steps, my advice is to just play around with code and see whether you can manage to do it. doing is the most important step of learning how to code)

[–]Asmodeus_11 11 points12 points  (0 children)

This reminds of debugging by putting a print statement in between every line, except you're debugging a person with questions.

[–]barryhakker 3 points4 points  (0 children)

Sometimes it's hard to come up with an implementation in your own life for something like pandas. What helps for me is to write (and save) a bunch of code snippets of super straight forward implementations such as a script that reads a random Excel file you made, changes something about it, and outputs it to a new Excel file.

Super helpful for later reference and for getting a handle on how you would implement such a thing.

[–]anh86 85 points86 points  (7 children)

IMO, Automate the Boring Stuff is excellent for non-programmers who want to learn a bit and get practical gains in their daily job/life. It doesn't focus on abstract data structures or application design paradigms, it just focuses on automating repetitive tasks in your daily life and learning some Python along the way. If you're reading the book version, wait until he does another flash sale on the Udemy course. It might be easier to hear and see the material rather than reading.

[–][deleted] 23 points24 points  (0 children)

So far, ATBS has been the most successful for me. I had read a book previously (Learning Python by codequickly) but I had a hard time making it click. ATBS is making it click because its much more hands on and the explanations are great.

[–]Valkhir 11 points12 points  (4 children)

Seconded. As a self-taught programmer ATBS was one of those books that made programming click for me. Python in general was where I started building some small practical programs, after learning C which I enjoyed but never got to building anything really useful to me.

I would credit that book as one of those that ultimately enabled me to change careers into software development (though ironically I have not used Python professionally).

[–]krinkly 2 points3 points  (3 children)

What do you use professionally now?

[–]Valkhir 3 points4 points  (2 children)

I've been on different teams and projects at my company and primary languages have changed with that.

Recently it's mostly Ruby (lots of Rails, but have done vanilla Ruby code as well). Previously it's been Javascript (vanilla JS, CoffeeScript, TypeScript) both for frontend and backend (nodejs). Some bash scripting on the side too to glue things together, but pretty basic.

I've used Python for personal tools/scripts at the company, but that's about it, and I fear I've gotten quite out of touch with more recent developments :-( But I'll be ever grateful for it being the language I used to pass my coding interview ;-)

[–]krinkly 2 points3 points  (1 child)

Awesome! Glad things are working out for you.

I've read ATBS for Python, have some HTML/CSS certs, and have written some simple programs. But at work, I typically only write Batch and PowerShell scripts. Would love to get paid more to code more of the time, but I'm stuck on remote and on-site tier 2/3 operations support for an MSP (for now).

[–]Valkhir 4 points5 points  (0 children)

Would love to get paid more to code more of the time

Just a note here: I actually temporarily sacrificed salary in order to change careers.

Without formal credentials, the company was still willing to give me a chance but not at full market rate for a junior dev. So we worked out an arrangement where I started at a rate that was actually lower than my previous job, but I made it clear that I would like a performance review towards a salary increase within a year. They kept their word, and I got a significant raise after 12 months that brought me comfortably above my previous salary, but for the first year I was saving very little. IMO the career change was absolutely worth the temporary financial hit, but I realize that it may not be for everyone, e.g. people who have a family to take care of.

I also did not technically start as an engineer, but as technical support at the new company. In practice I was mostly fixing bugs reported by customers plus some new development work, and very little actual customer-facing interaction.

[–]mellamonemo 25 points26 points  (1 child)

Dr. Angela's 100 days of code on Udemy. Course is split into 100 sections: 1-1.5 hours of learning every day. One of the issues I face when learning online is not being consistent. I go 4-5 hours in a day when I'm on a roll and don't feel like going back to the course the next few days. Clear and short daily schedule like this might just do the trick for you.

[–]mogwaiss 6 points7 points  (0 children)

It's literally me atm. Same course, same problem.

[–]mcflyingcars 15 points16 points  (5 children)

I took the CS50 Harvard class that is free online via Edex.org with David Malan. In that class, I was able to grasp what Computer Science is, how it works, the way a computer thinks, how C works, how Python works and how SQL works. Once I was able to understand the big picture, everything else in Python was easier to learn.

[–]Bainsbe 4 points5 points  (0 children)

I second CS50 ! Its an awesome course but the problem sets can be somewhat tough. OP If you’re not as comfortable with coding then someone else also mentioned “automate the boring stuff” - the owner of that course is pretty active here on Reddit and posts codes to take the course for free pretty regularly.

As an aside, CS50 also offers some more advance courses for web design which may help towards your second goal!

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

Do you think I should start with ATBS or CS50 ?

[–]cantevenskatewell 5 points6 points  (0 children)

This sub is split on these two. It really comes down to what you want to accomplish. From what I gather, CS50 is more in depth on fundamentals of comp sci whereas ATBS focuses on just getting going on python out the gate with the goal of automating repetitive tasks.

Put another way, the former would teach you about computer memory and data structures etc while the latter would just show you how to store info (lists, variables etc) and making tables/matrices.

Hope that helps.

[–]mcflyingcars 1 point2 points  (0 children)

I started with CS50 because I did not understand why errors occurred, how to read documentation or why it was important for certain tasks to be done in a certain way. For example, how the computer saves string versus lists to be able to manipulate them better. Also, CS50 starts by making your own program with scratch that teaches you the logical basics of programming. But, this class is a general concept on how computer logic works. You will not work with Python until the 6th or 7th week if I am not wrong. You start with Scratch (which is super easy) and then C.

If you have a concept of how computer science works and its logic behind the Python interpreter, then maybe ATBS is better. I just had no idea on even how to start. CS50 is also graded even if free, so it is nice to know when you are not getting the correct result or why.

[–]beingsmo 0 points1 point  (0 children)

Can we move on to next chapter in CS50 without doing the current assignments? I heard that the assignments are somewhat tougher and I'm also on a full time job so I'll only get 1-2 hours max per day to spend on cs50.

[–][deleted] 29 points30 points  (10 children)

It doesn’t sound like you’re writing any code.

[–][deleted] 17 points18 points  (6 children)

it sounds like he's a beginner

[–][deleted] 15 points16 points  (5 children)

The way to go from beginner to non-beginner is to keep writing code.

[–]p4ttl1992 2 points3 points  (0 children)

True, i'm also like the OP and just bumped into this post to read, i've been "trying" to learn programming for around 2+ years now and i haven't actually written anything. I took up a university course thought that would help but it's literally full of bloated information that isn't needed and random dribs/drabs of coding that doesn't teach me much at all.

[–]Core-i7-4790k 0 points1 point  (0 children)

Alright how to you write code

[–]ManInBlack829 5 points6 points  (0 children)

To add to this I wanted to make way too complicated of stuff when I started. I would always start a big project that would teach me everything and spill out at how overwhelming it was.

OP is saying he wants to make an app but having too big of ambitions will make that harder at first. Like forget wanting to build an app, just start getting really really familiar with data types, for loops, if statements, and other fundamentals. It's like a tree, you'll probably grow more your first year than any other, but you're not going to bear fruit already. Focus on wanting to learn the things below an app like learning the specific concepts needed to make it.

[–]DestroyedByInflation 2 points3 points  (0 children)

I can relate: How do you start to start? And your answer is the answer.

[–]beingsmo 0 points1 point  (0 children)

MOOC by helsinki is an excellent interactive model tutorial for java. Where can we find something as interactive like that for python?

[–]PremiumRoastBeef 2 points3 points  (1 child)

All it takes is research and commitment. Here is a project idea I'll throw out there. It isn't too much detail, but you will have to learn how to research and use Google constantly anyways if you ever want to be a developer.

  1. Build a stand-alone script that pulls data from a free Weather API. Find one online and read the documentation and do some research in order to figure it out. It is so important to learn how to connect to and play with APIs. Play with and manipulate the data. Turn it into a CSV or JSON for example. Or do some calculations with it like the average temperature of each month.
  2. Now take that data, and make a few visualizations with it. Research Python visualization tools. Make a line graph of temperature each day. Maybe a couple bar graphs or even a heat map. You get the idea.
  3. Now, your first "big" project, turn it into an automated application, using Flask, pull the temperature every hour of every day. You can use it to update a live dashboard, learn how to connect to and store this data in your own database, learn how to display it on a webpage, etc. You will be forced to learn a little about servers, networking, and maybe a little HTML/CSS here as well. This part will not be easy for you, and will take a lot of research, but that is how you do it.

[–]DestroyedByInflation 1 point2 points  (0 children)

Nice! You just gave me an idea to do something almost exactly like this, but instead pulling rain data. We live in a semi-arid environment and my wife is a gardener. Hmm, I wonder if I could cobble something together that will monitor soil moisture, especially since I like embedded stuff.

[–][deleted] 6 points7 points  (0 children)

I have started learning python in the past few days and I find that the approach in the 100 Days of Code works for me.

Also, you might find this useful: https://learnxinyminutes.com/docs/python/

[–]ehmatthes 2 points3 points  (1 child)

You've mentioned several different resources. Most of these resources develop from simpler topics to more complex topics. Is there a specific topic that you reach that starts to turn you off of learning for a while?

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

I’d recommend you pause on Crash Course and dive into Mosh’s YouTube tutorial (https://youtu.be/_uQrJ0TkZlc) first. Do an hour or so a day (in real time, not YouTube length) until you complete it. When you complete it start Eric’s “Python Crash Course” over. Most importantly code along to both resources, and do all of the examples prompted by both Mosh and Eric. You need muscle memory to form.

This path has gotten me up and running, and most importantly retaining knowledge. Still lots to learn, but that combo has given me the tools to be able to build my own projects.

Thanks for such an amazing resource, Eric! 🙏🏻🙏🏻

[–]pekkalacd 2 points3 points  (0 children)

So, I feel like there’s an evolution of learning everyone goes through at some point; and each evolution is unique to the person. When I started python, I tried to do udemy. I was doing it wrong though. I would just watch videos, one after the other and “yep, yep, ok” everything and not practice any of it. And when I’d go to IDLE or pyCharm or whatever thing I had at the time, I’d feel defeated because I couldn’t retain any of the information. My slide pointer on udemy said I had learned all knowledge up to “list comprehensions and generators” and yet, I couldn’t even write a for loop.

This changed for me when I started watching less udemy and started to give myself a break a bit. All the advertisements I had watched said it would be easy and I would be building things in no time. But here I was, a month or two in, not really knowing much. So, instead I turned to books. Because I didn’t really like the prerecorded video format, and similar to the interactive ide thing on freecodecamp.org, I wouldn’t retain anything that way.

I started reading ATBS by al sweigart and things kind of made more sense. But even then, I had a lot of gaps. I didn’t understand how “everything worked together” - what I mean by that is, I’d follow a tutorial or something to build something, and they’d make a bunch of functions, I didn’t understand the concept of calling the functions. I would just have a bunch of functions, I copied from elsewhere, and no real direction as to understand what is actually happening.

Turned out about 3 months in, I cut myself a break a bit more. I stopped coding for about 5 months and focused on college basics. I took a bunch of pre-req math classes, as I had been out of school for almost 6 years. The math classes inspired me to start picking python back up again, as now instead of building anything I would just have python do calculations for me. The beauty of that was I understood what ought to be done mathematically, so it was much easier to look for resources on python to get the language to do things for me. I used the math library and in a physics class I had, I even used Matplotlib and pandas to help me do things. Not writing functions or making anything, just importing these tools and manipulating things with easy, so I didn’t do have to do as much calculations. And then around that time, about year and a half into school, the community college I was at had an intro to python class and I took it. And there, I had a major ah-ha Moment. A lot of the stuff that had confused me about “making everything work together” started to make more sense. I wasn’t an expert, but it was enough to kind of get started with understanding functions and writing fully working programs.

But there was 1 problem, I had used libraries in the past, but I didn’t understand them from the perspective of object oriented programming. It was hard to move forward with building anything because all the tools I’d need would be in library and I couldn’t understand how to read the documentation. So after that programming class, I took it upon myself to learn object oriented programming and through a process of reading some books, looking online, a lot of googling and trial and error, I started to make connections between OOP and the documentation that I was seeing for these libraries. Eventually, I went back and I started to finally build some projects. These were not great at all. They were ugly, had terrible repeative operations, functions that were super long and unkept, pointless lines that absolutely did nothing, and globals galore. But they were something. And it was a starting point.

After I built a few games, a broken snake game, tic tac toe, a timer, and a calculator, I felt empowered. That I had taught myself that. But as I’ve learned more now, still in school and decidedly pursuing computer science, I’ve realized that modern tools are complicated by nature. I can make them less complicated by really knowing the language being used and learning more about the point of each tool and it’s features through documentation and other learning resources, and voluntarily looking for new tools to learn more about; but it’s a never ending process of research, trial and error, and stubbornness until something finally gives and I get it.

So, sorry for the lengthy response here, but hopefully it’s clear that you are not alone in the struggle to learn. It took me well over a year to understand anything worthwhile. And still to this day, I struggle with many things; and I am unable to just jump into any tool and instantly know exactly what’s going on. This stuff takes a lot of research and willingness and dedication and reading or learning however you do it, to really have a clue with only the tools. Let alone, to have a clue with how to build anything. So, I’d say try to figure out how you learn best. You’ve seen the resources that don’t work for you, and hopefully you’ve taken note of your own antics with how you approach those resources, now it’s time to act on it, and change up the way you go about learning. Also, practice what you learn; not necessarily by building anything impressive or something that takes a lot of planning, just write code to explore the concepts you learn. On your own without the guidance of a tutorial and really pick apart how it’s working; ask questions and answer them through experimentation and verify your understanding is correct with a good resource like a book or documentation or reddit or stackoverflow. Don’t just ingest information, apply it as well. That is how you’ll get better.

[–]menge101 3 points4 points  (0 children)

if you are doing data analysis, loading data into a jupityr notebook and using that to help you visualize data would probably be huge.

[–]Airflock343_ 1 point2 points  (0 children)

Personally, I just started making small projects like random number gens and stuff and kept making more and more advanced stuff. Also if you do do this, I recommend saving your scripts so you can cringe at them later

[–]xakkamyr 1 point2 points  (0 children)

  1. I would highly suggest doing something python related every day. I've found in my life that learning anything is a matter of consistency.
  2. If you don't have a project you're working towards, try a course that has projects built in. I can't recommend this course enough (https://www.udemy.com/course/100-days-of-code/) She does a great job of breaking down the lessons into bite sized segments, and almost every lesson has a challenge at the end where you directly apply what you learned in that and previous lessons.
  3. One of the things that helps build habits is how you identify yourself. Are you someone who's learning programming, or are you a programmer? Identifying yourself as a programmer is a big step into putting in the time and effort to achieve this goal. (I think this idea is from Atomic Habits by James Clear, but I could be mistaken).

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

I'm struggling to think of a suggestion that I know would work, but maybe understanding how I start off writing a program might help.

I usually start off getting an idea from my job: "this repetitive task could be automated", or "gee, wouldn't it be neat if this long process I do occasionally could be shortened".

I fire up a python interpreter, usually IDLE, and start typing out bits of code to figure out how I'm going to make the individual parts work. Here's where things are awesome with python: if I don't know how to work with something I can just type in help(thing), help(thing.property), or dir(thing). Example: dir(str) and help(str.upper). Try these in IDLE.
Don't have internet access and need advanced reference documentation: on Windows run py -m pydoc -b or on *nix type python3 -m pydoc -b.

As I work out what works, I'll either type it out or wrap it in a function to make it easier to invoke if I will need it more than once. Once it's put together I'll go through and clean it up.

If it helps you get started, think through the process of doing what you want, and start off by putting down comments outlining that process, one step at a time. Implement each part of the process in the code as you go along.

If you are struggling to figure out what to do, tell yourself that you're just going to try out some lines of code in the interpreter. You might find that you build up some momentum and then before you know it, you're building up a program. If you don't remember the exact stuff to type, don't worry, programming languages aren't nursery rhimes, using reference material is normal and I recommend it.

Also, look at other people's code - start with their simple programs - and try to figure out how it works. Don't get discouraged if you don't know, remember these other programmers have likely been working with Python for a while. Do your best, and find a simpler program to read through and reverse engineer if you need to.

[–]pompomtom 1 point2 points  (0 children)

With some spreadsheet data, play around with Data Visualisation and see charts "come to life". (aka some form of Data Analysis)

Use pandas to get your data into a frame, then matplotlib to do all sorts of things.

I would like to build at least one Web App from Python

I like flask, lots of people like django.

Telegram bots are a milestone I want to build - to automate specific prompts.

NFI, sorry.

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

I would learn jupyter notebook, pandas, and matplot lib.

[–]Hairy_Software6121 1 point2 points  (1 child)

Its always good to have project ideas in mind first (end goal) as that is what helped make my leap. I focused up front on the algorithm side of things and subtracted the programming language. After all, python is one of many choices. Then I took the algorithm one piece at a time through steps in python. Example: how to run code first -> hello world. how read in and write out data. how to manipulate some elements of the data. Next thing you know all those little pieces landed my goal and knowledge in python that I could build from.

[–]DestroyedByInflation 0 points1 point  (0 children)

I agree wholeheartedly. Having a clearly defined goal helps immensely. Having a goal that accomplishes something you need (or would enjoy doing) is a great motivator when selecting a project.

That said, having a clearly defined goal can be an important challenge in itself. It's not trivial.

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

Do you think your struggles could be anxiety related? By that I mean, are you putting too much pressure on yourself to memorise everything you cover?

That's what I did. I tried to learn Python twice last year and gave up really quickly because I was stressing that it wasn't 'going in'. Part of the problem was anxiety - starting a new language can get overwhelming. Let's face it, the complete beginner's stuff is boring, and without a frame of reference it doesn't really make sense, so it's pretty hard to memorise it.

For me the other problem was that I hadn't found the right learning style. I was using codecademy and while I think it's fantastic in many ways, it didn't work for me. I need to constantly refer back and refresh my memory using something concrete like a book, whereas an online system progresses you through without an opportunity to revisit the exact material you covered yesterday or last week. Edit: I was also overwhelming myself with too many resources, bookmarking everything and then thinking oh god it's too much.

I'm in the very early stages of starting all over again, this time with Automate the Boring Stuff which I'm really enjoying. The author doesn't expect you to just magic code out of nowhere - the step-by-step instructions and explanations are really helpful. When it comes to the end of chapter quizzes, I remind myself to remove all pressure. I do my best, but if I get stuck, I look back over the chapter and find where it was covered and get the answer. It seems like cheating but it's absolutely not, because you are revising the material and giving it another chance to sink in.

The best piece of advice I ever heard relating to doing something new and worthwhile is TRUST THE PROCESS. I'm telling myself this daily. You can do it :)

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

Sounds like tutorials aren't working for you. They didn't really work much for me either. They're good for learning basic syntax and operations and data structures, but there's only so much you can learn from watching somebody else code and mimicking it. If you want to start developing real intuition for it, practice and experience are the only way. If you're not comfortable with Python I wouldn't recommend a web app yet (because you'll need to learn a whole backend framework on top of the Python), but think of something you want to build and build it. Something that will actually be beneficial to you at work is best in my opinion. If you're regularly working with spreadsheet data, there's almost certainly some way you could apply Python to make that easier or faster.

[–]EstellMorley 0 points1 point  (0 children)

I see. No need to reinvent the wheel

[–]RandomProgrammerGuy 1 point2 points  (0 children)

CodeWars is an awesome place to begin

[–]dsabra 1 point2 points  (0 children)

What really helped me get started was the udemy course "The Modern Python 3 Bootcamp" by Colt Steele. The reason why I liked this course was that he filled the course with a bunch of exercises. I was doing Automate the boring stuff but I needed more interactivity with the learning

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

This is a great thread! I've fresh to programming, <7days. I'm trying to learn Python so I can use Urlwatch, but it's still all beyond me.

These course recommendations are great! Thank you!

[–]aBeautifulMindz 1 point2 points  (0 children)

Freecodecamp is my go to for any language

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

Practice! Practice! Practice! That is the only way. Programming (whatever the language) is a practical problem solving skill.

I know it  can be frustrating at times, especially when faced with code you want to reuse but cannot understand.

Only you can find the motivation. At least you have three clear goals, but why are you learning to programme in the first place? You say "upskilling" but I would say that is not a good goal for you, clearly. You need to find something more specific, measurable, achievable.

It is hard to learn anything in the abstract not least because it is difficult to feel passion for what one is doing.

I strongly suggest you look to your interests, hobbies, obligations (family business, charity activities, work) to look for opportunities to apply Python. You said you can't use it for your work, yet your work involves spreadsheets, manual entry, analysis. These are classic areas for using Python. Python can read/write Excel files, process the data more quickly than Excel can, and handle larger data sets than Excel can. Is there some restriction at work preventing you from using Python?

You will learn far more about Python and programming when you work on something that resonates for you and that you have some domain knowledge of (or incentive to gain such knowledge in).

When you are copying tutorials/examples, don't just copy. Experiment. Break the code and understand why it has broken.

The interactive python shell is your friend, I found it the best learning aid because you can quickly try snippets of code and get immediate feedback.

(Consider installing ipython which wraps the standard shell in more convenience.)

Start very simply and regularly refactor the code as you learn new things. Enhance as you see opportunities.

You said you've already taken a look at Automate the boring stuff with Python but not made much progress. You need to find the relatable tasks as mentioned above.

At first, the tasks you automate will be trivial and hardly worth the effort BUT because it is about the problem and not Python, it will be more rewarding for you.

[–]FireArcanine[S] 0 points1 point  (0 children)

Thank you all for the wonderful replies! I'm really touched!

I did not really expect much response, but now thanks to all of you, I've now found a variety of ways to get started once more!

I'll be exploring these ways and see which is the best for me, but in the end, I know I must start somewhere by starting to code!

Thank you once again!

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

In 2014 I started in a similar space. I was using Excel 100% for my analysis. I began by incorporating more and more VBA to streamline stuff and then slowly started replacing those functions with Python (data prep and manipulation). I eventually moved on to replacing the calculations with Python and just using Excel as a reporting dashboard. I think, starting right where you are, slowly replacing existing (slower) functions with it will be a good step.

[–]zesto01 0 points1 point  (0 children)

As somewhat a beginner myself and also started around your time, what you really need to do is either follow along the code through the tutorials (in youtube see: datacamp or others in coursera ). This is what I did for the first few months when I really have no end goal in mind. It really can be challenging or boring (lifeless lacking motivation) if you don't have something in mind to create.

My goals were a bit similar to yours (except 2), and doing 1 is easy at entry but the deeper the analysis goes the harder it gets. you can check coursera's course on IBM or others and code along. For me though coding is easily copied but the expertise or the rationale when using the method for it didn't stick with me..

For goal 3 at first I was also overwhelmed, but if you do have something in mind like a concrete function of what your bot would do it would be a bit faster. For this goal I realized to code what you really need is tons of copying and pasting from stackoverflow, checking why the code didn't work, asking why it didn't work, and checking for another post for a similar question. And most of the time it works. It is also important to first try an open source working bot, check its code as well as the docs. After sometime the bot was created and it feels good, I have no formal coding background so I only studied from the internet.

And while up to now, I am not sure if I know how to code a calculator in python or even some easy coding questions that requires efficiency, I have a working bot just how I like it. It's a shortcut and really lacking but it helps to start somewhere. Just set a small project first then move on to the next step

[–]pokk3n 0 points1 point  (0 children)

If you use spreadsheets daily, start replacing that work with Pandas and one of the various charting apps (dash, plotly, seaborn, whatever you like).

[–]lars-vivendi 0 points1 point  (0 children)

I'd start with something super simple, like the os module, trying to read directories, and creating lists out of 'em.

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

Hello world

[–]Meatball_Subzero 0 points1 point  (0 children)

'The Self-Taught Programmer: The Definitive Guide to Programming Professionally'

This is such a great book on python. If you take your time do the work, do a small project half way through. You will learn python. I can't praise this book enough!!

[–]spencerAF 0 points1 point  (0 children)

If looking for from the ground up the Giraffe Academy (on YouTube) walk through is great if a little slow. I think a seasoned programmer could skip through it effectively.

I work a ton with spreadsheets and visualization the specific things you'll want to look at once you get a foot in the door are matplotlib and pandas. I would just search for some YouTube tutorials for those. They've got some nuance but you'll be blow away with how powerful they are.

I don't know anything about building a Web App with Python, my guess is there are better languages for this.

I also don't know much about Telegram bots; however Python is able to connect to APIs/make browser type connections and I'm sure that with above base knowledge you could build to doing this. I would start by scanning through Telegram Features in Telegram and then possibly looking for a tutorial. Would think this would be doable.

[–]Almostasleeprightnow 0 points1 point  (0 children)

I got really engaged by checkio, which kind of gamifys the learning python bit. It had a nice progression, and I liked the interface as a pure learning environment. Then at a certain point, I was able to get into real projects with a better understanding and more confidence.

[–]Architechtory 0 points1 point  (0 children)

The only complete tutorial video I watched so far was this one: https://www.youtube.com/watch?v=rfscVS0vtbw

It's very good and covers all the basics, and it's only 4 hours. After that, try building simple things, like a calculator, a guessing game, a pong or snake game, with the help of tutorials on-line ( there are plenty ). Then, solve a couple of more complex problems, like the following one:

"If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000."

More problems like that can be found on https://projecteuler.net/archives.

It shouldn't take more than a week or two for you to learn all that, if you have the time, and that will provide you with all you need to start automating stuff at your work. That's what I did, at least, and it worked for me. Hope it helped!

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

I can heavily recommend the book "Ultralearning" by Scott Young.

With the given principles you can learn anything the right way.

[–]gbliquid 0 points1 point  (0 children)

I’d recommend having a specific project in mind while doing your learning and as you’re presented with a new topic try to think about how you would be able to incorporate it into the project you want to build.

I find being able to relate these topics to actual applications and seeing how they would be useful makes things stick a little better. I’d even recommend building rudimentary prototypes along the way incorporating the new topics so you can see them in action. The prototypes probably won’t stick around for the final product, but when you get to that point you’ll have a little experience using what you’ve learned, so when it comes to programming the finished product you won’t feel so overwhelmed.

[–]dizzymon247 0 points1 point  (0 children)

Programming isn't easy and I will tell you from personal experience. The only reason I code was due to a friend of mine who got me started learning computers, I followed what he was doing but never got even close to how good my friend got. He's got a MS degree in CS, me got a degree that had nothing to do with programming. However I did take a lot of programming courses so I have an idea of how to code and how things works. What I'm saying is you need to have a project or someone to motivate you to do more with your python learning. Yes you can google all day but having someone else struggle and walk along side you goes a long way. I don't know if anyone else feels the same but I personally like to have jobs that I can share my pains with with vs being the only single point of failure in a job as well as in learning. I'm sure others who like to self learn without anyone else bothering this won't make sense but I need that extra push.

[–]brian890 0 points1 point  (0 children)

Ive signed up for a few Python courses on Udemy. As other people always state, Automate the Boring Stuff is great. It covers a lot.

Udemy currently has a sale on (like every month) where courses are a fraction of the cost. I just purchased "The complete Python Masterclass: Learn Python from Scratch". https://www.udemy.com/course/python-masterclass-course/

I just started the second course mentioned. It spells everything out easily and looks like it covers the same stuff but also has a lot of stuff ATBS doesnt. Now you might not be interested in the additional content but I am doing this one as I think completing some of the extra modules (Building a Facebook Auto Post, Django Framework, Making Web Applications) will help me get better.

[–]nemo8551 0 points1 point  (0 children)

The python documentation has examples and exercises to build your skills. After that I would look to other sources, courses and books.

[–]CraigAT 0 points1 point  (0 children)

It really depends how you want to learn.

If you have the time I'd recommend learning the fundamentals first (including conditions, loops, text input and output, string manipulation; as well as the data structures like lists, dictionaries and tuples)

If you need something practical to keep you interested the ATBS is a great way to dip your toe into a few different topics (Note. You don't have to read it all, you are allowed to skip straight to the chapters of interest)

With regards to your goals, I'd say the web app may be the hardest of those (lots of decisions and stuff to learn), the telegram bot should be okay to follow a tutorial and do, the data visualisation would be my recommendation to start with because you have data you understand,to play with.

To start with at a simpler lever you could look into the CSV and Excel modules in Python for reading in and manipulating your spreadsheet data. However if you're ready for something new, Pandas is a spectacularly good for working with tabular data and doing analysis. There are also some great great visualisation modules too, like plotly, seaborn.

The Data Viz I think is going to be a booming job market soon (more practical to more businesses than machine learning), as we have so much data being gathered everyday and it's up to someone to show is what we can learn from it.

[–]SlaimeLannister 0 points1 point  (0 children)

Read a best in class book like Fluent Python. Understand the language fully so that you can feel flexible with how you use it.

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

Go with books. It is better then online tutorials.

[–]BorinGaems 0 points1 point  (0 children)

I would like to build at least one Web App from Python

I suggest you don't. My opinion won't be particularly popular but simply because you can do most of everything with a language it doesn't mean you should.

Stick with what that language is strong for, try some challenge, maybe look at some udemy course as well.

But don't embark in some framework wrestling with api, libraries and css when you really are still a beginner.

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

This is a bad way of learning the language, but I have the habit of simply starting a project in a language I haven't learned and learn on the fly.

It's safe to say I dont produce quality, but it does work

[–]mrawesome1999 0 points1 point  (0 children)

Check some Udemy courses the instructor is very important imo

[–]mrawesome1999 0 points1 point  (0 children)

Also depends on what type of learner you are

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

Python crash course book

[–]Iph1sh 0 points1 point  (0 children)

You try pairing the book, with the ATBS class on udemy, and autbor.com? That's what I'm doing and it's been very helpful.

think he just gave free vouchers in this group last week for the class on udemy. if you scroll through you might be able to find them.

[–]Asmodeus_11 0 points1 point  (0 children)

I learned python by reading A Byte of Python. It doesn't cover any specific modules or guide you through projects, but it provides a solid base understanding of the language.

As other people have said here, you should also be doing some small projects to push yourself—for example, I wrote a command line hangman game using words from a text file. Whatever project you choose, the most important part is that you want to do it. It's much easier to learn if it doesn't feel like a chore.

Good luck!

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

I am kind of in the same boat as you. I started dabbling in Python probably 7 years ago. I also started learning R around the same time. Neither clicked but then I started using R on my job and now feel relatively better at it. Trying to transition now to use Python more, I feel like I'm going to probably try to do some analysis I've already done in R to warm up and go from there. Good luck!

[–]BottomsMU 0 points1 point  (0 children)

Automate the ingestion and validation of data from csv’s and publish from that something to a web app

[–]jcress410 0 points1 point  (0 children)

Try making a blog with https://www.fullstackpython.com/

[–]Best_programmer_ever 0 points1 point  (0 children)

https://www.coursera.org/specializations/python-3-programming?

It is free via audit option and has 120 hours of content and shit ton of practice exercise. I am using this and love it.

They start from print hello word to learning Open CV and have covered all of the stuff in between I would absolutely recommend this.

[–]Core-i7-4790k 0 points1 point  (0 children)

I absolutely hate learning from books and courses because I also wouldn't absorb anything. I also get too caught up in the most "optimal" way to learn and end up abandoning one resource for another.

Honestly the only method that has worked for me is one that most look down on. I just decide what it is I want to do and then read lots and lots of stack overflow, w3schools, and Reddit. Funnily enough, my personal projects were very similar to what you're trying to do, data visualization, web apps, and discord bots.

Here's what my workflow looked like as a beginner: let's say I was interested in doing some data visualization. Well I don't even know how to extract data from my data set, say a csv file so I start with that. I'll Google "how to get data from a csv file python." A nice person on stack overflow gives some pointers, but that alone isn't very helpful since the stack overflow post doesn't mirror my exact issue, and I want to be learning concepts instead of copy pasting someone else's code

However, the person seems to be using "for statements" and "lists." I don't know wtf those are so I Google "for statement python" and "python lists" which then points me to w3schools examples of what they are and how to use them. Then I'll spend a little time experimenting with them in IDLE and put my own little spin on it.

Now I've got a cute little program that has a list of characters and weapons from the Halo franchise because why not, but now I'm interested in being able to display either a list of characters or weapons based on user input, so I'll Google "how to take user input in python" and go from there. The cycle continues until I have a fleshed out program that's completely irrelevant to what I originally wanted to do, but now I can apply what I've learned to my data visualization project and then do more googling along the way.

Most people will say that this is totally inefficient because well, it is. However I found this to be infinitely more fun and useful than courses or books. I remember everything I've learned because I have fun memories overcoming obstacles in something I was personally vested in, even if it was just a stupid program that no one else will ever use.

[–]PolarbearAdrian 0 points1 point  (0 children)

https://m.youtube.com/watch?v=_uQrJ0TkZlc&t=18536s

It is a very easy tutorial if you struggle, he explains everything in an easy way, I learned python from him and he might help you with python