Is there any general way of knowing which preposition to use?
Similar situations require different prepositions:
работаю в учреждении
работаю на телеграфе
учусь в десятом классе
учусь на первом курсе
был в театре
был на спектакле
был в тылу
был на фронте