Introducing Julia to experienced developers

I will present Julia to a small audience of experienced developers. I already know some of the things I want to talk about (workflows, things that I like about Julia). I also want to hear what others have to say on the subject. What do you, an experienced developer, find especially nice about Julia?


Bonjour et bienvenue !

I have to say that experienced developers have a very wide spectrum of expectations. Having been in your place a few times, my experience is that:

  • people spending 95% of their time coding in Python/R/Matlab are often attracted by a promise of performance. But they tend to dislike the Julia workflow (at least at first) and they often rely on tons of 3rd-party package that may or may not be present in the ecosystem.

  • on the other hand, people spending 95% of their time coding in C/C++/Fortran tend to very much like the very fact that there is a package ecosystem at all.

  • only developers who have experienced first hand the 2-language problem tend to really understand what Julia has to offer here.

Now to my answer to your specific question, what I personally like about Julia is:

  • that it offers a wide palette of features that make it useful at all stages of a project: fast prototyping at the beginning, optimization of performance bottlenecks (and only those; no need to translate 100% of your code to C++ in order for the 5% which matter to be fast)

  • that it makes it possible for packages to interact and cooperate in totally new ways : there is in my experience far less “glue code” (if any) needed to make 2 packages work together in Julia than in Python for example.

  • that it allows writing very concise and readable code; I find it takes less stack space in my brain to keep track of my code, which frees up some stack to actually think about the problems I want to solve. Incidentally, this also makes it easier to get inspiration from what other experienced developers write (try to read a C++ STL implementation vs the Julia Base library), and easier to contribute to Open Source projects.

  • Being much more concise than C++ while not sacrifying performance
  • (for my particular field of work) Leveraging automatic differentiation via multiple dispatch
  • The package ecosystem supporting reusability and easy deployment to less experienced users

May be you can steal some ideas from a talk I gave in a similar setting: TIB AV-Portal


Check my blog post: Why am I using Julia? | Julia programming notes


In my experience a key challenge is to communicate effectively how multiple dispatch gives real benefits. I liked this talk which makes references to other languages as well: JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski - YouTube


There are some more pedestrian reasons that can be important:

  • The package manager.
  • The integration with the documentation (both doc strings/REPL and Documenter)
  • The workflow with Revise (except that cases where it fails, it is the best development workflow IMO)
  • Benchmarking small functions quickly and effectively with BenchmarkTools and the REPL.