Learn Python with Talk Python's 270 hours of courses

Python for .NET and C# developers

Episode #363, published Thu, Apr 28, 2022, recorded Wed, Apr 13, 2022

Are you coming to Python from another language and ecosystem? It can seem a bit daunting at first. But Python is very welcoming and has a massive array of tools and libraries. In this episode, I speak to my friend Cecil Philip who does both Python and .NET development. We discuss what it's like coming to Python from .NET as well as a whole bunch of compare and contrasts across the two ecosystems.

Watch this episode on YouTube
Play on YouTube
Watch the live stream version

Episode Deep Dive

Guest Introduction and Background

Cecil Phillip is a seasoned software developer who spent many years specializing in .NET and C#. More recently, he has dived deep into the Python ecosystem, exploring its web frameworks, async features, and broader culture. He previously worked at Microsoft on developer relations for Azure and now works at Stripe. In this episode, Cecil compares the worlds of C# / .NET and Python to help listeners see how these two ecosystems both differ and overlap.

What to Know If You're New to Python

Here are a few quick pointers from the episode that will help brand-new Python learners:

  • Python requires minimal setup to get started—create one file, add a few lines of code, and you’re off.
  • Python projects can be as unstructured or structured as you decide. You won’t see “File → New Project” wizards, and this freedom is both a benefit and a challenge.
  • You’ll often piece together libraries for databases, async features, testing, and more, rather than relying on one monolithic framework.
  • Python’s philosophy is community-driven and open source focused, so help and resources are distributed across many projects and maintainers.

Key Points and Takeaways

  1. Bridging from .NET to Python Many developers come to Python from .NET to broaden their skill set or because their workplace now requires Python. Python offers a welcoming open source ecosystem, letting you move quickly from idea to prototype. However, you’ll likely miss the templated, “ready-to-go” approach of Visual Studio projects initially. Over time, you’ll see how Python’s flexibility can be a superpower for automation, data science, web development, and more.

  2. Comparing Ecosystem Cultures In the .NET world, Microsoft traditionally provided a “one-stop-shop” approach: Visual Studio, Azure, SQL Server, Entity Framework, and so on. Python’s history is much more community-driven, resulting in many possible tools and paths. This often leads to “analysis paralysis” for beginners. On the flip side, once you are comfortable, you’ll find Python’s decentralized culture can offer more specialized solutions to niche problems.

  3. Tooling Differences: Visual Studio vs. Python Toolchains A hallmark of .NET development is the structured project files and solution templates within Visual Studio. Python, by contrast, typically starts with a lone .py file, and you decide how to grow the project from there. While this can feel disorienting to .NET devs, Python does have options (like cookiecutter templates, PyCharm project structures, or VS Code dev containers) once you dig deeper.

  4. The Impact of Open Source Python has been open source from day one, which fosters both community contributions and a “thousand flowers bloom” approach to solving problems. .NET started as a more closed ecosystem, but has now embraced open source, especially with .NET Core / .NET 5+. This is changing .NET’s culture toward the open source model and speeding up improvements in tooling and libraries.

  5. Yearly Release Cadence in .NET vs. Python C# and .NET have a fast release cycle, almost guaranteeing new features every year. Python also has a predictable release schedule, but changes tend to be more incremental—many revolve around its standard library rather than new syntax. The discussion highlights how too many new language features in .NET sometimes leads to confusion about “the right way,” while Python’s approach stays more uniform.

  6. Async, Await, and Cross-Pollination Both C# and Python have borrowed concepts from each other over time. For instance, Python’s async and await keywords were inspired in part by C#’s async constructs, while C#’s generator methods (yield return) echo Python’s generator features. This cross-pollination means developers moving from one language to the other will find familiar concepts in asynchronous programming.

  7. Blazor and WebAssembly Parallels to Python’s Pyodide Blazor is .NET’s approach to running C# in the browser via WebAssembly. Python has an emerging parallel with projects like Pyodide and CPython for WebAssembly. Both ecosystems are working on bridging the gap between client-side interactivity and server-side logic in a single language—C# or Python—eliminating or reducing JavaScript usage.

  8. Microsoft’s ‘File → New Project’ vs. Python’s ‘Pick Your Stack’ A .NET developer can open Visual Studio, pick “Web App,” and out comes a bundle of dependencies: ASP.NET MVC, Entity Framework, etc. Python offers a more “opt-in” approach, where you choose from frameworks such as Flask or Django, and then pick your own ORM, caching libraries, and so on. This flexibility can be liberating but requires more decisions upfront.

  9. Evolving from a Proprietary Product to a Community Project The conversation highlights how .NET was historically a Microsoft-controlled product, whereas Python was always an open community-driven project. Today, .NET has moved toward the center of open source development, accepting community proposals and fostering collaboration on GitHub. That shift parallels Python’s longstanding reliance on collaborative improvements through PEPs (Python Enhancement Proposals).

  10. Real-World Use Cases and Adoption Why do .NET developers pick Python? Often it’s the quick scripting, data science, DevOps, or machine learning angles. Python’s massive array of libraries, from data visualization (Matplotlib, Seaborn) to AI (PyTorch, TensorFlow, scikit-learn), draws in developers seeking solutions outside of enterprise web apps. The two languages can also co-exist: for example, Python for AI services, .NET for mobile UIs.

