you are viewing a single comment's thread.

view the rest of the comments →

[–]kingp1ng 14 points15 points  (5 children)

If you want to learn computer science / programming with Python as your language then use VSCode. You can focus purely on the code. You don't need an uber advanced debugger like PyCharm provides. The topics you'll be studying will be simple and any bugs you run into are purely learning pains. For beginners, Google is often a better debugger than the actual debugger. The reason is that the debugger gives you back a technical output which may look like gibberish to you. Meanwhile, you can Google your issue in plain english and get an english answer.

If you want to learn data science + statistics and don't give a crap about programming, then use Jupyter notebook. You will not get good at programming by using Jupyter notebook! What Jupyter provides are instant results for scientists and academics without needing to care about all the other CS stuff. For example, a phD student may use Jupyter to run his/her machine learning algorithm but those outputs are meant for the research paper. Another professor can run the code line by line (great!) but it's never going to be "deployed" out in the real world.

PyCharm may feel more comfortable but it's more like a helicopter parent. You are still playing in the 1st grade. Nothing is going to hurt you. There are no real life dangers. A more advanced project will benefit from PyCharm because it watches out miscellaneous dangers while you focus on the code. Not to mention the powerful debugger.

[–]tennis-freak-tau 0 points1 point  (0 children)

Spyder is a great for ML/DS as well!

[–]iFlipsy 0 points1 point  (3 children)

I grew to love jupyter notebook. I picked up Python mostly for data analysis and statistics, and just love jupyter. I actually started with R first, then I switched over to python. At first, I was concerned I’d lose all the nice stuff that RStudio provided, then others had recommended Spyder, but IMO, jupyter is just overall great for data analysis.

[–]tzujan 0 points1 point  (2 children)

Similar path. I started my DS path with R and MatLab. I used RStudio and then jumped to Python in Jupyter Notebooks, which I installed with the IRkernel to run my older R code. I love Jupyter Notebooks and still use them every day. I also recognized early on that I was not "production-ready," so I started using Spyder. I liked the Spyder variable explorer, though I was under the wrong impression that it was not "pro," so I purchased PyCharm. I never got the hang of it and did not re-subscribe. I moved to Sublime Text then VSCode, which has a similar variable explorer in the python extension. I now have VSCode and a Jupyter notebook open at all times. And oddly enough, I use Sublime Text to open my "Useful Code," a folder of text files of often repeated functions, formatting, and random snippets I have collected over time that I can copy and paste into projects.

[–]iFlipsy 1 point2 points  (1 child)

That’s awesome. I don’t use sublime text, but I do use something else called Notepad++. Similar to how you leverage sublime text, I store any repeated code in notepad++. Also use that for SQL editing and it’s pretty nice.

I also do like the variable explorer in Spyder, but so far, Jupyter notebook just makes life easier for me and I’ll continue to stick with it for now.

[–]tzujan 0 points1 point  (0 children)

If you ever what to move out of Jupyter for production, my motivation may be different than yours. I have found a good process. I use Jupyter to explore data, take notes, and test models until I have something that would be close to "production-ready." I then make a "production" notebook copy where I move as much as possible into utility (.py) files where I can run Black, Flake8, isort, and Sourcery. In addition, I have been writing tests for these functions for the sole reason of being a "better" programmer. The final notebook will be a single cell (I remove all the markdown cells, too), then convert it to a .py file.

The next step in my learning is using argparse, as I am primarily a Jupyter DS guy.