Good test automation is not created by using an automation tool.
What you get by using an automation tool (like QTP/UFT, Ranorex, etc) and its record-and-play module is bad test automation.
You get test automation that is fragile, not reliable, difficult to maintain, difficult to extend, difficult to implement.
Good test automation is writing code that uses an automation library to interact with an application.
Selenium WebDriver and Appium are automation libraries for web and mobile automation.
Each automation tool provides an automation library or API as well.
Lets decompose what good test automation is:
writing code in general
an automation library
writing code that uses the automation library
1. Knowing how to write the code is the most important.