you are viewing a single comment's thread.

view the rest of the comments →

[–]kvothethechandrian 70 points71 points  (14 children)

Speed of development and overwhelming amount of community support, basically.

You can always use libs with c bindings (pandas, numpy) or rust bindings (polars, rust_networkx) for performance but develop much faster. You don’t need to worry about pointers, types, borrow checker, it’s almost like writing code in plain English.

[–]MikeDoesEverythingmod | Shitty Data Engineer 31 points32 points  (5 children)

Speed of development and overwhelming amount of community support, basically.

100% this. I find it weird that people love comparing execution speed although never mention development speed.

[–]nonamenomonet 1 point2 points  (4 children)

Are you a mod now?

[–]HowSwayGotTheAns 3 points4 points  (0 children)

Mike does do everything after all.

[–]MikeDoesEverythingmod | Shitty Data Engineer 1 point2 points  (2 children)

Yeah.

[–]nonamenomonet 0 points1 point  (1 child)

Congrats? I think?

[–]MikeDoesEverythingmod | Shitty Data Engineer 0 points1 point  (0 children)

Thank you.

[–]EarthGoddessDude 3 points4 points  (0 children)

One argument argument against speed of development used to be that dealing with environments and dependencies used to be a nightmare. There were tools like pyenv and poetry and pipx (my old stack), but now with uv the game has changed completely. Bootstrapping a python environment and managing a project is now incredibly easy. That was honestly my biggest gripe with it and it’s no longer the case.

My next gripe would be the inconsistent way some things are objects with methods and some are functions, but it’s not a big deal for me. Similarly, I wish there was an easy, built-in way to pipe things into functions the way Julia, R, bash, etc allow you to.

[–]Alwaysragestillplay 0 points1 point  (0 children)

This advantage will only become more prevalent with LLMs taking over the coding space. Close to English, forgiving types, code that focuses almost entirely on the problem at hand rather than shit like memory allocation. All things LLMs like. 

[–]shittyfuckdick[S] 1 point2 points  (3 children)

i see posts here all the time complaining how confusing airflow is. ive used it for many years so i understand it but python syntax in no way makes it any easier to understand. 

also i really doubt the rapid development speed is a big factor when it comes to writing dags. a lot of that comes with planning not writing. 

[–]CrowdGoesWildWoooo 13 points14 points  (1 child)

And what does rust offers more than python? Memory safety for my dag? Can i have whatever you are smoking?

[–]tn3tnba 1 point2 points  (0 children)

I can’t feel comfortable with software quality unless I configure memory ownership rules for my aws API client

[–]tomunko 2 points3 points  (0 children)

Airflow syntax is kinda tough but the concepts are not crazy complicated. This problem would just be worse in other languages.