There's something intellectually seductive and deeply satisfying about creating ideas that act in the world: programming is a very refined act of creation. But, debugging your code sucks. It hurts to confront your own limits -- that wicked cool idea turns out not so cool as you transform it into code.
You can build anything with a Turing machine. Ultimately it's one pile of bits manipulating another pile of bits, or a pile of self-manipulating bits. It is not a question of what you can* code but a question of what you *should code. That is an ethical question. What on the surface looks like some kind of purely rational and logical exercise of composing and abstracting ideas is in fact deeply subjective and personal.
For all of the mechanistic, brutal logic to be seen at first glance, the essence of programming is artistic and poetic.