Написание программного обеспечения с нуля в бизнесе

Я программист с десятилетним опытом. За эти десять лет я работал
программистом в 2 раза в качестве разработчика программного
обеспечения.

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

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

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

Какую ценность вы хотите вывести на рынок? Что вы можете сделать
лучше, чем ваши конкуренты?

* Если он пишет программные среды, то не скрывайте их в одном
конечном продукте на одном рынке, но заставляйте ваш бизнес
предлагать эту инфраструктуру на рынок.
* Если он понимает клиента и быстро предоставляет решения для
своих нужд, используйте все, что вам подходит. Не тратьте время на
создание фреймворков.
* Если у вас есть клиент, в котором готовые решения не подходят, а
все остальные конкуренты «box-combiner» потерпели неудачу, тогда
сделайте и то, и другое, -user. Клиент будет терпелив, если вы
сможете его убедить.
* Если все, что вы хотите сделать, состоит в том, чтобы объединить
доступные фреймворки, созданные другими группами, тогда вам
придется столкнуться с трудностями в отношении кругов конкурентов,
которые делают то же самое, но имеют больше возможностей для
пользователя. </р>

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

* Сколько дней мне придется потратить на реализацию той части,
которая мне нужна, с нуля? Если это всего-на пару дней, пойдите для
своей собственной реализации.
* Рамки всегда влияют на код, который их использует. Является ли
использование структуры улучшением качества (удобочитаемость,
надежность, производительность, переносимость, тестируемость,
легкость отладки и т. Д.) Вашего прикладного программного
обеспечения?
* Сколько дней мне придется потратить, чтобы понять структуру,
прежде чем я начну ее использовать?
* Сколько дней потребуется, чтобы интегрировать структуру в мой
проект?
* Какая ошибка является основой?
* Насколько хороша поддержка и документация?
* Будет ли рамка все еще существовать в следующем году?
* Поддерживают ли новые версии фреймворка совместимость или
делают разработчики часто нарушающими изменения?

Да, использование существующих фреймворков может вам очень
помочь, и игнорировать их, безусловно, неправильно, но не думайте
«использовать framework = выгоду».



> 
> нормально ли начинать бизнес-проект с нуля и писать каждый кусок
> кода с нуля?
> 
> 
> 

Это, если это добавляет ценность для клиента. Проблема в том,
что это часто делается только потому, что разработчикам требуется
чувство контроля. Им не нравится, когда их подталкивает
существующий код. Они не знают, как использовать существующий код
без его захвата.

Существует увлекательный [разговор TED о создании тостера с
нуля](https://www.ted.com/talks/thomas_thwaites_how_i_built_a_toaster_from_scratch?language=en) . Это чудесно иллюстрирует, что делать все самим - это
большая работа, чтобы сделать даже крошечные вещи.

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

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

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

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



> 
> нормально ли начинать бизнес-проект с нуля и писать каждый
>   кусок кода от нуля?
> 
> 
> 

Да, если это то, что вы хотите сделать.

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



> 
> Хорошо ли для бизнес-проекта запустить его с нуля и написать
> каждый фрагмент кода с нуля?
> 
> 
> 

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

Принимая это в крайности, вы собираетесь написать свою
собственную операционную систему, свои собственные драйверы
оборудования, свои собственные компиляторы и т. Д.? Нет, потому что
это было бы глупо. Поэтому, учитывая, что вы *not*
собираетесь писать все с нуля, не беспокойтесь о повторном
использовании кода уровня приложения от других людей.



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

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

The recently [purchased](https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/) by Microsoft [github.com](https://github.com/) &
the [BitBucket](https://bitbucket.org/) offering by [Atlassian](https://www.atlassian.com/) come to mind as examples of
this approach.