# Exploratory research project workflow

**URL:** <https://discourse.julialang.org/t/exploratory-research-project-workflow/53030>\
**Category:** General Usage\
**Created:** [January 8, 2021, 8:21am UTC](https://discourse.julialang.org/t/exploratory-research-project-workflow/53030 "2021-01-08T08:21:05Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [January 8, 2021, 5:06pm UTC](https://discourse.julialang.org/t/exploratory-research-project-workflow/53030/8 "2021-01-08T17:06:13Z")

</div>

> [@misha\_mikhasenko](#):
>
> How do you load your library without module, by `include` ?

An exploratory workflow with a `main.jl` file which calls different scripts with `include` is a very good / acceptable workflow.

If you are only working with a single file then you want to use Revise.jl’s `includet`, which means you dont have to run `include` all the time.

But you should really be trying to put everything in functions.

Here’s what I do.

1. Start out with `main()` at the bottom of your script.
2. Use `includet` on that file and call `main()` when you want to run everywhint
3. Write everything in `main`, when it gets too big, break things into smaller functions that are called within `main`
4. Use `Exfiltrator.jl` extensively in debugging, as `@exfiltrate; error("")` when you want to break and send everything in that function’s local scope to global scope for inspection at the REPL
5. Use dictionaries, named tuples, and custom structs to store information. Pass large objects to the functions and use `@unpack` to work with just the things you need. This means you don’t have to agonize about what you are and are not passing to your sub-functions.
6. Just run `main()` all the time. If you use `includet` then everything will always be up to date. It’s very freeing.

---

_[View the full topic](https://discourse.julialang.org/t/exploratory-research-project-workflow/53030)._
