
Помню, еще в универе, удивлялся, что целые фирмы существуют и делают продукт, про который мне было решительно непонятно: а что там делать-то?
Редактор кода пишете? А что так долго, чего там писать? Фотохостинг? Твиттер? (Ну, Твиттера тогда еще не было, но условно). Могу сделать за неделю.
То есть я думал, что могу сделать. На самом деле не мог, конечно, но эта мысль в голове не укладывалась. Потому что — ну все же понятно, фич минимум. Какой-нибудь Блендер, ладно, понятно, там кнопок на сто экранов, там я хотя бы вижу, где сложность.
Но твиттер? Что делают там эти пять тысяч человек на ежедневной основе? Пять. Тысяч. Человек??
Постепенно, конечно, с опытом, начинаешь привыкать. Не то чтобы смиряешься, но хотя бы ожидешь подвоха. Технологии будут брыкаться. Коммуникации. Требования. Поиск по ходу разработки. Матрица взаимодействия фич растет квадратично. Мозг человека конечен и кончается очень быстро. Хорошие решения можно месяц придумывать, а плохие тебя очень быстро замедляют. Люди. Люди любят писать код, но не любят его переписывать.
Технологии, наверное, один из самых моих главных источников фрустрации. Когда ты видишь — надо сделать X, одну тривиальную, до самого конца понятную фичу, уже все придумал, а потом тебе приходится написать кода не то чтобы на 3 * X, а на все 100 * X, потому что, ну, вот такие вот технологии. Вот так вот не очень удобно все придумано.
Языки высокого уровня помогают. Кложа радует больше всего, в ней сложность проблемы и сложность ее записи в языке максимально близки, ближе, чем где-либо еще. А в каком-нибудь С++, когда ты в очередной раз думаешь, куда бы тебе пристроить еще один так не кстати нарисовавшийся указатель, или опять пытаешься понять, почему говно X не линкуется с говном Y или кто-то там где-то чего-то не находит (причем ты про всех ребят в этой цепочке слышишь в первый раз в жизни, откуда они вообще берутся), не соединяется, не работает как написано, или просто дохнет без всякого следа, когда компилятор тебя не слушается, потому что позвать С++ компилятор правильным образом это реально черная магия, которой надо шестьдесят шесть лет у некроманта учиться, тогда да, ух, начинаешь рано или поздно сомневаться в правильности своих жизненных выборов.
Есть еще подводная часть айсберга. Планируешь приложение из одной страницы (буквально!), а к нему потом надо еще лендинг приделывать, авторизацию, процессинг платежей, страницы об ошибках, рассылку емейлов, бэкапы, мониторинг, CI, релиз процесс, миграции. И вот у тебя уже не милый стенд на углу с домашними открытками, а целая типография с издательством впридачу, по крайней мере по сложности управления. А суть, то, что приносит радость — та самая одна страница — это реально 10% от того, что в итоге придется сделать. Поэтому я стараюсь в маленькие хобби-проекты особо не ввязываться.
И поэтому я так люблю писать. Писать легко — полчаса и готово, проект закончен и выкинут из головы. Все плюсы, никаких головняков, буквы ведут себя ровно так, как ты хочешь, не выскакивает из ниоткуда внезапно 900% дополнительной работы по несвязанным с сутью вопросам, а текстовый редактор не плюется ошибками длиной в два вертикально ориентированных монитора на клингонском.
А вот программировать сложно.