# Besides Revise.JL, what other packages are common parts of "expert" Julia workflow?

**URL:** <https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052>\
**Category:** General Usage\
**Created:** [February 23, 2023, 12:33am UTC](https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052 "2023-02-23T00:33:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![zeroexcuses](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zeroexcuses/32/46846_2.png) [@zeroexcuses](https://discourse.julialang.org/u/zeroexcuses)\
**Post date:** [February 23, 2023, 12:33am UTC](https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052/1 "2023-02-23T00:33:28Z")

</div>

Besides Revise.JL, what other packages are common parts of “expert” Julia workflow ?

I.e. if I’m to be proficient in Julia, what other packages do I need to learn to use ?

---

<div class="post-metadata">

**Author:** ![adienes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adienes/32/37459_2.png) [@adienes](https://discourse.julialang.org/u/adienes)\
**Post date:** [February 23, 2023, 12:42am UTC](https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052/2 "2023-02-23T00:42:27Z")

</div>

A true expert would rewrite every package from scratch using only `ifelse` and `@label/@goto` /s

But seriously, I think there are very much not rules for who gets to call themselves an expert or not. A language is a tool. If you can use that tool to achieve your goals then I would not worry too much about if you are doing it “fancily” enough.

That being said, if you are interested in developing packages and are performance-oriented, I think package authors frequently make good use of `Cthulhu.jl` and `JET.jl` and `SnoopCompile.jl`

Personally I mostly just stick to `MLJ.jl` and `DataFrames.jl`, as I am a user not a package author 🙂

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [February 23, 2023, 7:26am UTC](https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052/3 "2023-02-23T07:26:08Z")

</div>

I suggest a list of basic development tools here, which you can put in your base environment: [IntroJulia - package dev](https://gdalle.github.io/IntroJulia/package.html)

In case the link goes dead, here they are: Aqua, BenchmarkTools, Documenter, JET, JuliaFormatter, OhMyREPL, PackageCompatUI, Revise, TestEnv. And possibly Term

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [February 23, 2023, 9:16am UTC](https://discourse.julialang.org/t/besides-revise-jl-what-other-packages-are-common-parts-of-expert-julia-workflow/95052/4 "2023-02-23T09:16:15Z")

</div>

- [BenchmarkTools](https://github.com/JuliaCI/BenchmarkTools.jl) so you can benchmark different alternatives
- [Cthulhu](https://github.com/JuliaDebug/Cthulhu.jl) so you can dig into inference and constant folding failures
- [LoggingExtras](https://github.com/JuliaLogging/LoggingExtras.jl) so you can do things like turn on debug-level logging for just one module etc \*
- [TestEnv](https://github.com/JuliaTesting/TestEnv.jl) so you can activate the test time enviroment for testing things interactively \*
- The [Profile stdlib, and 1 or more of the visualizers mentioned there](https://docs.julialang.org/en/v1/manual/profile/) so you can find where to optimize code.

(\* I am biased as I am one of the primary contributors to these packages)
