What follows is inspired from reality.
It is not a product of my imagination.
Tester: Selenium is a tool like QTP.
Developer: Selenium is a Java library for web test automation.
Tester: I will automate test cases by recording them with Selenium IDE.
Developer: Selenium IDE is not an automation tool.
Tester: I dont need to write code like developers. I used to write Visual Basic code and that should be enough for automation.
Developer: The automation code should be at the level of production application code.
Tester: Every time my test needs a verification, I do it in IF/ELSE statements.
Developer: Verifications are done with JUNIT or TESTNG assertions.
Tester: Who cares if all code is in the test method? It works and it looks good to me.
Developer: I will first write an automation framework.
Then I will create the page object classes that are used in the test methods.
Tester: Explicit waits and expected conditions are not reliable and dont work well for me. I have created my own.
Developer: Explicit waits and expected conditions work well. I extend them in custom classes when needed.
Tester: Look, my test works! That is all I care about! I can start a new test!
Developer: My test should work but also be easy to understand, short and maintainable.
Tester: All my libraries are imported to the project. If I need new versions, I remove the old libraries and import the new ones. I used Maven long time ago and dont remember much about it.
Developer: I use Maven for managing dependencies.
Tester: All tests run from my computer every night. I run them anytime someone needs them.
Developer: Anyone can run my tests from Jenkins. They are scheduled to run every night.
Tester: My tests run in parallel on my computer.
Developer: My tests run in parallel on all available Jenkins slaves.
Tester: I love using static methods and static variables.
Developer: Static sucks. I avoided it as much as possible.
Tester: My project is very cool. I have a utility class for all common purpose methods. All page classes inherit from the utility class. This makes my page classes shorter.
Developer: I use composition to break the page classes in page element classes.
Tester: All my page element locators are in property text files.
Developer: If the page element locators are outside of the page classes, the class encapsulation is broken.
Do you have anything else that should be added to the list?
Please tell in the comments so I can add more.
Want to be more than a Selenium tester?
Start with this Kindle book on automation patterns that can make your Selenium code better: