One of the design principle behind solidity was that it can be used easily by any software developer. That is the reason that the language is a relative simple javascript like programming language. However the facts that in most use-cases one writes immutable smart contracts to the live Ethereum blockchain and the easy programming language makes the feeling that everyone can write blockchain applications lead to catastrophes. Even if the programming language is easy to implement an immutable smart-contract requires actually hard-core engineering: like unit testing, penetration testing and formal verification. It is quite the opposite of the everyone can implement now blockchain solution idea. Instead of an easy programming language, Ethereum programming should be actually something that is made artificial difficult, not because it is necessary, but just to give the message to everyone: if you want to develop for Ethereum, immutable smart-contracts storing a couple of millions of dollars, you need hard-core engineering.