
IDE-ntity Crisis: Choosing the Right Tool for Me (Isabel Zimmerman, Posit) | posit::conf(2025)
IDE-ntity Crisis: Choosing the Right Tool for Me Speaker(s): Isabel Zimmerman Abstract: Data practitioners have more IDE choices than ever, but not all are built for the same purpose. JupyterLab prioritizes a notebook-first experience, while VS Code focuses on software engineering with extensible features. Others, like Positron, are designed specifically for data scientists, streamlining workflows and boosting productivity. Understanding these trade-offs helps you find the best fit. By the end of the session, you'll have a clear framework for choosing the right IDE for your data science and analytics tasks. posit::conf(2025) Subscribe to posit::conf updates: https://posit.co/about/subscription-management/
image: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
So hello everyone in person and online. Hello as well and to all your cats and dogs on the couch with you. I am Isabel Zimmerman. I am a software engineer on the Positron team. But before that, I was a data scientist. And I kind of had this identity crisis going from data practitioner, you know, was I still a data practitioner? Like I make data science tools now, can I be both? Was I both?
Something I did know about myself, though, was that I strongly believe pretty much everything can be solved by a good checklist. So I made something like this. I wrote down the things I did as a data scientist and as a software engineer. And I kind of realized, you know, after all my check marks and everything, it's not the label that mattered. You know, the label doesn't make the job. It's the tools you use and the tasks that you're doing.
And there's something even more high level about this, you know, checklist. You know, it's using some sort of tool to gather a bunch of information and make a decision about it, either for me or for someone else. And that's what I did as a data scientist and that's kind of what I helped build as a tool maker. But my love of using some sort of tool to organize information to make a decision did not come from computers. It came from magazine quizzes.
You can tell this is younger me because there's no pink hair. So if you're not a Teen Vogue subscriber, these are quizzes. They're tools that you can use to solve the identity crises of your youth. Of my youth, I wanted to learn, you know, what band would I be a good lead singer for? Or maybe was I a risk taker? Or what pet should I get? So today, we're going to help determine the best fit for potentially the largest tool that you use every day as a data science practitioner.
And that's your IDE. So in honor of Teen Vogue subscribers everywhere, I'm going to help you find your IDE soul mate today. And the first question that we have to think about is maybe how interactive is your coding experience?
Interactivity and the console experience
So I do have like a true little quiz going on. If you want, you can go to the link at the bottom. You can take the QR code, whatever. You can remember how many A, B, or C you have. There's no right answers. This is just trying to figure out where you fit into this lifestyle. Or you can just come along for the ride.
So I went to school for data science. And in my research there, and as you know, my first roles as a data scientist, I had to think about, you know, was I going to be using Python or R scripts? Was I going to be using kind of a mix of scripts and a notebook and a console? And I started out by using a lot of notebooks. So I naturally gravitated towards JupyterLab.
Now, this is a fantastic, like, huge community of folks who are using these notebooks. It's really the standard for notebooks everywhere. And that means all of my data science packages, including the really complex ones that were like widgets and maybe like interactive plots, they all worked really well right out of the box in this JupyterLab experience. You know, with a primarily notebook workflow, this was exactly what I needed.
Now, I also sometimes wanted a place to do quick experiments that maybe wasn't a whole JupyterNotebook. And JupyterLab also has a console. And it's kind of interesting. There's two really big ways that you can have some sort of, like, console or repl, which is read, execute, print loop in Python. And one is having just a native Python experience. So this is just using the Python language. And there's also this other package called IPython or interactive Python. And you can kind of think about it as, like, JupyterNotebook minus the markdown. Really quick experiments. And the nice thing about IPython is that, once again, a lot of your data science packages will work right out of the box. So you don't have to do anything weird for setup or, like, have something else pop up in a different window if you've ever ran matplotlib in a native Python repl. It just kind of works in this repl.
And so this console is an IPython console. The thing about this console is it's kind of hard to get your code out of this experience into some sort of reproducible script. You can do maybe a little bit of copy pasting or some sort of export options. But it's just not a robust experience.
And I was starting to use less notebooks and more Python scripts as I was transitioning into being a package builder. So JupyterLab didn't quite feel right. The building blocks of a Python package are Python scripts, not notebooks. And so, you know, the notebook experience just wasn't quite for me anymore. My next step was to move to a different IDE called VS Code. And VS Code is a general purpose IDE. So you can do pretty much anything in it.
As long as you're willing to install one too many extensions. So I installed a Python extension and a Jupyter extension and, like, a Ruff extension and a Quarto extension. And all of these together made a good experience for me. I also still got to hold on to a little bit of this console REPL experience by using these hash percent percents. I could add these into my Python scripts. And then this interactive window spawns. And you can see I can, like, run my plot line code, see my output, all of that. And if the interactive window is sparking some connections, this is also an iPython console.
This is really interesting because I can use my Python script as, like, sort of a notebooky experience. But the thing is, I spent a little bit of time deleting these hash percents out of my Python scripts. So there was still a little bit of uncomfortability here. Even though it felt really good for most of my Python experience.
Now, VS Code does actually have the second type of console we talked about where you can use this native REPL. But because I build a lot of data science tools, I really need that interactive experience to have something that feels good for me.
And nowadays, I primarily build Positron. But I still spend a lot of time, I explore data, I get to teach others, like, today. I still maintain Python packages. And I have fallen in love with this Positron console. I can run everything line by line with command enter. This is an iPython console. So once again, all of my widgets and my plots, like Altair and plot 9, work right out of the box. And of course, there is Jupyter Notebook support in Positron. And there is Jupyter Notebook support in VS Code. But, you know, for my daily practice, those aren't the tools that are ergonomic for me. So I just love to hang out in this console. It has all the features I need. It's got, you know, really good syntax highlighting. It's got autocomplete. And there's even some, like, AI integrations to help me fix errors and write some code.
And nowadays, I primarily build Positron. But I still spend a lot of time, I explore data, I get to teach others, like, today. And I have fallen in love with this Positron console.
Exploring data
Now, the need for interactivity is really important in data science because of this experience of, you know, exploring data, doing quick experiments. So how are we exploring data? So here's your next quiz question. Are you someone who uses small or medium data that you'd like to explore in some sort of interface? Maybe small, medium, or large data? Or perhaps you're someone who doesn't need some sort of data explorer format.
So in VS Code, there is another extension called the Data Wrangler. And this is great for, like, your hundreds of rows and thousands of rows. It's got really nice spark lines across the top, information. You can add filters to your data. And you can see kind of on that bottom left-hand side, you can add stuff, see how it changes your data. And you can export this to code. So this works for Pandas and Polars data frames. You can also do, like, open up CSVs and Parquet files. But you must have Python installed and all of these other dependencies. It's also cool. They have some copilot integrations into the Data Wrangler.
So this is a good place to live. Positron also has something similar. This is a data explorer that is really fantastic. It, again, has all of your summary statistics on the side. You can see, like, your mean, median mode, stuff like that. Some plots. And this is really built for scale. So you can have millions of rows, millions of columns, and it works so seamlessly, it kind of feels like magic. And you can also add filters here, just like in Data Wrangler. We also have this convert to code button that works for Pandas data frames and Polars data frames. And if you're opening up a CSV or a Parquet file, you don't need anything installed, and we can write SQL for you.
Now, there's not quite something that I've used like this in JupyterLab, but there are other tools, you know, there's like Pandas Profiler, or maybe you're just going to be using the data science library of your choice to explore your data. And as you start adding packages and tools, in Python, we all know you end up seeing something called a virtual environment.
Managing virtual environments
So we can kind of think of, you know, how we're using virtual environments in maybe like a volume and a velocity way. So these questions are a mix of, you know, are you changing virtual environments super frequently? Do you have lots of virtual environments? Are you somebody who just has a one environment to rule them all sort of ideology? And that's where I started. When I was doing data science work, I had one Conda environment, and I installed everything there, and I set it as my preferred kernel, and, you know, every single thing I opened in JupyterLab used this. There was no fuss.
But Positron lives on the exact opposite end of this scale. So if you're someone who has multiple virtual environments, if you're someone who has, you know, multiple consoles running, you can try out Python 3.11 and Python 3.13 at the same time. And this is super important for me as a package maintainer. I remember horror stories of when, like, Pydantic went from 1.0 to 2.0, and I had two different environments, and I was trying to, like, open up multiple terminals and running this code in both sides, and, you know, having one single source of truth script that I could run and try out different environments at the same time felt really great.
Authoring with Quarto
And our final quiz question for today is, you know, once you've written all of your code, and you're trying to explain this and share this with others, are you a data author? So you can see our quiz questions are, you know, maybe you're somebody who uses Quarto, but you don't really need any UI, you know, you're comfortable with your Quarto tasks. Maybe you're someone who uses it quite frequently, and you would really like to have just a little bit of UI to maybe preview or something like that. Or finally, maybe you're super comfortable with Quarto, everything's on the command line, or perhaps you just don't need these authoring tools, and they're not in your practice.
So in VS Code, you can use the Quarto extension. I know Jonathan showed us a few other extensions that Posit's created. This is one of them. And you can have a button to preview stuff, and then if you go in these three dots, you can do things like edit in visual mode. If you go to the settings, you can also put settings to make sure whenever you update something and save, it automatically renders.
And Positron has something similar. It's actually the exact same extension. There's just a little bit of data in the extension that Positron can look at and say, instead of having these features in these three dots, we can put them on this bespoke editor action bar. So you can see here, you can toggle really quickly between your visual and source mode. You can click to insert code cells. You can also decide if you want to preview your data, if you want to save on preview. It's really lovely, and I think it's a really nice authoring experience in the Positron IDE that has a nice blend of, you know, I can still run all of my command line steps for Quarto, but I also get to have UI for my most common tasks.
The big reveal
All right. For the big reveal, if you chose mostly A, VS Code might be your IDE soul mate. If you chose mostly B, maybe Positron is for you. And if you chose mostly C, maybe it's JupyterLab. However, maybe you have realized that, one, maybe you have a tie, or two, these four questions really are not comprehensive enough to decide what tool is right for you.
So let me be the one to tell you that IDEs are tools kind of just like packages, and I feel like when we learn about different packages, we have really strong muscles about using the right tool for the job. But when it comes to IDEs, people feel like they can only have one. And, you know, you only get one IDE, that's it. IDEs are tools just like packages. All of these IDEs are free even for commercial use, same as RStudio, so there's no harm in trying things out and seeing where they might fit into your lifestyle.
But when it comes to IDEs, people feel like they can only have one. IDEs are tools just like packages. All of these IDEs are free even for commercial use, same as RStudio, so there's no harm in trying things out and seeing where they might fit into your lifestyle.
For me, I use Positron whenever I'm writing documentation or Quarto, I use it for all my package management now when I'm writing Python code, but for Positron work, you know, sometimes I'm writing TypeScript or other languages, and for that, I might pick up VS code, and it feels like a right fit for me. I also would not be a Posit employee if I did not tell you these are all available on Posit Workbench, so you can even not have to convince any of your team members to make a swap. So I'll say thank you all for joining me today. I hope you've learned a little bit about all of these different IDEs, and I hope that you all have found your IDE soul mate. Thank you.
Q&A
Thank you so much. Can you hear me okay? Yeah, perfect. Thank you so much. I have a question for you. So since you've started working on packages and IDEs, what is a quality of life feature that you didn't use before that you started really liking or relying on?
Ooh. Okay. So this is something that I, I mean, one, multiple consoles. That is truly a life changer for me. Another one I really like is I like doing a rename. If you, like, right click on a function name, you can rename it, and it updates it everywhere, and it has made my life so much easier and so much better.
One more question here. When is it time to switch your IDE? Did you have a breaking point? Do I have a breaking point? I think, you know, you'll feel it. You'll feel it when you're like, this is really annoying. For me, it's always been when I start copying and pasting a lot of stuff around, it's time to go. There's probably a better tool. There's probably a better workflow for me. You know, a lot of what people do either as tool builders or as data scientists is making sure things can be packaged and reproduced on other people's machines, and so if there's anything in my workflow that feels like it's not transferring between, you know, my experimentation to my output, kind of breaking this cycle of reproducibility, that feels like a right time to inspect on what am I doing in my practice. You know, it could be a me problem. That happens, but it could be a tool problem as well.
Amazing. Okay. So what IDE and tools do you use to work on Positron? Ah, okay. So Positron is writing a lot of TypeScript, so I build Positron sometimes inside Positron because you can run all of that there. I can also build Positron out of VS code.
Awesome. Is there a feature you would like from an IDE that is not readily available in any of the current ones? Oh. Kind of a philosophical question, I guess. That is a philosophical question. I'm not quite sure. I do actually use the VS, this is kind of a joke answer, but I do use the VS code pets, so maybe some more pets there, like maybe inserting my own dog. Awesome. Thank you so much. Yeah. Thank you all.


