Do you have ever worked with very skilled developers?, those that can program in more than three very different languages without obstacles and doing amazing stuff?. I am very sure that you already have done that. Do you know any of those very skilled developer wanting to do monkey patching? Duck typing the code just to make it work. I really do not know any very skilled programmer that wants to do monkey patching over their code. Almost every skilled developer that I know, do not wants to deliver trash code, they want maintainable, well indented and well structured code, that has a good design and fits very well as solution to the problem that it solves.
So, if you keep your skilled developers doing monkey patching over your applications, you will tire them quickly. A skilled developer really knows the value of well done software, so they will not tolerate too much that activity: «here I am fixing bugs again, without doing a real contribution…». Mainly if he or she is a skilled engineer with a very good design capacity, he will not be able to use his ability to solve problems. Even architecting or leading a team, probably they will do a better work. Skilled people usually wants to solve problems from its origin, not doing duck tape repairmen.
If you think a little, a good developer or engineer has another perspective about code, it is not about only doing a job, usually they are passionate, and they like their job. So, why to keep them in the darkness as your duck taping engineer?, do you agree that they are good enough to make good designs and guide your team in better programming practices?. You keep them busy doing monkey patching, while the rest of the team continues developing poor solutions without reaching good practices and they are only doing their job. Just check it, a good developer will transmit their passion to other members of the team, and you will start doing better solutions.
But remember that if you do not have the proper knowledge about programming and the technologies that you are using, you will not be able to understand anything about what does he speaks, if he or she talks with technical terms. At my side, I have left every customer that do not have the proper technical knowledge and keeps doing requirements without doing the proper analysis. Currently I am working in two areas, data processing and industrial control. On data processing I am using Lisp, Haskell, C and C++, and on industrial control I am using mainly C and C++. Due to the nature of that kind of business, I must work with people that understand almost everything that I am talking, and they agree with the idea that the code should not fail. There is no monkey patching practices, they have very good account agents to let the customer see that the development requires more time once we find a problem, so the schedule get extended.
Sometimes some problems require some study, mainly over the platform, system calls, and run-time calls, and they agree that they prefer to wait and get the proper solution, rather than doing monkey patching. That last minute bug that appeared because someone should implement a last minute feature is not existent in my current projects. Project managers are tracking and managing changes very well, only if they are required, because we are working with very good analysts.