Каковы шаги в начале большого проекта, когда у меня есть большая идея? [закрыто]

49

Я студент компьютерных технологий. Я думал о том, как справиться с большим проектом. Каким должен быть мой первый шаг к достижению моей цели более эффективным и действенным способом?

Когда я придумываю проект, я не знаю, как мне начать над ним работать. Много раз я просто игнорировал это. Тем не менее, я не хочу больше игнорировать мои идеи проекта.

Теперь я прошу всех вас, кто-нибудь может поделиться своим опытом? Как мне начать проект, когда у меня есть идея?

user12654
источник
11
Ответ: Первый шаг, начните использовать контроль версий . Посмотрите, как они это делают в репозиториях с открытым исходным кодом, таких как github, bitbucket, codeplex, sourceforge и т. Д.
Spoike
Что означает «контроль версий»? Можете ли вы описать больше?
Смотрите мой ответ ниже.
Spoike
1
Я бы предложил перейти на [performance.se], но он, вероятно, будет закрыт как NARQ. Это действительно не имеет ничего общего с программированием или программистами, оно невероятно открытое и расплывчатое (что такое «большой» проект? «Более« эффективный / действенный, чем какой? »).
Ааронаут
6
Не совсем ответ на ваш вопрос, но: не бойтесь потерпеть неудачу. Не слушайте людей, которые говорят, что вы не можете. Знаменитые люди, о которых вы читаете, не известны, потому что они умны или талантливы. Они известны, потому что они были настойчивы. Умные и талантливые люди - это десятка. Настойчивые люди далеко и мало между.
Чарльз Ламберт

Ответы:

64

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

Что я рекомендую, так это открыть текстовый процессор и написать документ «цели проекта». Опишите суть идеи и общее назначение программного обеспечения, которое вы хотите написать. Затем перечислите функциональные цели проекта. Я не имею в виду спецификацию, а скорее описываю различные функциональные возможности, которые должен поддерживать готовый продукт. Итак, если вы писали программное обеспечение для управления школой, вы могли бы перечислить «управление учителями» как часть функциональности, а затем описать, что эта функциональность будет включать (отслеживать контактную информацию, расписание занятий и т. Д.).

Тогда самая трудная часть: это не то, что вам нужно делать прямо перед собой, а по ходу дела. Не менее важным, чем перечисление функций, которые вы хотите добавить, является обзор функций, которые вы описали в документе о целях, и обратите внимание на те функции, без которых вы можете обойтись в первой версии программы. Это ключ к управлению сферой.
Одна из главных причин, по которой люди терпят неудачу в крупных проектах, заключается в том, что они не знают, когда прекратить работу над ним. Они не чувствуют, что это «сделано», потому что идеи продолжают поступать, и это никогда не будет выпущено. В конце концов они теряют интерес, и у вас есть еще один наполовину законченный шедевр. Таким образом, вы хотите убедиться, что вы хорошо разбираетесь в функциональности, которая действительно важна для достижения основной части вашей цели. Это ваша первая цель.

Вот так я сейчас начинаю все нетривиальные проекты. Это помогает мне сосредоточиться и не дает возможности и цели «развиваться» во время разработки.

GrandmasterB
источник
+1 за все, что вы говорите. Также прочитайте эту книгу
древовидный кодировщик
+1 - мне не нужно ничего добавлять.
Temptar
Это отличный ответ. Кроме того, если у вас есть какой-либо тип программного обеспечения для управления проектами, начните с него рано. Конечно, есть и бесплатные с ограничениями. Я использовал CampFire ( campfirenow.com/signup , ищите «Мы также предлагаем бесплатный план: 4 чата с 10 МБ хранилища»).
m4tt1mus
1
Я бы скорее порекомендовал карты разума, чем текстовый процессор (не опытный + пустая страница = проект никогда не взлетит).
MaR
1
Текстовый редактор? Используйте ручку и бумагу. :)
11:00
41

Я думаю, что Линус выразился лучше

Никто не должен начинать предпринимать большие проекты. Вы начинаете с небольшого тривиального проекта, и вы никогда не должны ожидать, что он станет большим. Если вы это сделаете, вы просто перепроектируете и в целом будете думать, что это важнее, чем вероятно на данном этапе. Или, что еще хуже, вы можете быть напуганы огромным размером работы, которую вы себе представляете. Поэтому начните с малого и подумайте о деталях. Не думайте о какой-нибудь большой картине и необычном дизайне. Если это не решает какую-то довольно насущную потребность, это почти наверняка переоценено. И не ждите, что люди вскочат и помогут вам. Это не то, как эти вещи работают. Сначала нужно получить что-то полезное, а потом другие скажут: «Эй, это почти работает для меня», и они будут вовлечены в проект. - Линус Торвальдс

