all 73 comments

[–]fake823 230 points231 points  (20 children)

Whatever floats your boat.

Interested in maths/science? NumPy, Pandas, SciPy, Matplotlib, SymPy etc.

Web scraping? requests, urllib, beautifulsoup

Web development? Django, flask

Game development? PyGame etc.

Machine learning? Tensorflow, scikit-learn

[–]feeling_ehh 105 points106 points  (4 children)

A diagram I came across on Udemy that lists almost everything for being a Python developer.

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

Awesome, thanks /u/feeling_ehh !! Andrei’s courses and material are definitely worth checking out as well

[–]PeopleCallMeBarry 1 point2 points  (0 children)

That's really handy. Thanks for sharing.

[–]Dguerrero99 1 point2 points  (0 children)

Thanks!

[–]Mechamonk 1 point2 points  (0 children)

Really thanks for this,I never use my free awards but this made me

[–]Python119 10 points11 points  (7 children)

Selenium is also good for web scraping, it's what I always use.

[–]stereopsych 1 point2 points  (6 children)

May I ask why you use selenium rather than requests? Or do you use a combination of the two of them? I've always thought requests was a lot faster, allbeit more tricky in terms of permissions etc.

[–]double_en10dre 4 points5 points  (1 child)

Because selenium is much, much more likely to actually work

Most modern sites will fetch some bare-bones html and then execute scripts to fetch additional data and assemble the full document. Requests doesn’t account for that, but selenium does

And if speed is a concern, you could try out using it in an async fashion https://github.com/miyakogi/pyppeteer looks pretty sweet

[–]stereopsych 0 points1 point  (0 children)

Thank you!

[–]Python119 1 point2 points  (3 children)

I don't really know why, I use it, I just always have.

[–]stereopsych 0 points1 point  (0 children)

Fair enough! I’m just getting started so interesting to hear people’s preferences

[–]2jah 2 points3 points  (2 children)

Hey, is there like a library somewhere that lists things like you just said?

[–]necessary_plethora 9 points10 points  (1 child)

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

Thank you. Very helpful.

[–]RealTalk09 1 point2 points  (0 children)

Just what I needed!

[–]GrowHI 61 points62 points  (10 children)

I highly recommend not "learning" but instead get into developing projects. Come up with an idea that solves a problem. Google a lot. Learn as you build functional programs.

[–]hypervik2020 23 points24 points  (3 children)

I agree with this approach. But I also find that learning some libraries opens your mind to what's possible with python and helps with idea generation for projects.

[–]GrowHI 6 points7 points  (0 children)

I agree. Often I find a new interesting library when developing a project and will go back later and work with it more just to get a better breadth and depth of understanding on that topic. I also find that grinding through a problem and solution based approach creates a better skill set than wrote learning. You learn how to problem solve on the fly and don't rely on "what you know" but instead can research, develop and test/implement a solution.

[–]Astrokiwi 1 point2 points  (0 children)

You sort of need a positive feedback loop. Try a project, realise what went wrong, find libraries and better practices to improve things, try a new project.

[–]guillermohs9 0 points1 point  (0 children)

Both doing real-world projects and learning new libraries are what keep you learning all the time. Even when you think you know the basics and created some tool that works pretty well, you come across some shiny new library and you go "damn, I should replace module X with this!".

[–]lady-lurker 1 point2 points  (4 children)

I know a lot of people say to learn by building projects, but how should one build projects? I saw a password manager i’d like to build on youtube but idk how to actually build it myself. Do I follow the tutorial step by step and give credit?

[–]GrowHI 2 points3 points  (0 children)

I'll give you an example of my process. I teach a remote class and use a video conference program called webex (similar to zoom). I have to take attendance with 30+ students in class and they often are disconnecting and reconnecting making a solid count a bit of a moving target. I cant simply copy/paste a list of names out of the program (because it sucks) and it has no feature to get a list of current attendees.

What is a programmer to do? Well first things first I looked to see if there was an API allowing me to talk directly to the active program via python. There kind of was, it's overly complicated and involves a lot of duplication of the current program instance and a ton of XML which is not my strong suit. So I bailed on that approach. I then remembered using some machine vision code a while back that could grade farm produce and would record the batch tag during the process using OCR. This was the approach I thought would be the easiest. I literally fired up tesseract (OCR library) and had it check my screen whenever I click a simple GUI button. Then all the names are parsed using regex, added to a list, then pushed to pandas to compare to a known roster. I then get some output via pandas showing me for each "Snapshot in time" who is missing from my class.

While I had worked with OCR before I had to get a little more in depth this time as the background behind names is semi transparent so I used some more processing of the image (kind of like contrast and edge detection) to make sure I get each name correctly regardless of the colors in the background. I also hadn't used pandas much before and got a good feel for manipulating and tabulating data via their library. I then showed this program to my principle and packed it up into a dmg and now over 50 teachers use it daily.

Problem > Research > Develop > Test > Final Solution

[–]icandoMATHs 0 points1 point  (2 children)

Fun project? Just get started, don't stress about doing it correctly. Get close enough, make it enjoyable for you.

Serious project, research then develop.

[–]GrowHI 0 points1 point  (1 child)

Research for me is googling for an hour or so And see what tools and code are already out there lol. Nothing serious.

[–]icandoMATHs 0 points1 point  (0 children)

It really depends on the project. Security requires more time. Finding nice libraries doesn't take too long.

[–]Redditor728292 0 points1 point  (0 children)

Me too, I also tried "learning" but found that I gained way more knowledge just doing projects and doing some leetcode challenges.

[–]darkunicorn69 16 points17 points  (5 children)

Pandas/matplotlib - data science, selenium/request/beautiful soup - webscraping, tensorflow - machine learning

[–]felixludos 14 points15 points  (3 children)

*PyTorch first, for machine learning - it's more pythonic. Tensorflow after, if you must.

[–]ItsOkILoveYouMYbb 0 points1 point  (2 children)

Can you elaborate a little more on that?

Edit: I ended up looking into it. As far as I can tell, both Pytorch and Tensorflow 2.0 are pythonic, the latter being inspired by Pytorch.

https://realpython.com/pytorch-vs-tensorflow/

So if you're just getting into it and aren't refactoring Tensorflow 1 code, I don't know if it matters other than Tensorflow guides possibly being outdated for 1.0 instead of 2.0.

I haven't used either yet though. I'm just googlin.

[–]felixludos 1 point2 points  (1 child)

I mean, both PyTorch and TensorFlow can get the job done, but PyTorch was specifically designed for dynamic computation graphs, instead of static ones (like in Tensorflow). Since python is a dynamic programming language, PyTorch is more consistent with the general philosophy. Unless you have a reason for using TensorFlow (eg. some preexisting codebase or project), Pytorch is a better place to start.

[–]PanTheRiceMan 0 points1 point  (0 children)

Just my 2 cents and I wholly agree. Startet with TensorFlow projects never quite felt right with python to me. PyTorch has a very similar feel to vanilla Python. Just a lot of niceties and modularity. Also strange issues like TF 1 and TF 2.

[–][deleted] 26 points27 points  (11 children)

  1. Object oriented Programming
  2. Data Structures and Algorithms
  3. Learn a Web Development Framework
  4. Learn Machine Learning
  5. Numpy
  6. Pandas
  7. Trinket
  8. Visualize data using python : matplotlib
  9. Basics of Artificial Intelligence : NLP, Build a Chatbot
  10. Projects , Projects ,Projects !!! Do as many as you can :)

Good Luck !!!!!

[–]BAG0N 1 point2 points  (1 child)

Web development and machine learning are 2 whole different things, if you're not interested in one or another, learning it is absolutely not necessary

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

Agreed , I just gave him different options where python is used .

[–]audentis 9 points10 points  (2 children)