Interesting Quotes and Stories

  • “Learning in public”: Cecil emphasized how streaming and learning Python in real time helped him see the community’s generosity: “It’s scary at first, but folks want to help you.”
  • On Python’s simplicity: “You can literally just start with one file. Coming from .NET, that feels incredibly freeing and, at the same time, a bit disorienting,” said Cecil.

Key Definitions and Terms

  • Open Source: Software for which the original source code is made freely available and may be redistributed and modified.
  • Blazor: A framework to run .NET code directly in the browser via WebAssembly, avoiding JavaScript for web apps.
  • Pyodide: A project that compiles Python to WebAssembly, allowing Python to run in the browser.
  • Cookiecutter: A command-line utility that lets you quickly bootstrap new projects based on project templates.

Learning Resources

Here are resources mentioned or highly relevant to this topic to help you go deeper:

  • Python for .NET Developers: Ideal if you’re transitioning from C# or VB.NET to Python, covering language syntax, libraries, databases, and more.
  • Python for Absolute Beginners: A thorough introduction to Python if you are completely new to the language or programming in general.

Overall Takeaway

Coming to Python from the .NET ecosystem offers a powerful contrast in culture, language features, and project organization. While you may miss Visual Studio’s “one-stop-shop” approach, Python’s flexibility and open source nature unlock a huge range of possibilities from data science to DevOps to web apps. Embracing Python’s “batteries included” but community-grown approach can feel different at first, yet many .NET developers find these new tools and libraries expand their capabilities in exciting ways. The key is to embrace Python’s freedom, enjoy the lively community, and keep exploring how both ecosystems cross-pollinate and evolve together.

Links from the show

Cecil on Twitter: @cecilphillip
Los Alamos Space Division Job: talkpython.fm/losalamos
Stripe: stripe.com
Python: python.org
.NET/C#: dotnet.microsoft.com
C#'s async/await: docs.microsoft.com
Entity Framework: docs.microsoft.com
Python's Packaging Ecosystem: pypi.org
.NET's Packaging Ecosystem: nuget.org
VS Code: code.visualstudio.com
C# Lang Repo: github.com
Blazor web framework: dotnet.microsoft.com
Watch this episode on YouTube: youtube.com
Episode transcripts: talkpython.fm

--- Stay in touch with us ---
Subscribe to Talk Python on YouTube: youtube.com
Talk Python on Bluesky: @talkpython.fm at bsky.app
Talk Python on Mastodon: talkpython
Michael on Bluesky: @mkennedy.codes at bsky.app
Michael on Mastodon: mkennedy

Talk Python's Mastodon Michael Kennedy's Mastodon