ладья
источник
12

Каким должен быть мой первый шаг к достижению моей цели более эффективным и действенным способом?

Я предполагаю, что вы уже работали над проектами и что вы в колледже / университете, который не преподает контроль версий / источников. Если вы хотите увидеть некоторые проекты, вы всегда можете пойти в репозитории с открытым исходным кодом, такие как Github (использует Git), Bitbucket (использует Mercurial), Google Code (использует Mercurial, Git и Subversion), CodePlex (Mercurial и Subversion / TFS), SourceForge (многие) и т. Д. И взгляните на их кодовую базу. Общим для них является то, что они используют программное обеспечение для контроля версий.

Существует много информации о том, как их использовать, поэтому я предлагаю вам узнать, как их использовать, потому что это стандартная отраслевая практика. Вот несколько наглядных пособий, которые помогут вам начать работу:

Знаете, когда мне в голову приходит один проект, я не знаю, что мне делать. Много раз я игнорирую это.

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

Spoike
источник
9
+1 для начала с малого, вот основной подход к крупным проектам: разбить его на более мелкие части и разбираться с ними по одному.
Джоэл С
5

Совершенно нормально быть пораженным синдромом «чистого листа».

У вас есть отличный проект, который выглядит фантастически, но когда вы садитесь за стол, пытаясь что-то сделать, вы внезапно блокируете и не можете ничего сделать. Затем вы открываете пасьянс и делаете новую запись.

Вам действительно нужно начать делать что-то, связанное с проектом, чтобы вы почувствовали, что он родился.

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

Вы можете попытаться определить функциональные возможности проекта, различные части, как эти части взаимодействуют между собой. Я чувствую себя комфортно с post-it, они забавные, и вы можете изменить их по мере продвижения. Пусть они следуют вашему разуму и идеям.

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

Через некоторое время вам будет над чем работать, и ваш проект будет не только у вас на уме. Вы на самом деле что-то сделали.

Когда вам удобно начать процесс разработки, настало время тщательного планирования, документирования, создания прототипов, сбора всех необходимых технологий и программного обеспечения и так далее.

Но не начинайте, пока не почувствуете, что сейчас самое время!

Хосе Фаэти
источник
4

Большие проекты формируются из множества небольших проектов или частей. У вас может быть одна большая идея или требование проекта - скажем, приложение, которое управляет контактами.

Сломай; спросите себя: «Какие мелкие кусочки мне нужны для этого?»

Как только вы определили свои меньшие части, повторите; Вы можете обнаружить, что некоторые детали нужно разбивать дальше. Идея состоит в том, что вы определяете наиболее управляемые цели для каждого из меньших кусков. Научитесь использовать дисциплинированные принципы проектирования и разработки (такие как Agile-TDD), и меньшие, более управляемые цели будут выполнены.

IAbstract
источник
3

Создать план

У вас есть большая идея, но вы не знаете, как вы собираетесь выполнить свою задачу. Создайте план того, что вы собираетесь делать. Запишите шаги, которые вы предпримете, что вам понадобится, какие языки вы будете использовать и т. Д. Убедитесь, что у вас все организовано, иначе проект будет полным крахом.

Запланируйте свои шаги

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

Найти инструменты для работы

Если вы собираетесь начать большой проект, вам понадобится помощь. Для организации кода и хорошей системы контроля версий Git отлично подходит, потому что он хранит весь ваш код в одном репозитории. Для получения дополнительной информации о Git, смотрите ссылку, которую я дал вам.

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

Получить помощь

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

Начать!

Не тяните время, ожидая, пока кто-то еще запустит ваш проект и скажет: «У меня была такая идея!». Это навсегда будет преследовать тебя ...

динамический
источник
1

Может быть, это полно клише, но ... Я отправлю.

Чтобы справиться с большим проектом, вам нужно в основном одно: опыт. Опыт дает вам все необходимое:

  • Знания: чем больше времени вы тратите на проекты, тем больше общих и конкретных знаний вы получаете
  • Уверенность: управление крупными проектами требует уверенности, уверенность проистекает из знаний и, как правило, из того, что каждая часть работы - это то, что вы делали раньше, или вы видели, как люди это делают
  • Профессиональная сеть: если проект действительно большой, вы должны понимать, что не можете выполнить его самостоятельно, поэтому будьте готовы знать, кого вы можете спросить или где вы можете найти ключевую информацию, которую вы ищете

Таким образом, вы можете сделать две вещи:

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

Надеюсь, это поможет.

Aston
источник
1

Мое определение «большой проект» - это «проект, в котором основной проблемой является координация участников и связь между ними» (средний проект - это когда управление так же сложно, как технические проблемы, маленький - когда технические проблемы важнее, чем управленческий; обратите внимание, что долгосрочный проект с одним человеком может быть большим проектом - координация и общение с вашим будущим «я» не сильно отличается от того, что вы делаете с кем-то еще)

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

