This totally brings out a distinction that confuses many that try or do programming. The basic concepts and intellectual tools are simple enough for most, no need for high math mental acrobatics for most algorithms. But the details of implementation are totally arbitrary and often obfuscated. The example in the discussions is great: I want to rotate an image and there are dozens of libraries available, but most will not work with your environment, or will give you incorrect or non intuitive results for non intuitive reasons, like plays bad with your other libraries, or latest version breaks some feature, or it won’t work on some platform, or has no documentation, or error catching fails, etc.
The cognitive tools of declarative programming are simple, but the implementation tools are idiosyncratic, non standardized, flawed in unpredictable ways, etc. In your case rotating an image can be done with a variety of simple enough algorithms, but the cost in time and head scratching can be out of proportion with the simplicity of the idea because of implementation issues.
There are many examples in technology in general. A common example is electricity: the principles are easy to understand, using say the water flow model makes it intuitive for most people how one generates, transports, measures and uses electrical current and power. The formulas tend to involve simple calculus operations, say Ohm’s law etc. However the real issues that come up to have a city wide or country wide electrical system are where the complication arises. Most people can learn to build an electric motor to say mow lawn or light their home, kids do it in countries and conditions where they they have no choice, and do it safely too if they are taught procedures that help them keep conscious of what is live and how much power comes through.
Yes large corporations with hundreds of engineers are required to run country wide networks because of obstacles that have nothing to do with immediate electrical principles, but rather stem from issues of dissipation and transformation at larger scale which are predictable, but also regulation and politics, lack of standards or standards based on older technologies etc. The barriers to distributing electricity to all are not predictable only from electrical laws. Moving electricity is simple, yet huge tech firms fail and entire state and country networks regularly fail or get to the edge of failing.
Programming is no different. The principles are not that hard, most people get flow control, if-then-else, do-until, etc. But the reality of the work may be that the compiler on some platform optimizes your loop or your static variables in such a way that it triggers some bug in some virtualization library and so you are forced to use more complicated algorithms, and then later on when another programmer uses your code they have to scratch their head at how come the simple task your code does seems so complicated, because they have no clue what problems you encountered.
All this to say that in programming, like many other jobs, the real everyday work in the field is not like one imagines when learning the principles. Writing a useful macro in Word is way more complex than the principles of programming might imply :)