programming to me is about solving our specific problem by creating are own abstractions on top of abstractions created by others... good programmer create simple but powerful abstraction. Programming being hard depends on the abstraction you are programming against.