Back to catalog
Season 45 5 Episodes 16 min 2026

PyCharm Dedicated Python IDE

v2026.1 — 2026 Edition. A 5-episode audio course exploring the power of PyCharm 2026.1. Learn how to set up isolated projects, uncover hidden productivity gems, master the visual debugger, analyze asynchronous code execution, and collaborate remotely with Code With Me.

IDE
PyCharm Dedicated Python IDE
Now Playing
Click play to start
0:00
0:00
1
The Power of a Dedicated IDE: Project Setup
Discover why a dedicated IDE like PyCharm can supercharge your Python development workflow. We walk through setting up a pure Python project, configuring an isolated virtual environment, and managing the .idea directory. You will learn the core philosophy behind PyCharm's project-centric design.
3m 04s
2
Hidden Gems: Run Configurations & Code Insight
Uncover hidden productivity gems tucked inside PyCharm's interface. We explore how deep PEP-specific Code Insight and Intention Actions can instantly improve your code. You will learn to leverage the Run popup and Run widget to trigger coverage tests and profilers with a single click.
3m 33s
3
Mastering the Debugger: State and Breakpoints
Move beyond print statements and master PyCharm's built-in debugger. We cover the essentials of setting breakpoints, stepping through execution, and inspecting the heap. You will learn how to pause your application to view precise variable states and thread execution paths in real time.
3m 21s
4
Visualizing Async Code: The Concurrency Diagram
Demystify asynchronous code using PyCharm's Concurrency Diagram. We dive into the Thread Concurrency Visualization feature and the Asyncio graph tab. You will learn how to visually spot deadlocks, track thread waiting times, and debug complex event loops without the headache.
3m 21s
5
Swarm Programming: Code With Me
Take collaborative coding to the next level with Code With Me. We explore how to host and join remote swarm programming sessions directly inside your IDE. You will learn how to manage guest permissions, forward ports, and pair-program without anyone needing to install extra software.
3m 20s

Episodes

1

The Power of a Dedicated IDE: Project Setup

3m 04s

Discover why a dedicated IDE like PyCharm can supercharge your Python development workflow. We walk through setting up a pure Python project, configuring an isolated virtual environment, and managing the .idea directory. You will learn the core philosophy behind PyCharm's project-centric design.

Download
Hi, this is Alex from DEV STORIES DOT EU. PyCharm Dedicated Python IDE, episode 1 of 5. Setting up a complex Python environment manually from scratch often leads to a tangled mess of broken dependencies. By the time you configure your language server, linter, and path variables, you have spent hours just preparing to write code. The Power of a Dedicated IDE: Project Setup resolves this by giving you a unified workspace from the very first click. Before going further, I need to state explicitly that this series is not sponsored. Every developer should use an editor they feel productive in. But there is a distinct reason I settled on PyCharm for heavy Python development. General-purpose editors require you to build your own environment out of various plugins. A language-dedicated IDE provides deep, out-of-the-box integration that understands Python syntax, package management, and project structure immediately. When you are setting up a fresh Python project, your first priority is isolation. If you install dependencies directly to your system Python installation, you will eventually pollute your global packages and cause version conflicts across different applications. To prevent this, you need a virtual environment. In PyCharm, you start by creating a new pure Python project. You provide a project name and a directory path. This is the part that matters. Instead of dropping to the terminal to manually create and activate an environment, PyCharm prompts you to configure a Python interpreter right in the new project window. You select the option to create a new virtual environment, point it to the base Python installation on your machine, and the IDE handles the rest. It builds the isolated environment and automatically binds it to your new workspace. Whenever you open this project, the correct dependencies are already active. Once you create the project, you will notice a hidden folder named dot idea at the root of your workspace. People often confuse what belongs in this directory with the global settings of the editor itself. Global IDE settings govern things like your visual theme or custom keyboard shortcuts across all your work. The dot idea directory is entirely different. It strictly isolates project-level settings. It remembers which virtual environment this specific project uses, maps your project roots, and stores code style overrides specific to this codebase. Because these settings define how the project operates, the dot idea directory should generally be committed to version control. This ensures that when a colleague clones your repository, their editor immediately recognizes the project structure without manual configuration. If you enjoy these episodes and want to support the show, you can search for DevStoriesEU on Patreon. The ultimate value of a dedicated IDE during setup is that it absorbs the tedious cognitive load of environment management so you can spend your time actually writing business logic. Thanks for listening, happy coding everyone!
2

Hidden Gems: Run Configurations & Code Insight

3m 33s

Uncover hidden productivity gems tucked inside PyCharm's interface. We explore how deep PEP-specific Code Insight and Intention Actions can instantly improve your code. You will learn to leverage the Run popup and Run widget to trigger coverage tests and profilers with a single click.

Download
Hi, this is Alex from DEV STORIES DOT EU. PyCharm Dedicated Python IDE, episode 2 of 5. Most developers still drop to the terminal to run their tests and generate coverage reports. They never realize their IDE has a built-in, single-click action to visually highlight exactly which lines of code they just missed. Today we are looking at Hidden Gems: Run Configurations and Code Insight. PyCharm does not just read your code as plain text. It parses your structural logic against the latest Python enhancement proposals, known as PEPs. If you are using the structural pattern matching introduced in PEP 634, the editor actively validates your match and case statements. It ensures your patterns are exhaustive and alerts you if a case is unreachable. It does the exact same thing for the new type parameter syntax from PEP 695. The IDE instantly flags generic type mismatches natively, long before you ever attempt to run the code. When the IDE spots an inefficiency or a potential improvement, it offers Intention Actions. By pressing Alt and Enter, or Option and Return on a Mac, you trigger a list of context-aware suggestions. These are not basic find-and-replace text operations. Because PyCharm understands the underlying syntax tree of your Python file, it can safely rewrite a complex nested loop into a clean dictionary comprehension without breaking your logic. It targets the specific node in your code structure. Once your code is written and refined, you need to execute it. Most people click the standard green play button in the main toolbar and stop exploring there. But the Run widget at the top of the window holds a lot more power. Next to the play button is a More Actions menu, represented by three dots. Opening this menu reveals entirely different ways to launch your application. This is where you find the options to run your code with the profiler or execute your test suite with coverage enabled. Many developers mistakenly believe they have to manually install a coverage tool, run it from the command line, and read a terminal output block to see their test results. You do not need to do this. PyCharm has code coverage built directly into the execution step. When you select Run with Coverage from the More Actions menu, the IDE executes the test suite in the background. It then overlays the results directly inside your editor. You get green and red markers in the gutter right next to your line numbers. Green means the line was tested, red means it was completely skipped during execution. To make this workflow seamless, use the Run popup. Pressing Alt Shift F10 on Windows and Linux, or Control Option R on macOS, brings up a floating menu of all your project configurations. Here is the key insight. You do not need to touch your mouse to change how your app runs. Say you are refactoring a massive, complex function. You make your structural changes using an Intention Action. Instead of navigating away to a terminal tab, you bring up the Run popup, select your test suite, and instantly launch it with coverage. Within seconds, you verify that your refactoring works and that your new logic is still fully tested. The true value of a dedicated IDE is not just writing code faster, but tightening the feedback loop between changing a line of code and knowing exactly how it behaves when executed. Thanks for spending a few minutes with me. Until next time, take it easy.
3

Mastering the Debugger: State and Breakpoints

3m 21s

Move beyond print statements and master PyCharm's built-in debugger. We cover the essentials of setting breakpoints, stepping through execution, and inspecting the heap. You will learn how to pause your application to view precise variable states and thread execution paths in real time.

