Making use of airflow's plugin architecture by writing custom hooks and operators is essential for well-maintained, well-developed data pipelines (that use airflow). A little upfront investment in writing components (and the most painful part, writing tests) will go a long way to helping data engineers sleep at night.<p>That said, I make a point of using ETL-as-a-service whenever it's available, because there's no use solving a problem someone else has solved already.