You have made a distinction between programming and chess and go. There was a period when people thought chess could be solved by AI, but go couldn't, because go was too highly dimensional. That distinction has been proven not to be meaningful.
Let's maybe start with the fact that in Chess and Go it is straightforward to find out if the game is over and if so, who has won, whereas with programming, it's not even clear what it means for a problem to have been "solved", unless you formalise it to an extent that is basically never done (and which is also usually more expensive than just programming the solution).
Solving Chess/Go and programming are really not much alike.