GUI automated testing needs some experience, and I personally think that one year experience in a formal project should give you a good jump start in UI automation.
The following points are very important for automation of user interface testing:
2. Do not automate the part of the GUI which is not stable yet or too buggy. This will lead to lots of rework when the application interfaces changes. Start with some more stable part of the application. Mainly before automation make sure you can actually run the manual testing on that part of the application without any big defect.
3. Try to avoid using text to recognize the controls in your application such as OK button but use some fixed control properties to discover it, such as the Control ID and so on. In this case, the generated code will be more stable and change in the text of the control by the development team will not affect you. Also there will be no localization issues.
4. Solve the synchronization problem. GUI Automation is mostly unstable because of synchronization problems. For example you can not click on a row while the screen is still loading. So you need to wait for certain times before you can make the next click. In your automation you need to take care of these kinds of wait times.
5. During the GUI automated testing certain windows object such as tool tip, Balloon etc can pop up. You need to think and handle all those exception scenarios and put some work around action in place. For example if a pop up comes the automation will close it and then proceed etc.
From my experience most of the GUI automation test problem comes from any of the above points so if you can handle them from the beginning then there will be less challenges in future.