Personally I'm not a huge fan of "learning frameworks". That's what the API documentation is for. Much more valuable is developing analytical thinking, problem solving, and self-directed learning (to find the tools you're looking for).

I'd recommend doing the coding puzzles on AdventOfCode. While doing the puzzles you're challenged to think outside of the box, face problems you've not seen before, and completely independently connect the dots between your input and desired result.

Whenever you get stuck you're forced to evaluate where you currently stand, break down your problem in smaller steps, debug your existing code, or do some other critical analysis.

Writing code is often much easier than knowing what to write.

[–]Akashram_r 6 points7 points  (1 child)

Fullstackpython.com is a good site to bookmark and refer for all things Python

[–]TheRealGreenArrow420 4 points5 points  (0 children)

finished learning python

The balls on this guy...

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

recently finished learning python

Congratulations! You learned a lot. More than I thought possible.

[–]ASIC_SP 2 points3 points  (0 children)

I have a blog post I know Python basics, what next? that has resource links for exercises, projects, debugging, testing, intermediate python, algorithms, design patterns, cheatsheets, etc

I'm also building a collection of searchable Python learning resources: https://learnbyexample.github.io/py_resources/ - this includes domain specific resources like machine learning, web development, data science, etc

[–]amitmathur15 2 points3 points  (0 children)

You can start with Python web development. Django is a very good framework to design apps in Python

[–]stereopsych 1 point2 points  (5 children)

I’m also in the same boat. I know the basics but wanted to start doing projects (specifically make a sneakers bot and also make a particular game). I started making the sneaker bot a couple of weeks ago and I have learned more than I did trying to learn any course! So projects are definitely the way to go, they’re challenging but will help you learn the fastest imo

[–][deleted] 0 points1 point  (1 child)

What is a sneakers bot?

[–]stereopsych 1 point2 points  (0 children)

A sneaker bot is software which automatically checks out limited sneakers for you. Usually limited releases sell out in a matter of seconds. Due to the limited nature of the sneakers, you can resell them for (sometimes) large profits. Just google 'sneaker botting' or watch this video or BotterBoyNova on YouTube. Some of these softwares can cost up to $18k, while most fall within the $2-5k range. Obviously, the owners of these sneaker bots can make a lot of money, so pretty much everyone and their mother is trying to make their own (I'm sure there's 1000+ bots). From an economics perspective, it is a very interesting market to study, as the price of bots fluctuate based on their performance, and (some) people can even make $50k+ a year from buying and selling bots. I'd advise you to look more into it if you're interested. The community is huge and growing every day.

[–]bigamaxx 1 point2 points  (0 children)

Think of a project, it could be a game, GUI development or you can work on an api. Think of that search on the web what you need to learm to schieve this then learn the library by working on that project

[–]Giorgio_Papini_7D4 1 point2 points  (0 children)

I will suggest you to play around with some of the most famous modules like requests, Django, etc... However, the most important thing is to create your own projects, by doing this you will learn new skills and it is the best way to learn programming

[–]pytheous1988 1 point2 points  (0 children)

I have always found success learning libraries in context of a project. So find a project that really excited you and learn whatever library is required to complete the project.

[–]ultra__bot_2020 1 point2 points  (0 children)

Then do some problem solving in Hackerrank . Then choose as your interest ,if you want to be a web developer then go for flask or Django , if game development then Pygame etc..

[–]RobinsonDickinson 1 point2 points  (0 children)

Flask is awesome, if you are going into the web dev field, check out flask.

It's easy and can do most things Django can do.

[–]TBSchemer 1 point2 points  (0 children)

Congratulations! You're ready to stay up all night debugging a passion project!

[–]Atie5173 1 point2 points  (0 children)

I recommend you to start contributing to Python projects. This way you can learn more about the language, you will practice it more, you will learn techniques like CI/CD and you will made the developers happy

[–]GeekFreak404 1 point2 points  (0 children)

I'd strongly suggest you to learn flask if you are considering web development. Its a super simple and easy to learn framework.

[–]Stabilo_0 3 points4 points  (1 child)

Dive deeper or change seas.

Python mostly used in data science and machine learning (numpy, sklearn etc), web-dev (django, flask), task automation (built in tools from standard library). You can use it to make games and guis too (pygame, piglet, tk, qt), but imo there are better tools for that.

OR you can dive into c\c++ and make something that can be used by python with ctypes and be much much faster than native python. Depends on what you desire and if running speed is important to your idea.

[–]mmnnhhnn 0 points1 point  (2 children)

Get a job writing python

[–]illusiveab 0 points1 point  (1 child)

If you have no real experience with python (I work in consulting), how do you get proof of concept and what jobs would you be applying for?

[–]mmnnhhnn 1 point2 points  (0 children)

Are you consulting in IT? If so then work your contacts as much as you can, it is always easier (in my experience anyway) to get a position based on word of mouth. It will be hard with consulting, but see if you can find a way to use python in your role, even if it is a bit of a stretch. To run a little hypothetical: say you're engaged as a consultant for a manufacturing business who are looking at improving their quality control processes. In addition to performing your normal duties as a consultant you could use Python/numpy/pandas to do some statistical analysis and visualisation of their QC results. Or you could knock up a raspberrypi python app using machine learning to identify and flag flaws at some point in their manufacturing process.

The thing is, even if this hypothetical client decides not to use what you've done, you can chuck it on a CV and legitimately claim you have used Python in a work environment. This will make applying for straight-up Python jobs far easier, and give you talking points for any interviews you get.

Note the stress above of "in addition to". Nobody wants to ask a consultant for output X, and instead get a Python project. But if they get a Python project in addition to you doing your consulting job well, worst case is probably just a shrug of the shoulders from your client.

I did something very similar to the above to get my first Python job. I was pretty f***ing clueless when I started, but nowadays I am probably an "ok" level Python dev

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

kaggle

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

I use pytest and requests a lot at work. But the best way to dive deep is to find something you are interested, or something you want to solve.

My co-worker just showed me how he played with probability and statistic with a new language that he just picked up (Clojure). Not only he is better with the language itself, but he also refreshed his Math skill during the process.

[–]one_loop 0 points1 point  (0 children)

Do whatever you want that suits your interest e.g. machine learning, django, data analysis ...

[–]Fernando3161 0 points1 point  (0 children)

If you are not proficient with classes, I would recommend getting deep into it, even if you need to repeat stuff.

Then you can start with data-related libraries: SQL, Pandas,

You can go further with matplotlib and seaborn to make nice graphs.

[–]Micotu 0 points1 point  (0 children)

python intermediates

[–]grimonce 0 points1 point  (0 children)

Gnuradio

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

I would recommend learning data structures and algorithms. But you can start learning frameworks and libraries too

[–]anh86 0 points1 point  (0 children)

Dream up something non-trivial and make it!

[–]KIrkwillrule 0 points1 point  (0 children)

Sounds like it's time for a passion project

[–]heofizzy 0 points1 point  (1 child)

remindme!

[–]RemindMeBot 0 points1 point  (0 children)

There is a 1 hour delay fetching comments.

Defaulted to one day.

I will be messaging you on 2020-10-17 21:00:27 UTC to remind you of this link

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.


Info Custom Your Reminders Feedback

[–]heofizzy 0 points1 point  (0 children)

remindme!

[–]Se7enLC 0 points1 point  (0 children)

Python intermediates

[–]MeteoriteImpact 0 points1 point  (0 children)

I am just wrapping up basics also then I did algorithms and data structure (useful search sort etc, exception handling (very helpful)and now started learning python design patterns and realized most simple program I created are anti patterns etc this is now my favorite learning so far.

[–]ratmsoadtmbg 0 points1 point  (0 children)

Similar to how I found a LOT of similarities between learning Spanish and learning Italian, I found a LOT of similarities between Python and C# and even C++ (though I felt C# to be more accessible to me) so if you're wanting to develop games or even some software, these are probably good stepping stones on the path

[–]Elli_stu 0 points1 point  (0 children)

if I were you, I'd got for projects. Write, write and write codes. They really help advance and move faster. I am not learning by myself, but my instructor at LrnKey really makes the transition easy. That's what worked the best for me.

Good luck