From plain windows desktop or android phone code to rocket avionics code, most of the software code behind these applications are complex. Some are way more complex than usual, and barely any of them are simple. This has both good sides and downsides. The more complex the code is, the more likely there is to go wrong. The less complex the code is, the less there is to go wrong.
This especially applies to rockets, like the Space Shuttle, SpaceX's Falcon 9 Rocket, and more. Not just the code, but the actual structure and engineering. If you have a rocket with so many complex parts, there are so many more things that could easily go wrong, which could cause the rocket to explode. It could be something as simple as a new welding technique, the weld could break mid-flight and explode the rocket.
If you are a rocket nerd and wondering how this would explode the rocket, let's just say both the tanks welds for the fuel and the oxidizer tank broke and the fuels mixed mid-air and found an ignition source like a spark ;)
Meanwhile, if you have less complex parts on your rocket, and/or use more reliable methods for things, then the less likely there is for something to go wrong and cause the rocket, well, to go boom.
The same thing goes for online software on the internet, if you have a very complex software, like an OS, there are more things to exploit/hack, putting you at risk to get more viruses that find a loophole via your antivirus.
The downside to this is, the less complex you make it to prevent issues, the fewer features you have. This is an issue for computer software, but not so much of an issue for the structure of rockets, as you might want to worry more about your humans than the design, but that doesn't mean the design should be awful ;)