Привет, в сети можно встретить довольно много статей на тему как запустить личный проект мечты, но я думою мало кто говорит о том, что вы его никогда не запустите. Сегодня я хотел бы вам назвать причины, по которым вы как программисты скорее всего не запустите свой проект мечты.
Первая причина — это опыт. Тут вы наверно можете подумать, что я имею ввиду новичков, у которых недостаточно опыта, чтобы запустить проект мечты, но это только от части правда. Новичкам действительно может не хватать опыта в разработке или в понимании каких-то деталей разработки программного продукта, но в ловушку опыта попадают не только новички в ловушку опыта также попадают программисты со стажем. Смотрите, что я имею ввиду. Предположим, что у нас есть некоторый график опыта. По оси Y у нас будет вероятность запустить проект, а по оси X у нас будет, собственно, сам опыт. Когда у вас совсем нет опыта скорее всего проект вы запустить не можете. Как только у вас начинает появляться опыт вероятность запустить проект резко растёт, правильно? Но потом наступает такой момент, когда ваш опыт вам уже не помогает, а начинает только мешать. И с этого момента вероятность запуска проекта резко идёт вниз. Почему это происходит?
Во-первых, давайте поговорим почему до этого момента вероятность максимальная. Дело в том, что до этой черты у человека маловато опыта собранных ошибок, маловато опыта оптимизации, когда ты думаешь, что "так, наверное, делать неправильно, нужно заранее оптимизировать, потому что буквально через три месяца всё будет совсем по-другому и здесь то мы провалимся". На этом участке люди просто берут и делают. Я много видел таких моментов, когда у новичка в веб разработке появлялась идея он просто брал какой-нибудь WordPress и делал простой сайт и этот сайт уже начинал работать. То есть в то время, когда профессионал с хорошим опытом начинает думать: "так, нам нужно сделать сайт, значит нам нужно наверно выбрать какой-то хороший framework, возможно написать тесты, а на чём у нас будет вообще написан frontend, а frontend сейчас модно делать с React и Webpack, а сколько уйдёт на это времени?". Следовательно смерть проекта наступала ещё до этапа реализации, то есть ты сидишь и начинаешь перечислять у себя в голове всё, что тебе понадобится исходя из твоего опыта, и ты решаешь вообще не делать проект, потому что не делать проект гораздо легче, потому что ты уже видишь все эти неприятные детали которые ждут тебя впереди. В то время как ребята из неопытной категории просто делают. Они просто делают, они натыкаются на те самые грабли, которые ты предвидишь, но они их преодолевают, потому что у них уже, что-то есть, что-то работает, и с этим уже можно как-то двигаться дальше, преодолевать препятствия. В то время, когда опыт просто блокирует деятельность на начальном этапе разработки.
Вторая причина - вы никогда не запустите проект, потому что вы один, быть одному очень тяжело на проекте. Желательно иметь напарника который всегда будет гореть этой идеей, не меньше вашего, который будет пинать вас вперёд, который будет смотреть на вещи с другой стороны, и было бы здорово если б этот человек был с каким-то знанием продукта, то есть чтоб это был не второй программист, а человек который умеет создавать продукт, который умеет описывать продукт, который знает, что какие фичи людям понадобятся сразу , какие будут продавать продукт, а какие просто хотелки и на самом деле они не так уж и нужны. Это всё очень важно если вы хотите двигать дальше проект, если вы один очень легко впасть в уныние и сказать "окей, тут проблема, я не знаю, что делать дальше, фич очень много я их никогда не сделаю".
Третия причина - люди совершенно не умею упрощать, то есть хочется сделать всё и сразу, кажется, что проект мечты он на то и проект мечты, что он должен быть идеален с самого начала, и у него должны быть обязательно все фичи, без этих вич он вообще никому не интересен, тогда это даже не проект, а так какая-то пустышка. Но после определённого момента график снова начинает расти, и он начинает расти с того момента, когда опыта настолько много, что человек превращается в эксперта. Эксперт — это тот человек, который понимает, где нужно начать усложнять, когда упрощение уже не помогает, и теперь уже нужно делать по-настоящему. Вообще все проекты, с которыми я когда-либо работал они так или иначе содержали кучу legacy кода, проблемы, видно было, что люди срезали углы, и можно было сделать лучше и идеальнее. Но дело в том, что на момент, когда проект ещё не запущен, идеально сделать не получается и, если ты погонишься за идеальностью, ты проект никогда не запустишь, и все те проекты, с которыми я работал они были запущены, они работали со всем тем неидеальным кодом, который был внутри.
Эта статья рисковала быть не опубликованной, потому что, я откладывал работу над ней, а откладывая на неделю, и ещё на неделю, и ещё на неделю, ты потом просто думаешь: "А может быть она не столько хороша? И её не стоит уже выпускать?". Идеи нужно проверять и проверять их желательно сразу же как только они появились и проверять их нужно минимальным способом, и потом получить обратную связь от этих идей и двигаться дальше. Я знаю примеры программистов, у которых получается регулярно выпускать проекты, и я действительно по-доброму завидую. Я хотел бы научиться минимально выпускать проекты, и я думаю это произойдёт, как только я немножко дойду к планке эксперта, пока что я не там.