Premise 1: All reasoning requires logic.
Premise 2: Programming a computer requires reasoning.
Conclusion: Computer programming requires logic.
The problem is that premise 1 is false.
Logic is to reason as grammar is to language. And I wouldn't say studying grammar is a prerequisite for speaking.
yeah.
likewise, trial and error isn't nearly so ineffective, since humans have a lot of general intelligence and intuition and similar, they can generally make fairly good guesses and approximate a good solution with far fewer iterations than what would be required if working completely at random.
like, humans can usually estimate when things are getting better/worse, internalize things which are known or discovered to work, make use of various heuristics and strategies, ... so, trial and error can be turned into a reasonably effective tool for many use-cases.
though, in some cases, I guess it might depend some of whether a person making use of a step-by-step algorithm in their head (such as using recursive/iterative range subdivision to tune numeric constants/...) counts as using logic (I guess it might, especially if ones' thought-process includes if-conditionals/branches and loops and similar, like they need to mentally evaluate the conditional to decide which branch to execute, ..., hence logic, *).
looking into it, some of this may classify as "guided empiricism" though.
*: well, and all the other inner-mind weirdness, which is sometimes often beyond explanation.