Почему каждый хоть раз должен написать свой компилятор? Вопрос очень хороший. Написание компилятора это как "подтягивание" в спорте - базовое упражнение, которое затрагивает огромную часть практически значимой теории.
Например, парсинг - лично мне это пригождалось 100500 раз, начиная от парсинга логов, заканчивая написанием фитнес-функций, которые отображают качество кода. В рамках этой задачи очень хорошо заходят регулярные выражения, которые раскрывают понятие "регулярности" и приводят к "регулярным грамматикам".
И это только один из примеров. А есть еще - деревья (AST), лексический и синтаксический анализ, проблемы вычислимости и много других вещей, которые встают буквально "на место" когда пытаешься все реализовать на практике. А далее архитектура ПК и много всего интересного с позиции понимания железа...
Поэтому я абсолютно серьезно рекомендую написать свой простенький компилятор, это большая инвестиция в свои профессиональные знания.