In general, DO NOT use Find-like or GetComponent/AddComponent-like methods unless there truly is no other way, eg, dynamic runtime discovery of arbitrary objects.
These mechanisms are for extremely-advanced use ONLY.
More information: Regarding GameObject.Find · UnityTipsRedux
More information: Why cant i find the other objects?
If something is built into your scene or prefab, make a script and drag the reference(s) in. That will let you experience the highest rate of The Unity Way™ success of accessing things in your game.
For dynamic makings of arbitrary things at runtime, use a template adaptor pattern to minimize code scatter. See enclosed example of dynamic UI.