Альтернативный подход - постепенно увеличивать размер проектов и учиться на собственном опыте ...

AProgrammer
источник
1

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

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

Бирн Риз
источник
1

Разделите большие вещи на более мелкие.

Вы не можете работать над «достижением мира во всем мире». Вместо этого вы работаете над запрещением оружия массового уничтожения, вы поощряете демократию, вы оказываете помощь в целях развития, вы поощряете культурный и научный обмен и так далее.

LennyProgrammers
источник
1

Я думаю, что то, к чему многие из этих ответов не касаются, - это сделать что-то осязаемое и заставить себя сделать это.

Иногда вы застреваете в «мыслящей стране», где вы чувствуете, что все, что осталось, - это утомительная распечатка вещей, но на самом деле вы начинаете с кусочка вашего проекта, и реализация становится одновременно увлекательной и сложной.

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

Мэтью Бланшар
источник
1

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

Как [X]
я хочу [Y],
чтобы [Z]

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

Behavior Driven Development использует этот подход, и на сайте по ссылке есть несколько примеров использования этого формата для выражения пользовательских историй.

Я думаю, что это будет самый быстрый и самый организованный способ перехода от идеи к коду.

Чарльз Ламберт
источник
1

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

Я просто начал бы записывать простые фразы, которые приходили на ум, такие как «Главное меню», «Отчеты», «База данных», «Аутентификация» и т. Д. Я прикреплял их к белой доске и просто смотрел и получал больше идей, например, как должно выглядеть главное меню. :

Открыть файл, Сохранить файл, Файл сохранить как, Распечатать и т. Д. И закрепить их на белой доске в главном меню.

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

Желтые стикеры хороши, их можно перемещать довольно быстро.

Когда вещи начинают сближаться, вы разделяете эти мысли на группы. Тогда вы можете провести мозговой штурм на уровне одной группы. Я бы фотографировал белую доску на разных этапах на случай, если вы захотите увидеть, как она выглядела двадцать минут назад, прежде чем все вокруг изменилось.

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

Майкл Райли - AKA Gunny
источник
0

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

Первое, что я делаю, это исследую существующие решения и библиотеки . Я не люблю изобретать велосипед, когда это возможно. Это исследование также является важным фактором при выборе языка для проекта. Некоторые языки имеют лучший существующий код для определенных задач.

Следующее, что я делаю, это создаю папку и помещаю ее под контроль исходного кода . Это так же просто, как в git init .наши дни.

Затем я получаю "привет мир" работает . Это позволяет мне знать, что моя среда разработки настроена правильно.

Далее я получаю «Привет мир» для работы сторонних библиотек . Это необходимый минимум, чтобы показать, что я правильно ссылаюсь на библиотеку и использую ее. Например, для библиотеки базы данных она подключается и выполняет простой запрос. Для инструментария GUI это отображение окна.

Затем я установил скрипты сборки и тестирование фреймворков . Это ant, make-файлы или что-то еще, и их гораздо проще настроить, когда ваш проект еще мал.

Далее я создаю структуры данных . Также называется «модельным» слоем. Это та часть, которая хранит все, что нужно запомнить вашей программе, чтобы выполнить свою работу. Я много работаю над дизайном на бумаге, потом просто добавляю заглушки. Эта часть дизайна обычно самая простая. Например, шахматной программе понадобятся объекты для хранения игровой сетки, игроков, фигур, последовательностей ходов и т. Д.

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

Карл Билефельдт
источник
0

Если все, что у вас есть, это «Большая идея», вам понадобится много вещей (которые очень хорошо описаны в других ответах), и особенно эти 2: время и мотивация .

Самая большая трудность, когда вы работаете в одиночку над личным проектом, заключается в том, что, как правило, у вас не так много времени, чтобы тратить на него каждую неделю, и поэтому вы не видите большого прогресса и быстро начинаете терять мотивацию.

Итак, как уже было сказано, делайте небольшие шаги , это ключ.

Но это еще не все, вы должны сделать небольшие и полезные шаги ! То есть шаги, которые принесут вам наибольшую ценность и продемонстрируют ключевые концепции вашей большой идеи.

Например, если вы работаете над новым программным обеспечением супер списка задач с отличным взаимодействием с пользователем . Не начинайте с хранения и баз данных, пока они вам действительно не понадобятся. Начните с инновационного пользовательского интерфейса: это весело и имеет ценность. Это заставит вас гордиться, сохранит мотивацию и позволит очень скоро проверить, действительно ли ваша идея хороша.

Дэвид
источник
0

