> Encoding your ideas into a programming language is easy.
This is still difficult. Sometimes the programming language or the programming methods you want to use effect how you desing the system on an abstract level.