Download
Hi, this is Alex from DEV STORIES DOT EU. PyCharm Dedicated Python IDE, episode 3 of 5. If your code is littered with print statements just to see what a variable equals, you are wasting hours of development time. It is time to stop guessing and start observing. Today, we cover Mastering the Debugger: State and Breakpoints. Think about tracking down a bug in a data transformation script where a dictionary value is mysteriously becoming None. If you use print statements, you have to write the print, run the script, read the console, realize you printed the wrong thing, and start over. The debugger replaces this loop entirely. It allows you to pause the execution of your program, inspect the memory heap, check variable values, and examine thread states without ever modifying your source code. To start, you set a line breakpoint. You do this by clicking in the left gutter of your editor, next to the line number where you suspect the issue begins. A red dot appears. Next, you launch your script in debug mode by clicking the bug icon instead of the standard run button. Your program executes normally until it reaches your breakpoint. Execution suspends immediately before that marked line of code runs. When the program suspends, the Debug tool window opens automatically. Here is the key insight. The Variables pane inside this window gives you a live, interactive map of your application state. You will see every variable currently in scope. You can expand your dictionary to see all its keys and values at that exact microsecond. You also have access to the Evaluate Expression tool. This allows you to run arbitrary Python code mid-execution. If you want to run a quick list comprehension on your data or check a complex condition, you type it into the evaluator. It processes using the current application state and returns the result. You can even use this tool to overwrite a variable value on the fly, testing a potential fix right there without restarting the debug session. You can also look at the Frames pane, which represents your call stack. It shows the exact sequence of function calls that led to your current breakpoint. Selecting a different frame lets you inspect the local variables of the functions that called your current code. Once paused, you need to advance the execution line by line to isolate when the dictionary value turns to None. This is called stepping. Developers often confuse stepping over with stepping into. Step Over means executing the current line and pausing at the next line in the current file. If the current line contains a function call, Step Over runs that entire function in the background and drops you at the next line in your active file. You use this when you trust the function works correctly. Step Into means diving inside the function call. The debugger moves execution to the first line of that newly called function, letting you trace its internal logic line by line. By using breakpoints and stepping, you control the flow. You pause just before the suspected error, step into the transformation function, and watch the Variables pane update. The exact line that executes right before the dictionary value becomes None is the source of your bug. The debugger is not just a tool for finding crashes. It is an interactive lens that gives you absolute authority over your program flow and memory state. That is all for this one. Thanks for listening, and keep building!
4

Visualizing Async Code: The Concurrency Diagram

3m 21s

Demystify asynchronous code using PyCharm's Concurrency Diagram. We dive into the Thread Concurrency Visualization feature and the Asyncio graph tab. You will learn how to visually spot deadlocks, track thread waiting times, and debug complex event loops without the headache.

