Это происходит только со мной или это знакомо вам тоже?
Это так: вы должны что-то создать; модуль, функция, целое приложение ... что угодно. Это что-то интересное, что вы никогда не делали раньше, это сложно.
Итак, вы начинаете думать, как вы собираетесь это сделать. Вы рисуете несколько набросков. Вы пишете несколько прототипов, чтобы проверить свои идеи. Вы соединяете разные части, чтобы получить полное представление.
В итоге вы получаете дизайн, который вам нравится, что-то простое, понятное всем, легко обслуживаемое ... вы называете это. Вы покрыли каждую базу, вы думали обо всем. Вы знаете, что у вас будет этот класс, этот файл и схема базы данных. Настройте это здесь, приспособьте эту другую вещь там и т. Д.
Но теперь, после того, как все решено, вы должны сесть и фактически написать код для него. И это больше не вызов ... Побывал там, сделал это! Написание кода сейчас - это просто «формальность», и это выглядит как повторение того, что вы только что закончили.
На моей предыдущей работе мне иногда это удавалось, потому что кто-то другой делал кодирование в соответствии с моими спецификациями, но на моем новом концерте я отвечал за весь процесс, поэтому я должен сделать это тоже (потому что мне платят за выполнение Это).
Но у меня есть любимый проект, над которым я работаю дома, после работы, и есть только я, и никто не платит мне за это. Я занимаюсь творчеством, а потом, когда приходит время, чтобы записать это, мне просто не хочется (давайте немного поищем в Интернете, посмотрим, что нового в P.SE , SO и т. Д.).
Я просто хочу перейти к следующей сложной вещи, а затем к следующей, и следующей ...
С тобой это тоже случается? Как вы справляетесь с этим?
Как вы убеждаете себя пойти и написать чертов код?
Я возьму любой ответ.
источник
Ответы:
Если ваша задача заключается в разработке, а не в реализации, возможно, вам нужен другой мотивирующий фактор:
Если это любимый проект (не для работы), я на самом деле с нетерпением жду его оживления, поэтому его разработка мне не подходит. Когда вы придумываете свои собственные любимые проекты, какова цель? Это то, что вам нужно использовать? Если это так, вы можете использовать это в качестве мотивации для его реализации. Чтобы увидеть это работает. Чтобы обеспечить функциональность, которую вы хотели получить от него.
Планируете ли вы сделать его доступным для других? Мотивирующим фактором может быть то, что они получают выгоду от конечного продукта. Они не собираются извлекать из него утилиту, если она только в режиме разработки. И если вы планируете продвигать его, используйте тот факт, что никто не собирается платить за ваш любимый проект, пока он застрял в режиме дизайна, как мотивирующий фактор.
Когда я работаю над своим собственным делом, я использую более итеративный подход, чем я мог бы на работе - я не беспокоюсь обо всех деталях, прежде чем что-то генерировать. Это может занять больше времени, но 1), поскольку это только для меня (или для того, кто еще даже не знает, что оно существует в какой-либо форме), тогда у меня есть возможность экспериментировать и не торопиться. 2) Я провожу кучу циклов рефакторинга и изучаю лучшие способы ведения дел. Само по себе, в переносном смысле.
В конечном счете, разве не истинное удовлетворение от того, что что-то оживает из воздуха? Вот что это делает для меня. Если это вам не подходит, если ваша мотивация не является конечным продуктом, тогда я не уверен, что понимаю, почему вы вообще хотите работать над проектом для домашних животных. Если дизайн - это то, что вас раздражает, и вы делаете это на работе, вы, кажется, уже получаете удовлетворение, которое ищете.
источник
Вам нужно быстрое прототипирование дома.
Когда вы применяете тот же уровень профессиональной строгости в частном личном проекте, это легко приводит к чрезмерному проектированию.
Вполне приемлемо установить высокий стандарт для личного проекта, но вы должны понимать, что у вас может не хватить ресурсов (часов кодирования, в дополнение к вашим 8 часам ежедневной работы), чтобы добиться прогресса в проекте.
Какова самая важная цель в вашем любимом проекте? Чтобы доказать полезность одной из ваших идей? Если это так, то урезайте проект до тех пор, пока он не станет проектом для проверки концепции . Затем используйте быстрое создание прототипов, чтобы добиться большего с меньшими затратами времени.
источник
Я думаю, это только я, но у меня есть противоположная проблема. У меня обычно возникают проблемы со всеми деталями, прежде чем я начинаю писать код и сталкиваюсь с соответствующими проблемами. Реально, когда я начинаю что-то кодировать, у меня в голове обычно только смутный дизайн. Моя большая задача состоит в том, чтобы заставить себя подумать обо всех деталях и сделать дизайн заранее.
источник
Я могу определенно относиться к этому. Мне нравится принимать вызов вещей, с которыми я не сталкивался, но мне трудно начинать работать над тем, что я уже решил. Самое большое, что я делаю, это просто заставляю себя сесть с целью сделать Х и сделать его. Обычно, как только я начинаю, я получаю удовольствие и получаю больше, чем готово, чем я задумал, но если я не навязываю цель, я просто болтаю часами.
Я также с тобой в том, что это происходит больше дома на подработках, чем в офисе. Я не знаю, больше ли это отвлекает, сжигают с работы или что ...
источник
Я, конечно, понимаю ваше разочарование, поскольку я сам прошел через это раньше.
Несмотря на то, что я опасаюсь некоторого пламени со стороны сообщества, так как знаю, что это не очень хороший подход, я поделюсь своим подходом к сторонним проектам с вами. Обратите внимание, что этот метод работает для меня, и я использую его в средне / долгосрочных проектах, я бы не стал делать это для чего-то небольшого (поскольку у меня обычно есть мотивация, чтобы закончить его за один раз).
Соберите весь проект и разбейте его на «пакеты», каждая из которых состоит из частей, которые будут часто взаимодействовать друг с другом. Затем разделите каждый пакет на маленькие части (максимум несколько часов), которые вы можете создать и написать.
В идеале вы могли бы завершить каждую часть в любое время, которое вы отводите для своего побочного проекта на день, но это не обязательно (зависит от человека).
Лично я не устанавливаю себе примерный срок для каждой части, потому что я просто разочарован и демотивирован, как только я проваливаю эту оценку, следовательно, я не рекомендую это. Не торопитесь, но не слишком долго.
Теперь каждый маленький кусочек проходит все этапы вашего обычного процесса разработки, проектирования, тестирования, внедрения и всего, что вам нужно сделать. Идея состоит в том, чтобы дать каждому куску хороший старт, но еще не завершенный штрих.
Это поддерживает мою мотивацию, потому что я знаю, что после пары часов реального скучного кодирования у меня будет больше возможностей для разработки (вкусно). Не позволяйте себе отклоняться от своих целей, просто продолжайте выполнять это ужасное задание, и оно скоро закончится и закончится.
После того, как вы прошли через все части, посмотрите на пакет. Посмотрите, как это работает, что это делает, пересмотрите весь пакет снова. Я уверен, что будут изменения и настройки, сделайте это сейчас. Запомните наиболее важную информацию, так как она понадобится вам при работе над всеми остальными пакетами. Делайте заметки тоже, они очень помогают.
Просмотрите каждый пакет и продолжайте вспоминать все остальные, что вы делали раньше, как новый код, который вы пишете, будет взаимодействовать с тем, что вы написали неделю назад? Не бойтесь искать то, что вы уже написали и, возможно, забыли.
Наконец, когда у вас все заканчивается, я обычно отпускаю его на несколько дней, отдыхаю и сосредотачиваюсь на чем-то другом.
Обычно мне не терпится вернуться и начать переплетать пакеты и провести несколько игривых тестов, кода не так много, чтобы написать, и цель близка, для меня достаточно мотивации.
Надеюсь, это поможет вам в ваших начинаниях.
источник
Я всегда обнаруживал, что первоначальные предположения не полностью соответствовали требованиям, и более или менее первоначальный дизайн должен был быть изменен на основе опыта, накопленного во время фактической реализации.
Если вы считаете, что ваш проект абсолютно непогрешим и совершенен после рисования некоторых блоков, но перед тем, как на самом деле его опробовать, я бы посчитал вас идеальным кандидатом на реализацию некоторых проектов.
Доставка это особенность. Если вы не пройдете всю дистанцию, вы просто архитектор.
источник
Я думаю, что проблема в неверной цели. Похоже, что вы поставили перед собой цель «дизайн системы». И тогда вы делаете это хорошо, и цель достигнута. Таким образом, одно предложение состоит в том, чтобы поставить другую цель «внедрить систему», но тогда это больше связано с мотивацией и тем, как вы это делаете.
Есть еще один способ, который сработал для меня: поставить первоначальную цель как «доставить систему конкретным пользователям» вместо «проектировать систему» или «создать систему». Таким образом, вы не будете удовлетворены, пока пользователи не получат что-то ценное. И вы делаете это хорошо с самого начала (включая тестирование и другие современные модные вещи).
источник
Помимо того, что это действительно вопрос мотивации, я думаю, что часть решения можно найти в сочетании процесса проектирования и кодирования. Вот как я это делаю в основном. По сути, все сводится к тому, чтобы реализовать основы вашего дизайна, когда вы об этом думаете, а затем перейти к следующему шагу.
Например: если я спроектировал свои базовые классы, я записал их и провел несколько тестов. Затем я разработал базовую базу данных, настроил ее и протестировал. Далее у меня есть методы и функции, которые мне нужны для того, чтобы получить все данные из базы данных, и я продолжаю. Тестирование проводится легче, так как у меня уже есть базовые занятия. И когда я наконец-то пришел к разработке пользовательского интерфейса, у меня уже есть целый набор кода, с которым можно поиграть.
Теперь это предполагает, что вы также проектируете блоки, связанные через интерфейсы. Я не знаю дорогое слово, потому что я не программист по образованию, но вы знаете, что я имею в виду.
Надеюсь это поможет.
источник
Затем просто запишите свои идеи дизайна, опубликуйте их (в блоге), постарайтесь объяснить проблему и решение, которое вы придумали другим.
Уловка: напишите свое объяснение дизайна как грамотной программы! :) Затем вы занимаетесь интересной частью (ваши идеи дизайна), но на самом деле оправдываете их реальным кодом, который вы предоставляете вместе.
И опубликуйте грамотную программу как презентацию ваших новых идей другим!
источник
Это будет звучать банально, но только начать. Возможно, вам понадобится открыть свою среду разработки, так что сделайте это. Возможно, вам понадобится определить каждый из классов в вашем проекте и выписать сигнатуры их методов, так что сделайте это. Вам нужно будет начать реализацию наиболее важных методов, так что сделайте это.
Обычно примерно в это время я забывал, что у меня были проблемы с запуском, и я в зоне.
Работает около 80% времени. Для остальных есть тетрис.
источник
Это определенно не только ты! Я на самом деле откладываю проект прямо сейчас.
Никто не может мотивировать вас, кроме вас самих.
Создайте реалистичные временные рамки и поставьте перед собой задачу выполнить каждый раздел вовремя. Вам нечего показать проектам, если они никогда не пройдут этап проектирования.
источник
Судя по вашему вопросу, ваша проблема в том, что вы, кажется, изобретаете велосипед. Если вы уже сделали все это, зачем вам делать это снова? Разве нет основы, чтобы сделать это для вас? Если нет (хотя это довольно невероятно), почему бы не написать один?
Ключевая задача в программировании - не делать скучные вещи снова , а делать это один раз, делать это правильно, а затем повторно использовать. Или даже лучше: найти кого-то, кто уже сделал это один раз и правильно.
источник
Я полностью понимаю, откуда ты. Это проблема, которая вас интересует, и как только вы поймете это, реализация просто сработает.
Почему бы вам просто не спроектировать решение, а другие реализовать?
источник
Вещи, которые я делаю:
Не всегда работает, хотя
PS. Я работаю из дома
источник