I can understand schedule pressure.  You want to please your users, as they are the lifeblood of the company. However, it is also true that certain changes will make everything easier down the road. Unfortunately, management in my organization has an instinctive resistance to such changes and this resistance is so strong that it gets in the way of long-term improvements.

For example, Apple recently introduced Automatic Reference Counting for iOS programs.  This is a major improvement over the manual retain/release calls one previously had to use.  The code is easier to write and easier to maintain. The changeover itself is likely to produce some crashes. But once those are worked out, the number of random weird crashes is likely to go down.

I recently mentioned to my boss that I wanted to switch to automatic reference counting.  His response was that he wanted to concentrate on visible improvements. It is likely that this response was in turn driven by pressure he is getting from above him - and probably right from the CEO.

There are a lot of similar examples.  The common thread is that something needs to be fixed but the short-term costs of the fix outweigh the short-term benefits, where "short term" is defined as "within the next few weeks."

How should I handle the situation?

EDIT:  Thanks for the responses.  Keep 'em coming.  Because it is relevant to my situation, I should make it clear that my manager and the CEO are both programmers -- though the CEO may by now have forgotten what this is like.  Apparently their programmer sides have been overwhelmed by other pressures.

You are really talking about technical debt.  Maybe a metaphor would help your managers.  I often compare the effect of technical debt in software to cooking in a dirty kitchen.  If the sink and counters and stove are piled with dirty dishes and there is trash on the floor, it takes longer to make a meal.  However, the fastest way to prepare the very next meal is to work around the mess.  Cleaning the kitchen, and keeping it clean, will delay the next meal, but will improve the delivery of all subsequent meals.  And just as the hungry person in the dining room can't see the messy kitchen, and won't understand why you want to clean up before starting to cook, your management can't see the mess in the code.  You need to either show them the mess, or show the quality problems and delays that are caused by the mess.

Perhaps you could also talk about urgent tasks and important tasks.  When important tasks aren't done, then urgent tasks take longer and cost more.
