Книжки, лекции, статьи, личные советы.
Решение:
Завести виртуалки (или железки),
для сборки, написать систему сборки для них,
с предоставлением отчётности.
Писать юнит тесты, или использовать подход TDD.
Тестировать, спотыкаться о грабли, набирать опыта.
Чтить стандарты своего языка, выбирать наиболее полную
реализацию стандарта.
Разделять платформозависимый код и кроссплатформенный.
При переносе на другие архитектуры, ознакомится с этими архитектурами.
И да, использовать кроссплатформенные системы сборки, аля СMake.