
Я программист. А если точнее — архитектор программного обеспечения. Для меня Factorio, это повесть о техническом долге, преждевременной оптимизации и микросервисах. Да, о долбаных микросервисах, с Docker и прочими RabbitMQ. Вот прямо реально. Без шуток сейчас.
Поясню. Всё начинается с того, что ты строишь монолит. Потому что требования ещё не окончательно ясны, условия тоже... Да и бегать далеко долго и неэффективно. Этот монолит постепенно разрастается и... Обрастает костылями. Да да, настоящими костылесипедами! Например, попробуйте построить ленту через половину своего завода (несколько раз мне пришлось использовать половину ленты, задействованной в совсем другом процессе, повышая связность системы!). Или дотянуть трубу со смазкой от нефтеперерабатывающего городка в другой конец завода, потому что больше нигде места нет... Прямо как в той картинке про "удивительный мир программирования". В общем, классический такой монолит со всеми проблемами, которые знает любой программист, написавший что-то большее трёх тысяч строк на питоне. Попытки в нём что-то изменить, вызывают прямо физическую боль и прокрастинацию!
В какой-то момент ты понимаешь, что так больше продолжаться не может. Всё, кабздец. Море кончилось и надо переписывать переделывать всё нафиг. А лучше — бить на части. И тут, как и в реальной жизни, ты сталкиваешься с внешними проблемами. Потому что переделка всего и вся с нуля сопрежена с рядом трудностей. Во-первых, очень не хочется останавливать с таким трудом налаженное производство бутылочек. Во-вторых, ты уже достаточно насрал на этой планете и местная фауна начала совершать набеги на заботливо расставленные турели. В третих... Это, чёрт возьми, элементарно сложно! Трудозатраты нифига не так малы, как может показаться на первый взгляд, потому что связность, бессердечная она такая, высокая и надо эти связи как-то рвать (ничего не напоминает?).
Но чтобы развиваться дальше, а не топтаться на месте, надо брать и делать. Начинаешь с того, что выносишь добычу ресурсов в отдалённые месторождения. Потом собираешься с духом и делаешь плавильный городок (лучше — два). Потом микросхемы... А потом жестоко огребаешь от ошибок, совершённых в планировании всего этого микросервисного разнообразия. Например, начинает переполняться очередь (из поездов, ага) и приходится думать о том, как управлять семаформаи с помощью логических цепей (бросать тонны красно-зелёных проводов с управляющими сигналами на дикие расстояния), а потом долго это дебажить, потому что нет нет, да поймаешь где-то дедлок который всё остановит.
Игру люто рекомендую. Можно детям, если хотите научить их логике и таким понятиям, как "технический долг", "высокая связность", "преждевременная оптимизация", "костылесипедостроение". Лично мне кажется, что это очень полезно.