Сколько может сделать один программист сам? [закрыто]

13

С программными продуктами, требующими разработки целыми командами людей, сколько может достичь один программист самостоятельно? Другими словами, может ли один человек написать Photoshop, MS Word и т. Д.? И если бы они не могли, была бы веб-разработка областью, где один программист мог бы многое сделать?

fender1901
источник
2
Я не уверен, что здесь спрашивают. Если у вас есть mojo для разработки программного обеспечения, вы, безусловно, можете выполнить его самостоятельно - в Интернете или нет. Это может занять некоторое время, в конце концов, MZ не разработал Facebook за один день.
CoolBeans
Взгляните на blitwise.com для работы одного разработчика.
Майкл К
Производительность кодера варьируется очень широко. Некоторые кодировщики кодируют в 10 раз быстрее, чем другие ...
Дени де Бернарди
2
Если бы это было одно здание разработчика, фотошоп и мс слово, они были бы примерно 1/100 размера. Я не считаю это плохой вещью.
Джеффо
1
По-разному. :-)
Ричард

Ответы:

14

Начните с малого

Linux в настоящее время намного больше, чем ее первые итерации, но важно то, что в ней появилось достаточно вещей, чтобы набрать обороты.

Только если оно того стоит

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

Хорошо начать, но не всегда устойчиво

Если ваше программное обеспечение достаточно хорошее, вы можете серьезно отнестись к нему. Взять, к примеру, Маркуса "Notch" Перссона, создателя Minecraft. IIRC он начал игру один, и когда игра набрала обороты, он начал искать сотрудников и даже основал компанию.

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

Миф

Ознакомьтесь с Мифом о программисте Genius , выступлением Бена Коллинза-Суссмана и Брайана Фитцпатрика на Google I / O 2009. Там вы должны получить все ложные ожидания. Главное, что я хочу здесь подчеркнуть, - это то, что иногда один разработчик получает кредит за все это, в то время как позади было больше людей.

Это определенно возможно

Другой пример, кроме Линуса Торвальдса, это Джон Кармак. Он портировал Wolfenstein всего за четыре дня, когда EA оценивала полную команду на два месяца.

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

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

dukeofgaming
источник
7
+1 ИМО, у Линуса нет дерьма на Кармаке. Его вещи легенда.
Стивен Эверс
1
чей это легенда? Линус или Джон. не получил свой сленг там
Chani
1
@RYUZAKI: Я думаю, что комментарий @ SnOrfus - это целый вопрос для английского стека обмена.
Спойк
1
@RYUZAKI - У Джона есть легенда, в комментарии SnOrfus.
ocodo
1
Получил ли Кармак 2-месячный полный командный оклад за 4 дня работы или просто похлопывание по спине?
Дрю
5

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

Плюсы:

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

Минусы:

  • нет команды, чтобы сражаться, поэтому иногда вы принимаете плохие решения, когда никто не говорит вам
  • в нем легко заблудиться, больше не видя общей картины. И никто не может тебе помочь. (кроме SO / SA и лайков:])
  • тратить много времени на поддержку клиентов, которые вы бы предпочли потратить на программирование
Стейн
источник
3

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

Владимир Палант
источник
1

Это зависит от программного обеспечения, которое он / она пытается разработать, нехватки времени и навыков. Если он разрабатывает простое приложение MIS, вполне возможно, что он сможет сделать это за короткое время. Попытка разработать программное обеспечение, такое сложное, как Photoshop, MS Word, Blender, Flash и т. Д., Возможна, но занимает много времени и имеет самые основные функции, а функции просты.

Том
источник
1

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

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

Весь этот проект был одним из главных испытаний. Каждый день после школы я работала над проектом, а также по выходным. Это так же массивно, как MS Word, Photoshop и т. Д.? Нет. Проект все еще большой и постоянно развивается, и можно многого достичь.


источник
Понимаете, это то, что мне было интересно ... это может занять больше времени, но, поскольку вы будете знать, что делает весь код, возможно, будет легче отлаживать. И большой опыт обучения.
fender1901
@ fender1901 Хорошо программирование всегда должно быть опытом обучения, а день, когда вы его знаете, или вам нужно найти более сложную задачу.
1

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

1) Не изобретайте велосипед . Используйте существующие библиотеки / фреймворки, а не делайте все с нуля. Одно предостережение: убедитесь, что вы обращаете внимание на лицензии, поскольку они применяются к вашему желаемому дистрибутиву / выпуску / любой модели. Некоторые лицензии с авторским левом требуют, чтобы вы открыли исходный код вашей «производной работы». Некоторые лицензии разрешают некоммерческое использование. Следите за библиотеками / фреймворками, которые вы используете, чтобы вы могли обеспечить соответствующую атрибуцию на экране / области "Кредиты" / что угодно

2) Работать итеративно . Это связано с тем, что Dukeofgaming сказал «Начни с малого» . У вас гораздо больше шансов придерживаться проекта, если вы видите результаты. Пока вы не увидите, что что-то работает, любое развитие, которое вы делаете, эквивалентно рисованию в темноте.

3) Не бойтесь просить обратной связи / помощи на раннем этапе . Скорее всего, ты не во всем хорош. Если вы хорошо разбираетесь в мелочах кодирования на низком уровне, вы, вероятно, отстой в пользовательском интерфейсе. Обратное также применимо. Никогда не больно получать советы от тех, кто лучше вас в определенной области. Многие люди избегают этого, потому что они беспокоятся о том, чтобы кто-то украл их идею. Не беспокойтесь об этом - если кто-то пытается скопировать вас, это означает, что вы на что-то стоящее. Идеи дешевы, реализация является ключевой. Apple не изобрела MP3-плеер, Microsoft не изобрела операционную систему, Facebook не изобрел социальную сеть, а Google не изобрел поисковую систему. Что они сделали, так это сделали его привлекательным для пользователей (а не отстой).

Дэниел Китченер
источник