Why are all engines identical in typical commercial airplanes? I come from the IT world where redundancy is in place to cover several cases, among other:


a statistical failure of a device (so we use more of them expecting that the event is independent)
a rogue usage of a device (hacking into it though a vulnerability)
a specific context where a bug is triggered 


In order to account for the last two ones, redundancy is sometimes (or usually - depends on the criticality of the system) done with different devices (form different vendors). This is typically the case with firewalls, for instance.

I was wondering why this isn't the case with aircraft engines?

It would be "easy" with planes having four engines (so two of each kind), somehow less "easy" with two engines (where the differences between their regimes would need to be compensated - the pilot states that they want 80% of power, which, in the specific conditions they are in, means 78% for the left engine and 83% for the right one).

Having two redundant engines which are equally susceptible to be impacted by, say, ashes is probably not interesting, compared to having two different ones which would each have its strong and weak points (but different between the two)



Note 1: "easy" above is used as a placeholder only. I am aware that aircraft software and hardware is complicated, I mainly wanted to highlight the difference between 2 and 4 engines. Having two firewalls is a simple task compared to that.

Note 2: it may be that engine failure is not a big deal, statistically speaking compared to other issues (or in an absolute sense), and therefore the extra maintenance, structural compensations because of the differences etc. are not worth it. Thanks for pointing this out if this is the case
Engines don't fail, on average. And if they do, it's a very low probability that two engines will fail at the same time.

Modern jet engines are extremely reliable, with failure rates on the order of 0.01/1000hrs. And if you do have a failure, you have redundancy, as you have two (or more) engines. A plane can stay aloft and land with a single engine.

It would add a lot of complexity and maintenance costs, with no real benefits.

If the failure is external, such as water in the fuel, lack of fuel, or ash ingestion, two different engines are unlikely to help, because all jet engines works in a very similar fashion. The external problem would simply affect both, maybe at slightly different rates, but ultimately shutting them down anyway.

So it adds cost and complexity, without providing any real improvement. Jet liners simply does not crash because all engines stops due to internal problems. 

The one case where it would help is if there's a design fault with the engine, e.g. manifesting in turbine breaking after x hours. But engines are extensively tested before being put into serial production, and this occurs very rarely on production aircraft. In addition, the likelihood of the same problem occurring on two engines in such a sport span of time as a flight, but not at all during testing, is a rather low likelihood.