Recording tests often leads to hard to maintain tests, therefore most experienced testers prefer hand coding automated tests over recording.
Automated tests often cover the same area multiple times, in order to setup data, or for example navigation. When a central part of the application changes this could result in multiple tests failing, all these tests need to be re-recorded or manual changed. Large applications could have thousands of automated test cases.
It is therefore, important that the test tool/framework supports reusability of steps, any duplicated steps should be centralised. Because of this step reuse and repeatability of steps often the frameworks introduce an API around one or more programming languages.
Recording tests can be a great time saver for setting up a test for new functionality since most recording tools have the ability to export the test to code. The recorded tool will find most control selectors (unique identification of objects) for you. Afterwards, you can remove the duplication and clean up the test so it becomes more maintainable.
Another big plus is that developers can often run and update tests from their IDE, when changing functionality they can run the tests to verify they did not break anything or change the identifiers in the test without the need for an recording tool or a tester.
Why do you need testers then? They have a different view on the world on how and what should be tested. Mainly you need them to make sure the right things get tested. Also I think they are less prone to taking shortcuts and have a love for testing in general, combining developers and testers in a team to create test coverage for all new functionality is dream come true.
The answer relates to this question, why do you need development skills for testing jobs: Can someone clear-out these job posts for me once and for all?