Dis-optimization and late optimization
One of the things that we traditionally do to make "better" computer software is to perform optimization, either to enhance performance or tailor code to specific domains or sub-domains. Unfortunately, optimization grossly interferes with the goal of software agent technology, which is to be far more flexible and easier to adapt to new situations. Optimization by its nature involves making assumptions and hard-wiring them into the "code". The answer is dis-optimization, or figuring out how to relax the coding of computer software so that it can adapted automatically on the fly as the situation changes dynamically over time. We can also call this late optimization, since it cannot be done in advance or even fixed at any point in time since it will continually need to be changed to reflect evolving and emerging situations and late-breaking circumstances.
How to effect dis-optimization and late optimization is an open issue and in dire need of deep research.