People who work to automate applications tend to write a lot of code. In order to write good code to automate application I need to code well and understand programming patterns, TDD, abstraction layers, refactoring… the same skills are required to be good at application development.

Not everyone in testing automates applications. There are many other skills required to test software.

There are also many other roles involved in software development: analysis, management, architecture, requirements, databases, infrastructure, etc. You don’t just have to consider testing.

But none of the above addresses “terrible at coding”. Programming takes a lot of practice, and in order to be good at it you have to enjoy it. Unfortunately questions don’t provide a lot of context so some of the following might not work for you.

try a different programming language, perhaps you’re working with language you don’t like

try Test Driven Development, perhaps you’re trying to keep too much in your head as you code and aren’t working in small chunks

learn refactoring to help you restructure code

read a lot of code and programming books, even if you don’t understand it, the more you read it, the more it sinks in

watch videos on youtube showing live coding, and as you watch think if you would do it that way or differently

read code on Github and see if you understand it, and can identify ways to improve it

find online courses, and work through the exercises, but you may need to try many courses until you find an instructors style that works for your approach to learning and the point you are in your experience

try coding something fun e.g. I spent some time this weekend coding a Text Adventure Game to practice with some coding patterns

try some coding katas, these are small exercises that you might see many answers for that can help you with yours

try automating some applications and learning libraries and tools to do that, you might find you enjoy it and that writing test code comes more naturally to you

… the point is that if you want any role that involves programming then you need to keep practicing and improve your coding. Otherwise, find a role that doesn’t write code (not automation).

And sadly, none of them are ‘easier’ than each other. They come with different stresses, different skill requirements, and different responsibilities.

When we work in one role we might look at the other roles and perceive them as easier than the one we are doing. But that’s probably because we don’t see all the painful stuff that the other person is going through, and we might not appreciate the skills and experience that they are applying to their role i.e. they might be making it look easy, but when we try it might not be something that matches our current skill levels.

If you have the opportunity to try new roles, then it might prove useful to experiment while you can. I’ve worked as a programmer, tester, manager, analyst, coach, automator and each of these experiences has helped me when I’ve performed the other roles.

A Software Developer is a mix of : programmer, tester, automator, analyst, architect, manager, etc. If we want to become good Software Developers we need to try the other roles.

Hopefully if you keep learning, keep practicing and keep experimenting, you’ll find a role with the mix of responsibilities that matches your skill set, and pushes you such that you keep learning.