For most of the tricky stuff the hard part is thinking clearly. Deciding how to approach the problem, what to prioritize, etc

Translating that into whatever language you chose is not that hard.

Right, the actual engineering part is hard. Typing out the code without botching syntax usually isn't very hard. Unless it's a C++ type with a dozen modifiers.