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

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

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

С вами все так, просто приоритеты расставлены пока что таким образом, что вы переписываете.
Ответ написан
bingo347
@bingo347
Бородатый программер
Осилил многобукв ))
Это абсолютно нормально, особенно в проекте, где сроки не жмут, можно довести все до идеала
Учитывая, что проект учебный, это даже полезно, приучит Вас писать производительный и в то же время читабельный код.
А когда будете разрабатывать коммерческий проект, это само уйдет, так как у Вас просто не будет времени на переделки, начнет работать принцип "работает - не трогай"
Ответ написан
copist
@copist
Мидл, хочешь стать синьором? http://copi.st/ExhE
А я даже рад, что есть интересная задача и время на то, чтобы переписать фрагменты, которые не нравятся.

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы