I work with some deployment systems that chain together small scripts in a bunch of different languages. They are a nightmare to troubleshoot.
I'd much rather the spaghetti was all on one plate than follow it from table to table...
I work with some deployment systems that chain together small scripts in a bunch of different languages. They are a nightmare to troubleshoot.
I'd much rather the spaghetti was all on one plate than follow it from table to table...
The biggest mistake I see people making is to hard code paths, ports, user names, configuration, etc. inside Python/Perl scripts. All that stuff belongs in shell. All the logic and control flow goes in the scripts. If it's factored this way, then you have a very natural way of testing the scripts with test parameters (i.e. not production parameters).
I don't doubt that there are many multi language shell scripts that are spaghetti. Factoring into processes is definitely a skill that takes thought and effort, and I don't think anyone really teaches it or writes about it. The only books I can think of know of is The Art of Unix Programming by ESR and the Unix Programming Environment.
But it's definitely made me way more productive once I started thinking like this. People say talk about the "Unix philosophy" for a reason. It's a real thing :) It's not an accident that Unix is wildly popular and has unprecedented longevity.