Самое первое, что вам нужно сделать, это сесть и описать эту идею в письменном виде. Он не станет проектом до тех пор, и даже тогда у вас есть работа, чтобы превратить его из чего-то столь же эфемерного, как идея, в нечто столь же ощутимое, как проект.

После того, как вы продвинулись так далеко, вы можете начать смотреть на превращение его в проект, определить, как вы можете разбить его на отдельные шаги, которые могут быть реализованы логическим способом.

Затем наметьте график выполнения этих шагов. Пересматривайте прогресс через определенные промежутки времени, чтобы сохранить некоторый контроль над этим процессом - вместо того, чтобы иметь ползучие идеи, о которых вы никогда не думали, и добавлять их в смесь.

Определите начальную финишную черту и стремитесь к этому. Чем меньше вы придерживаетесь этого, тем больше вероятность того, что проект утонет под тяжестью дополнительных идей, и тем более обескураженным может оказаться его завершение, поскольку оно кажется вечным.

temptar
источник
0

Усилия кода обычно составляют около 20% (+ -10%) от бюджета проекта. Сосредоточение внимания на получении правильного кода бессмысленно, 80% усилий, которые вы не предприняли, таким образом, идеальное управление кодом по-прежнему оставляет вам только 20 выполненных работ.

Что если в вашем проекте нет пользователей? Что, если он идеален, но опубликован через неделю после подачи файла «Acme Patent Trolls» для получения патента на идею, и он станет следующим Facebook?

Посмотрите на следующие стандартные проблемы жизненного цикла проекта: требования, дизайн, код, тестирование, интеграция, развертывание, отслеживание и исправление дефектов, управление изменениями требований (запросы на улучшение). Планы релизов, распределение ресурсов (сколько часов в день вы планируете и будете ли вы на самом деле делать в проекте), Legal (Freedon для работы) и т. Д.

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

Я не игрок, делающий ставки, но я бы положил на это деньги, твой первый «большой» проект потерпит неудачу, во многих и разнообразных отношениях, которые ты не можешь себе представить. Не волнуйтесь, продолжайте и терпите неудачу, учитесь на этом и делайте следующее. Не начать было бы настоящим преступлением. Если вы добились успеха в первый раз, у вас есть солидная карьера в управлении бизнесом, а не в программировании.

Поэтому, чтобы ответить на ваш вопрос, уберите программные инструменты и вытащите ваши инструменты «бизнес-планирования». Выясните, ПОЧЕМУ вы это делаете, для КТО, ПОЧЕМУ и КОГДА они этого хотят. (Вы можете быть вашим собственным клиентом, но все равно выполняйте упражнение). Запишите это в «Бизнес-план» и постройте из них.

mattnz
источник
0
  1. как выглядит успех?
  2. Какие неизвестные в проекте?
  3. Каковы известные в проекте?
  4. что вы можете сделать, чтобы устранить / обнаружить неизвестных, превратить их в известных?
  5. Что вы можете сделать, чтобы собрать известных для достижения успеха?
  6. каков следующий конкретный шаг, который продвинет проект вперед?

повторяйте последний шаг до завершения проекта; принять, что это может занять годы , и продолжать двигаться вперед

Стивен А. Лоу
источник
0

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

Начните кодировать, закодируйте его до функциональной фазы, запустите некоторые тесты, отладьте, запустите и повторите ите с новыми функциями и возможностями (если вы считаете это необходимым), в значительной степени на пути бережливого запуска - что является гибким методом управления и развитие, чтобы создать меньше отходов (или, как кто-то определил: половина готовых шедевров).

Итай Саги
источник
-1

Список вещей, которые нужно сделать при запуске нового проекта:

  1. создать новый каталог
  2. создать make-файл, скопировав существующий шаблон make-файла
  3. создайте некоторые заголовки и файлы реализации
  4. убедитесь, что он компилируется
  5. начать использовать контроль версий
  6. решить соглашение об именах для классов, функций, членов данных, переменных
  7. напиши свой первый класс
  8. убедитесь, что ваш класс независим и каждая функция-член независима от других функций-членов
  9. создать несколько объектов, создав функции, такие как main ()
  10. повторите шаги 7-10, пока ваша программа не будет готова
  11. скомпилируйте это
  12. отправить его конечным пользователям
оборота тп1
источник
Это касается кодирования, но оно не инженерное и не работает за пределами определенного масштаба. Вместо этого вам нужно что-то делать, начиная с пользовательских историй или требований или каких-то спецификаций; это поможет вам выбрать технологию внедрения для начала. «написать несколько историй», «заказать свои истории» - это первые два шага, контроль версий предшествует любому коду, а первая история - это всегда «технологии реализации исследований» (что гораздо больше, чем «выбрать язык»).
Эндрю МакГрегор