This a great question because a lot of people get caught in cooking ruts and end up restricted by recipes. As a result improvised dinners never meet their full potential.
The trick starts with the capacity to veer off course a little bit, to understand substitutions and ingredient stand-ins. For instance, use a poblano in lieu of a bell pepper in a recipe. It can change the flavor dramatically and add heat. Use lamb instead of beef for your stroganoff, leeks instead of onions in your soup. Scribble outside of the lines and see what happens.
The catch is this, in your experimenting . . . you’re going to screw it up . . . . bad. It’s the only way to learn. So get comfortable with this fact, and open up to learning from your mistakes. Maybe the poblano was too bitter or the stroganoff a little too lamby. The key is to take note and not make the same mistake over and over.
Now if you’re going to get inventive, great. Just start out real simple, keep the number of ingredients low, say around five. The cooking steps should be few and easy to execute. Cutting out the variables will allow you to judge what it is exactly that is happening, and so, better gauge how to adjust it.
This brings us to the next step. Free your mind and your tongue to notice what is happening. Taste and feel for the components. If you’re making a salad dressing, is it salty enough? Does it need sweetness? Honey maybe? Is it acidic enough? Does it feel viscous enough to stick to you salad? You have be able to sense what is missing, and discover how adjust for it. Even a perfectly executed vinaigrette recipe will vary greatly over time, every lemon is different, olive oil changes over time, and so on. These small variances can add up to a very different finished product, even in a simple thing like a salad dressing. It is the ability to correct for these variances that will help you get away from recipes.