Путь разработчика. Часть 0х3. Ошибки проектирования

«Пусть чередуется весь век
Счастливый рок и рок несчастный,
В неутомимости всечастной
Себя находит человек» (Фауст)
«Человек не может постигнуть дел, которые делаются под солнцем. Сколько бы человек ни трудился в исследовании, он всё-таки не постигнет этого; и если бы какой мудрец сказал, что он знает, он не может постигнуть этого» (Книга Екклезиаста)
Теперь я знаю, прежде чем прыгать выше своей головы, нужно сперва проверить высоту потолка...
«Когда все сломалось, прочти инструкции» (Правило инженера)
Пока я ломал глаза читая киндл, искривлял позвонки сидя за ноутом, разрушал психику в жёстком одиночестве суток, я всё больше сливался с проектом, строка за строкой рос вместе с ним, становился, таким образом, проектом самого себя, но, как говорил мой шеф, делал это как «Художник, который забивает гвозди». На самом деле, продолжал записывать кровавые биты в память, вслух матерясь, когда что-то идёт не так, и всё меньше и меньше спал... Постоянный рефакторинг с ловлей багов и внедрением фич во всё усложняющую абстракцию не приближает, а наоборот отдаляет меня от конечной цели. Никак не могу найти разумный план, вдохновение вместе со временем уходит всё дальше и дальше от меня.
«Абстракция — это смерть для этики, ибо этика есть живое отношение к живой жизни» (Альберт Швейцер)
Когда ты проходишь долгий пусть самостоятельной разработки, общие очертания приобретают некую ясность, которую остаётся лишь «допилить напильником». Это цикл профессионального взросления от hello_world-скриптёра и monkey-кодировщика до программиста-архитектора. Таким образом, мысли скапливаются, выражаются в понятные мозгом алгоритмы и структуры, наконец, сливаются в одну конечную точку - конечную цель любого мастера - готовый продукт. Однако, точка продолжает двигаться пока двигается наблюдатель, а продукт перестав быть целью, уступает место менее важным вещам.
«Пусть постоянное критическое отношение к вашей программе войдет у вас в привычку» (Прагматичное програмирование)
Смысл любого искусства — выделить из размытого мира что-то и воплотить это нечто в резкую форму (будь то спорт, музыка, стихи, рисунок).
«Если вы не уверены в правильности выбранного направления, остановитесь и проверьте его» (Совершенный код)
То что я продолжаю делать мне кажется не искусством, а повторением чужих идей в надежде сорвать заветный куш. Но всё без вау-фичи, всё что я делаю получается не таким каким хочется.

Что является важным для старта? Вау-идея, грамотная реализация, удачное время, многомиллионное продвижение, мощная команда?.. Всё не то! Старты не для продажи, не для покупки нового X5, старт - это вызов, борьба с главным противником в тяжелейших попытках доказать всем что один ты достоин награды. Победа над противником - вот что действительно важно. Раз за разом быть первым, оставляя конкурентов далеко за финишной чертой. Это стремление самое сильное, именно оно лежит в духе бизнеса. Пока существует человеческая природа будут продолжать действовать человеческие законы. Что губит человека - губит дело, что поднимает - поднимает дело. Важен именно такой человек.
«Смотрите, как люди пытаются что-то сделать и старайтесь предложить им более удобное решение» (Пол Грэм)
Ограничившись малым я проверяю себя в возможности в одиночку создать с нуля приложение, пройдя весь цикл разработки с 0% до 100%. Оставив позади Москву я падаю вниз, за тысячи километров на юг. В Пятигорск.
«В действительности ошибки являются сутью проектирования» (Совершенный код)
Жизнь без суеты большого города стремительно замедляется. У меня появляется больше времени, которое я решаю потратить на окончание «старых» дел: досмотреть TOP-100 лучших фильмов всех времён, удалить себя из забирающих время и нервы социальных сетей, закончить начатые статьи и прочитать книги. Я меняю ограниченное время на обучение, остаюсь верен своим стимулам. В конце концов, правильный старт решает финиш...

