MCUs? Programming? Yeah, that's surely an option.
But it can be done with good old jellybean stuff. Here's my attempt at it, built using two venerable ICs: 4017 and 40106. Maybe a bit crude, timing isn't precise, but hey, it's a quick and easy way to do it.
R5*C1 set the delay between the switch is pressed and the solenoid is turned on. R7*C2 set the power-on reset delay. R9*C3 set the solenoid power-on duration.
Q1 can be replaced by a relay, but it'll need a transistor to drive its coil (and a protection diode across the coil).
Providing filtered power for the logic circuitry will be a good idea -- an LDO set to ~11V will do, or even a plain LM317
@10V. If input power is going to vary in a wider range or go below 10V, consider using a step-up dc-dc converter (can be a low-power one) followed by a linear regulator.
If a MOSFET is used for the switch, as shown, then we usually can't go lower than 10V, because we generally want 10+V on the gate to make sure it turns on fully. If a BJT+relay pair is used, or a bare BJT (which will then have to be a Darlington) that can handle the required solenoid current, then we can go lower, all the way down to 5V for these ICs, as far as I remember.
upd: output Q0 should ideally be driving, via a 5k-10k resistor, the base of an NPN transistor connected so as to discharge C3 to ground when turned on -- a last-minute idea. but it's optional, since output Q1, when it becomes low, will sink current and discharge it via R9 anyway, which will happen quickly enough.
upd2: reuploaded the schematics.
upd3: not sure if R2 at 100K will be sufficient to reliably pull MR to ground. if it's not, then it can be decreased to something like 30-50k, but not much lower, since 40106 can source very little current.