Download
Hi, this is Alex from DEV STORIES DOT EU. PyCharm Dedicated Python IDE, episode 4 of 5. Asynchronous code makes your applications incredibly fast, right up until a silent deadlock freezes everything and leaves absolutely no error trace. Finding out exactly which coroutine is stuck is notoriously difficult. The solution in PyCharm is Visualizing Async Code: The Concurrency Diagram. Asynchronous code is hard to debug because a single event loop constantly switches between tasks. If you build an async web scraper and it suddenly takes ten minutes to run instead of ten seconds, standard logging is mostly useless. Print statements just output a chaotic wall of interleaved text. You know a task is waiting, but you do not know which one or why. You might think you need a standard CPU profiler here. You do not. A standard CPU profiler tells you which function consumed the most processing power. The concurrency visualization feature is different. It is a specialized tool designed explicitly to track thread states and asyncio event loops over time. It shows you when your code is doing absolutely nothing. You access this feature through the Run widget at the top of your IDE. Open the More Actions menu for your run configuration, and choose the option to profile with Concurrency Visualization. PyCharm executes your code and then generates a detailed diagram in a dedicated tool window. Inside this window, select the Asyncio graph tab. This is where the actual visualization happens. The interface displays a timeline. Each horizontal track represents an event loop or a thread. Along these tracks, PyCharm plots blocks that represent your coroutines. The length of a block shows how long the coroutine existed. This is where it gets interesting. Every block on the timeline is color-coded based on its exact state at that specific millisecond. One color indicates the coroutine is actively running and using the CPU. Another color shows when it is waiting, perhaps for a network response or a file read. A different color highlights when a thread is completely blocked. Apply this to the stalled web scraper scenario. Instead of guessing why the scraper is stuck, you run the concurrency visualization. You look at the Asyncio graph and see ten coroutines launched to fetch web pages. Nine of them show up as a solid block of a waiting color. You can click on those blocks to see exactly which function they represent. You instantly spot that they are all stalled, waiting on a single network lock that a previous coroutine failed to release. Seeing these real-time states natively in the IDE is a massive advantage over manual debugging. It shifts your perspective from reading sequential lines of code to viewing actual time-based relationships. You find deadlocks not by tracing logic errors in your head, but by physically spotting the blocked colors and empty gaps on a visual graph. The single most important takeaway is that asynchronous bugs are usually problems of timing and state, and the concurrency diagram translates those invisible timing issues into a clear visual map. Thanks for spending a few minutes with me. Until next time, take it easy.
5

Swarm Programming: Code With Me

3m 20s

Take collaborative coding to the next level with Code With Me. We explore how to host and join remote swarm programming sessions directly inside your IDE. You will learn how to manage guest permissions, forward ports, and pair-program without anyone needing to install extra software.

Download
Hi, this is Alex from DEV STORIES DOT EU. PyCharm Dedicated Python IDE, episode 5 of 5. Screen sharing is fine for presentations, but when a complex database migration fails locally, pointing at a video stream does not help. You both need your hands on the keyboard, interacting directly with the broken environment. That is exactly what Swarm Programming using JetBrains Code With Me solves. Code With Me is a built-in feature for remote collaborative development. It turns your local IDE into a shared workspace for swarm programming, mentoring, and collaborative debugging. Think of a scenario where a junior teammate is struggling with a database migration that only fails on their specific local machine setup. Instead of having them push broken code, or trying to talk them through terminal commands over a call, they can start a remote session right from their IDE. The setup has a distinct host and guest relationship. The host is the person sharing their project. They must have PyCharm installed and running. There is a common misconception that anyone joining the session also needs their own paid PyCharm license. They do not. Guests simply receive an invitation link generated by the host. When you click that link as a guest, your browser automatically downloads and opens the JetBrains Client. This is a lightweight application that looks and behaves almost exactly like a full PyCharm IDE, but it does not process anything locally. All the heavy lifting, indexing, and syntax checking happens on the host machine. You get the full native coding experience without needing the source code cloned to your hard drive. When you open your machine to another developer, security and boundaries matter. The host has granular control over what guests are allowed to do. You configure this before generating the link. Read-only access means the guest can look at files and follow your cursor, but cannot change anything. Edit files allows them to type alongside you in real time. Full access hands over the keys, allowing the guest to execute code, run tests, and interact directly with your local terminal. You can change these permissions on the fly during the session. Here is the key insight. You are not just sharing text files; you are sharing the runtime environment. If the junior developer runs a local web server on port 8000 to test their migration, the remote senior developer cannot normally access that. Code With Me includes a port forwarding feature to fix this. The host specifies a local port to share. The JetBrains Client then binds that same port on the guest machine. The senior developer can open their own local web browser, navigate to localhost port 8000, and interact with the application running on the host machine. Collaborative debugging works best when you eliminate the friction of reproducing a broken state. With Code With Me, you bypass the environment setup completely and fix the actual problem together, exactly where it lives. This wraps up our series. I encourage you to read through the official JetBrains documentation, try these tools hands-on, or visit devstories dot eu to suggest topics for future series. Thanks for spending a few minutes with me. Until next time, take it easy.