На моем киндле закачаны столько научных, психологических, философских и политических книг, что прочитай их все — считай сразу получил второе высшее, а учитывая уровень сегодняшнего образования — два высших сразу. Одного технического образования всегда будет мало. Любой настоящий разработчик должен знать гуманитарные науки минимум на уровне своих технических знаний. Мало выучить работу продукта изнутри, надо понимать общие основы. Для сколачивания собственной команды матан не сильно поможет, здесь составляющие знания, в первую очередь, управленческие и психологические.
«Никогда ничего не добьёшься, пока не научишься определять, что для тебя в данный момент самое главное» (Звёздный десант)
Разработка не является предметом научной работы или написанием докторской; разработка — это приобретаемый навык, ремесло, которое оттачивается каждодневным трудом и постоянным упорством. Когда у тебя не получается писать код, писать требования — пробуй писать статьи, стихи, книги... Код неограничен также как неограниченна математика, ограничены только наша скорость и скорость наших машин. Быть разработчиком сегодня -значит проходить через все структуры безумия и массивы хаоса, пробираться через очереди операций, вооруженным лишь краткими указателями о возможных исключительных ситуаций, чтобы в конце концов найти ошибку в незамеченно нажатой вечером клавише бэкспейс. Более крутые найдут ошибку в чужой мажорной библиотеке, а самые крутые, которых я не встречал, — найдут ошибку уровням далеко глубже: в компиляторах, состояниях среды и, возможно, в самой физике! Но надо всегда помнить - никто не знает как сделать лучше; лучший — знает лишь меру самому себе.

Проходит месяц упоротого-кодинга. Я плачу $25, публикую на маркете свою гейму. Ссылки на альтернативные магазины и копипаст описания на различных профильных ресурсах приносят за пять дней одно (1!) скачивание. Так я понимаю, любую идею нельзя считать успешной даже с реализацией. Любую реализацию успешной делают только продажи.



Мой первый собственный коммерческий проект рухнул — типичное для многих начало. Но с завершением разработки приходит лучшее понимания себя — мне не приносит удовольствие само написание кода, решение задач, пусть даже порой интересных. Меня дико раздражают плавающие баги, особенности железа и постоянное тестирование. Однако, заканчивая проект, когда работа сделана до конца, после долгих мучительных изменений, которые перевернули первоначальную задумку с ног на голову, я чувствую, как уверенность разрастается внутри меня, как появляются новые силы, новые планы, новые горизонты. Я опять сажусь в кресло перед монитором, открываю в WebStorm проект Q.

Месяцы идут, деньги заканчиваются. Постоянного заработка нет. Главное не остывать, где бы ты ни был. Принимаю следующий вызов — найти удалёнку. Хорошую, годную удалёнку найти нереально сложно. Заказы на фриланс-сайтах представляют дикий треш, в худшем смысле этого слова. Проходит март, приходит середина апреля. Я нахожу игровую контору, где по контракту требуют сделать аналог игры «1+2=3» на неизвестном мне фреймворке Cocos2d-JS. Я трачу субботу на изучение особенностей движка и ещё воскресный день на реализацию MVP. Лишь благодаря тому, что прежде я игрался с PIXI и Crafty, я получаю контракт, подписываю его и продолжаю пилить свой первый фриланс.
«Подняться в небо можно из любого закоулка» (Луций Анней Сенека)
Проходит время. Сроки контракта передвигаются, а я не получаю никакого «бабла». Переговоры на ломаном английском сильно прокачивают меня внутренне. Неверно оценив объёмы работ я продолжаю пилить, всё не решаясь запросить больше «бабла». Наконец, деньги заканчиваются и я резонно решаю искать фултайм с релокацией и обновляю резюме на хантинг-сайтах. Ради эксперимента оставляю родной город в качестве своего места жительства. После обновления, спустя неделю, мне ясно видится, что сегодняшние рашкинские работодатели не готовы предлагать нормальный оффер с релокацией. Прийти к успеху в Рашке - значит добиться своего своим холодным потом и быстрыми уверенными действиями. Мне попадается несколько годных контор - одна с удалёнкой, на которую я не могу попасть из-за отсутствия MacBook'a и скиллов по Sketch'у. Другая - типичной паршивости средняя контора, созданная скорее для отмывания денег и мозгов. Наконец, на третьей начинается невразумительное скайп интервью, с моим постоянно падающим роутером, и оно, каким-то фигом, становится решающим.

Спустя неделю я прибываю покорять столицу, уже в третий раз. Множество рас, смешавшихся в спешащей суете, встречают меня в растущего вверх городе. Все они хотят быть хорошо накормленными, те кто здорово отъелся, твердят что надо сваливать; сами оставаясь здесь. Они только и умеют говорить...

Сравнивая Московию с Петроградом я напишу следующее: Москва и Питер — два орла холодной России, два непохожих брата — один наглый, другой культурный, богатый и бедный, высокий и низкий, дерзкий и забитый, старый и молодой, строгий и неформальный. В остальном же - почти одинаковой просторности чистые центральные улицы, грязные реки, заплёванные асфальты, зассанные бомжами урны возле скамеек. Тесный, закрытый и хитрый — мой сложившийся образ «Масквы», где сборище талантливых людей с трудом выхватывают свои права.

Продолжение следует...