Я б почав із цитати:
"якщо єдиний у вас інструмент - це молоток, ви ставитеся до всього, як до цвяха". (Абрахам Маслоу)
Найважливішим принципом, IMO, є знання безлічі різних парадигм програмування, мов та добре інформування про інструменти, що знаходяться у вашому розпорядженні. Будь-яку проблему можна вирішити практично будь-якою мовою, яку ви обрали, будь то повномасштабна основна мова з її величезною бібліотекою за замовчуванням або невеликою спеціалізованою мовою, такою як AutoHotKey. Перша робота програміста - визначити, що використовувати відповідно до специфікації проблеми. Деякі концепції забезпечують кращий підхід до теми, якою б не була ваша головна мета - вишуканість, затуманення, продуктивність, портативність, підтримка, малий розмір коду ...
В іншому випадку ви закінчите, як деякі програмісти, які відчайдушно намагаються зробити щось на 1 мові, яку вони спеціалізували, тоді як проблему може бути тривіально вирішити в іншому контексті програмування.
Ця порада поєднується із сучасними тенденціями до багатомовних проектів (візьмемо, наприклад, веб-програми, які можуть включати декілька мов в одному додатку, такі як C #, JS, CSS, XPath, SQL, XML, HMTL, RegExp .... і навіть різні парадигми програмування (наприклад, C # нещодавно представив деякі поняття з функціональних парадигм програмування, лямбда).
Отже, основне - це постійне навчання, назавжди :)