"gradual typing" is exactly how I code Julia.
Disclaimer: this is not how to the strengths of Julia are normally described by most people, it's just how I think about it.
You might have heard that Julia solves the two language problem (easy as python, fast as C++). But exactly how does it do that? In python you don't have to care about types, but even if you were willing to care about types you wouldn't get any performance benefit. In C++ you have to care about types, you don't have the option not to, even when you don't care about performance.
In Julia you don't have to care about types. You can code it exactly as python. But if you are willing to you can care about types, and you'll get a huge performance benefit. So, the way I code Julia is on a first pass I code it like python. I don't care about types, I just care that it's correct. Then, after it's correct, and if performance is critical, I start thinking about types. So Julia very much lends itself to "make it work, make it right, make it fast", by allowing you to gradually introducing types into the parts of your code that matter.
Julia is slower than Python for most applications if you include the compile time (which is every time you run your program, because it's "just in time").
edit: I want to be clear - I like Julia, and I have long wanted a scripting language that was gramatically simple like python but had support for strong typing, etc. But the TTFX problem, for me, muddies the waters on the question of "which is faster, Julia or Python?"
You compile your code every time you run it? Yikes. Sorry to hear that.
Is there a way to get around that in Julia? I tried to find a way to compile programs directly, and was disappointed with what was on offer.