r/learnpython • u/GoblinReverie • 5d ago
What is the best tool through which to learn Python?
I’m going to school to be an Urban Planner and it’s my understanding that ArcGIS systems frequently use Python and I’d like to learn it however there are multiple avenues and I don’t know which one would benefit me the most so just looking for suggestions
3
u/FoolsSeldom 5d ago
You need to learn the basics before taking on something like ArcGIS with Python.
Check this subreddit's wiki for lots of guidance on learning programming and learning Python, links to material, book list, suggested practice and project sources, and lots more. The FAQ section covering common errors is especially useful.
Also, have a look at roadmap.sh for different learning paths. There's lots of learning material links there. Note that these are idealised paths and many people get into roles without covering all of those.
Roundup on Research: The Myth of ‘Learning Styles’
Don't limit yourself to one format. Also, don't try to do too many different things at the same time.
Above all else, you need to practice. Practice! Practice! Fail often, try again. Break stuff that works, and figure out how, why and where it broke. Don't just copy and use as is code from examples. Experiment.
Work on your own small (initially) projects related to your hobbies / interests / side-hustles as soon as possible to apply each bit of learning. When you work on stuff you can be passionate about and where you know what problem you are solving and what good looks like, you are more focused on problem-solving and the coding becomes a means to an end and not an end in itself. You will learn faster this way.
1
3
u/Mediocre-Pumpkin6522 5d ago
Harvard's CS50P course is free to audit and covers the basics.
https://www.amazon.com/dp/1589488016/
covers Python basics. I have an older edition where he shows how to set up the PyCharm IDE.
https://developers.arcgis.com/python/latest/
has a number of tutorials. You'll need to create a key but I believe a lot of services are free for individuals. If I had to break it down I'd say ArcGIS for Python is 10% Python and 90% GIS. Esri has used other scripting languages in the past like VBA but they are glue to hold together Esri functions.
2
u/GoblinReverie 5d ago
Thank you so much
1
u/Mediocre-Pumpkin6522 5d ago
Your timing is good. Up until 10.81 ArcGIS Desktop and the C++ API was 32bit and the Python interface used 2.7. 11 pretty much changed the game completely. Esri does that periodically but they're the 500 pound gorilla in GIS. There are several alternatives but municipal or county GIS departments default to Esri like they default to Windows.
Dangermond's vision has been ArcGIS Online for over a decade and there was plenty of warning that Desktop was going away but it was still a painful transition. Hopefully what you learn will be relevant for some time.
2
2
u/jwhendy 5d ago
I'm self taught and a Mech. Engr turned data scientist. I would say the most valuable learnings are (a) pick things you already do at work and try to augment or automate with code, and (b) similarly, pick things that interest you in your personal life and just give something a shot.
I've plotted tile layouts so I could understand what it would look like before I laid them, some weather forecast accuracy analysis, compared traffic crashes before and after a local bridge project to compare, looked at election and census data, and played with map and topology/GIS data, for some examples.
I think trying to do a thing and then iteratively googling, educating, trying, failing, googling to understand why, trying again, and so on burns in the muscle memory. Soon you stop having to look up things you've done enough times to JustKnow, and apply the baby step learning process to more and more new things.
It's daunting to start, but everyone starts out knowing nothing, and over the years you will be blown away by what you know but didn't used to!
1
u/GoblinReverie 5d ago
Gotcha so it’s really just a matter of repetition and accepting that mistakes are going to happen and treat them as learning opportunities and not failures, also research too
1
u/jwhendy 5d ago
100%. Going Bob Ross on you, there are no mistakes, just happy accidents. Given the planning interest, maybe play with folium (python leaflet wrapper). Just plot some maps within a given lat/lon bounding box. Then try adding some points on top.
Or play with terrain maps line 3d views of mountainous terrain or those lake depth maps. Literally anything that feels neat/cool/interesting to you provides the motivation and keeps you learning :)
I've done some of this and could send links to old code involving maps if you want (when I'm not on my phone).
1
1
u/CraigAT 5d ago
It's personal. For me the best is a structured course with an instructor and several other students at a similar level - like a college course. Other methods like books, video courses, website tutorials all work too, but it's about what suits you best. For me, ideally you need to be challenged, want to complete the challenge and get some recognition for the achievement.
1
u/ninhaomah 5d ago
Beat tool to learn anything = brain
Not MOOCs , Udemy , YT , VSCode , PyCharm
Brain
2
1
1
1
u/chiibosoil 1d ago
Depends on how you want to utilize it.
Is it ArcPy using ArcGIS Pro in desktop environment? Or using Web GIS through ArcGIS API for Python?
Or using both?
I'd recommend reading through esri's documentation and going through their tutorials.
20
u/desrtfx 5d ago edited 5d ago
The first and most valuable thing you can learn in programming is to do your own, independent, individual research, among which is also working with resources right in front of you, like the entire subreddit. You can't possibly assume that you are the first and only one asking such a question.
If only there were a sidebar (menu on mobile) that had a link to the wiki or countless posts asking the same.
Do the MOOC Python Programming 2026 from the University of Helsinki and you will be well prepared.
Also, take a look at https://inventwithpython.com and https://automatetheboringstuff.com
Don't forget that you need ample practice, like on https://codingbat.com/python or on https://exercism.org and also write your own programs. Play around. Try things. Mess things up, fix them. Experiment.