Что делать с тем, что я постоянно переписываю почти весь код?

Вот уже почти пол года прошло с того момента как я всерьёз занялся изучением веб программирования и погрузился в разработку некоего проекта - браузерной игры. До этого опыт программирования ограничивался кривой отсталой вёрсткой пары простых сайтиков и одним семестром изучения паскаля в вузе (в общем то тут я был чистым отличником), а ну ещё в восьмом классе учили perl, но про него я ровным счётом ничего не помню. С математикой у меня всегда всё было прекрасно. Разве что некоторые разделы физики у меня иногда вызывали рвотные порывы. Так вот. Проект по себе, как игра ничего сложного не представлял. Большая часть работы - создание грамотного отзывчивого дизайна и глубокая проработка социальной составляющей проекта (различные турниры, рейтинги, аукционы, чаты и много других точек соприкосновения людей в игре). И вроде бы всё в начале шло отлично. Я целыми днями сидел над своим новым проектом и погрузился в разработку на все 100%. По сути грамотных знаний у меня не было ни в одной области веб программирования (html, css, js, php и пр.). Для старта выбрал фреймворк yii2, так как знал человека который пользовался им, да и отзывы в интернете были вполне убедительными + это свежий фреймворк, а меня очень тянет на новые технологии. И вот я себе поставил цель. Сделать проект за 2-3 месяца. Я думал, что вот это тот срок, который мне уж точно позволит доучить html и css (скорее css, в html учить то нечего) и хотя бы поверхностно (в достаточной мере для моих нужд) js и php (а точнее yii2) и попутно аккуратно сделать мой проект. Но время шло. Я уже мог сказать, что я на терпимом уровне освоил все нужные мне технологии и уже начинал потихоньку ускоряться в разработке самого проекта. Я очень люблю работать над интерфейсами и даже считаю, что у меня это достаточно хорошо получается. Но на этот реально хороший результат я трачу колоссальное количество времени. Я могу пол дня потратить на обдумывание 30 вариантов дизайна одной кнопки, прийти домой, наконец-то выбрать окончательный вариант и только к вечеру наконец реализовать эту кнопку (я конечно утрирую, всё конечно ни на столько печально, но всё же). А так же я постоянно недоволен своим кодом. Точнее сначала я доволен, продолжаю работу, но потом, через неделю другую я начинаю думать об этом участке кода и придумываю более оптимальное решение, а продолжать дальше у меня руки опускаются, пока я не поправлю этот код. И вот прошло уже далеко не 2-3 месяца, а почти пол года, а проект завершен в лучшем случае на 70%. Да я двигаюсь дальше, но это происходит крайне медленно, хотя я сижу над ним с утра до ночи. И да, проект реально улучшается и с точки зрения дизайна и с точки зрения оптимизации. Но за это время я переписал каждую часть проекта по меньше мере 5-6 раз с чистого листа. И я понятия не имею сколько ещё мне понадобится времени на его завершение. Хотя результаты меня всё же радуют и я вижу в проекте светлое будущее. Сейчас я поступил в ВУЗ второй раз, на сей раз это МГУ (факультет ВМК) и боюсь времени у меня на мой проект будет гораздо меньше.
Что Вы можете мне посоветовать с точки зрения организации своей работы, разработки проектов и пр.? Что я делаю не так? Или же это нормально?
  • Вопрос задан
  • 1150 просмотров
Решения вопроса 6
saboteur_kiev
@saboteur_kiev Куратор тега Веб-разработка
software engineer
У вас просто стоит цель сделать качественный и хороший код, а не сделать быстренько бизнес-проект и получить денег.
С точки зрения роста как специалиста - это хорошо. С точки зрения работника за деньги - перфекционизм нужен в меру. У кода всегда есть цена. У рефакторинга есть цена.

Все что в инете пишут про красивый код - это исключительно для того, чтобы его потом было проще переписывать и поддерживать. Потому что многие часто переписывают и правят.

С вами все так, просто приоритеты расставлены пока что таким образом, что вы переписываете.
Ответ написан
@nirvimel
8113161e0442443c97c663931c502d11.jpg
Ответ написан
Комментировать
bingo347
@bingo347
Crazy on performance...
Осилил многобукв ))
Это абсолютно нормально, особенно в проекте, где сроки не жмут, можно довести все до идеала
Учитывая, что проект учебный, это даже полезно, приучит Вас писать производительный и в то же время читабельный код.
А когда будете разрабатывать коммерческий проект, это само уйдет, так как у Вас просто не будет времени на переделки, начнет работать принцип "работает - не трогай"
Ответ написан
Комментировать
copist
@copist
Empower people to give
А я даже рад, что есть интересная задача и время на то, чтобы переписать фрагменты, которые не нравятся.

Вообще вопрос, как мне кажется, озвучивает проблему расстановки приоритетов либо, возможно, скрытую прокрастинацию.

С одной стороны, возможно автор всей душой хочет сделать код идеальным, что для учебного проекта просто замечательно. S.O.L.I.D., KISS, DRY, шаблоны, вёрстка, игровая логика, игровой баланс — много на чём можно зацепиться.

Второе предположение: автор зациклился на том, что ему больше всего интересно в процессе веб-разработки и тем самым изолировался от других аспектов. Если конечная цель - коммерческая, то могу предложить поискать союзников, знакомых с теми аспектами производства, которые автору не известны. Если цель - устроиться на работу, то можно уже остановить разработку и перейти к собеседованиям.

Не хотел загромождать тостер картинками, поэтому опубликовал полный вариант ответа у меня в блоге: copist.ru/blog/2016/08/19/mvp
Ответ написан
werty1001
@werty1001
undefined
Перфекционизм нужно в себе подавлять, потому что он в какой-то момент реально начинает мешать, пределу совершенства нет, так можно вечно рефлексировать, мол эта часть не достаточно идеально сделана, поэтому нужно переписать все заново. Лучше отправить в продакшн сырой продукт, чем вообще ничего - это главное. Сначала релиз, а затем уже рефакторинг. Может ваша идея никому не нужна, хоть не так обидно будет в итоге и время сэкономлено. Своего внутреннего перфекциониста нужно в этом убедить, например я использую довод, что даже всякие крутые пацаны из эпл иногда выпускают всякое гавно с багами и ничего живут пока.

По поводу организации разработки, нужно разделить все на мелкие задачи и для каждой выделить время и свой дедлайн.
Ответ написан
Комментировать
@Levhav
Возьмусь за разработку проектов любой сложности.
Вы только начали. Ваш уровень растёт и естественно то что было на пределе ваших возможностей через месяц или более кажется детской задачкой. И вы ведите после этого ещё 1000 способов улучшить ваш код. Это особенности професионального роста. Потом научитесь делать так чтоб не переписывать. Если конечно поставите перед собой цель выпустить продукт, а не написать идеальный код.

Код можно написать хорошо, но не идеально. Идеального кода почти не бывает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы