"Testers are poor coders." - That's a very commonly heard remark about software testers. This is mostly true as well. Testers often code just to get work done, at times using scripting languages which are vendor specific, just tweaking a recorded script. The quality of code written is rarely a concern and most of the times, the time and effort needed to do good coding is not allocated to test automation efforts.
The above scenario changes drastically when one needs to develop one's own testing framework, extend an existing one or contribute new code to an existing one. To retain the generic property of the framework and to build scalable frameworks, testers need to develop better coding skills.
This is a video export of the mind map that Rahul Verma used to talk about some generic principles and patterns, which come from development world as well as our own research on the subject. The aim is to inspire more and more testers for considering design elements of automation as essential part of the craft.