Thank you for launching this discussion. I am also in search of a better workflow. I apologize for the long message, but I thought it would help to explain how I struggle with basic things - after all, this is a “New to Julia” forum.
I mostly work in VSCode, building scripts and testing them interactively by executing lines or sections one at a time, and from time to time restarting the kernel to make sure I am not in some parallel universe. When something gets to a state where it needs to be “properly” documented or shared, I tend to switch to Jupyterlab, but I never use it for my own work, I find VSCode scripts with the REPL always ready more convenient. I also transferred from Matlab the habit of saving intermediate results when one part of the analysis works, so I will sometimes end-up with scripts like “step1”, “step2”, etc. Very occasionally, I think some functions I created could be useful to someone else or the future me, so I try to code them properly and perhaps put them in a module.
I have played with precompiled sysimages in the past, when it was (for me) reducing the frustration a lot, but I find that they are unnecessary now (again, to me!).
The main problem for me to switch to a “better” workflow that would not do everything in Main is debugging. I have given up on emulating C/Fortran debugging (as in “F10 / F11” in Visual Studio). Infiltrate is working well for me, but I find it’s polluting my code with commented out (or just “forgotten”) @infiltrate instructions, plus it requires me to switch from running lines or sections to running the whole file with include(), so it’s not super convenient.
One strong limitation of my “fully interactive approach” is loops, do blocks, etc. that create their own scope and cannot be evaluated line-by-line. What I am doing - which seems stupid - is to replace loops by manual iterations (as in having a line that says i = i+1, running that, running the section of code that should be in the loop, and then finding the problems with the next value of i). Once the code works for “many values of i”, I put back the actual loop, perhaps move the code to a function, and move on to the next part of the analysis. I typically have to change some stuff because of the scope behaviour but that’s OK.
I have not been able to find instructions that explain to someone like me how to adopt a better workflow. Back to the feeling that I need a “(really) New to Julia” forum…
If a generous soul has read this far and would have ideas for a “light approach” to adopting a better workflow, going one step at a time, i.e. adopting something that is not yet “good” but at least “better”, that would be really great!