Сакральный выбор технологий
«На чем писать новый проект» или «помогите с выбором».
Те из вас кто давно пишет софт сталкивался с этими вопросами неоднократно. Ниже мой вариант ответа.
Что за проект вам нужно сделать?
Бортовая система авианосца? Или автоматизация Лондонской биржи? Возможно вам надо сделать электронную систему учета налогов для Сингапура? Или большой и супернагруженный вебсайт?
Тогда ваш выбор (не поверите): .NET и C#.
Как насчет ПО для марсхода? Или практически любого софта для страховой или банка? Да это все про джаву.
Еще есть один навороченный мессенджер, который станет фактически стандартом корпоративного общения на годы и написан при этом на Javascript.
Разницы нет
Уже давно нет какой-то принципиальной разницы между языками разработки общего назначения.
Поэтому можете спокойно разбить лицо очередному задроту компьютерному эксперту че-то там блеящему про производительность, совместимость или тем более нинужность.
Мощность компьютеров выросла настолько что даже бесконечный цикл не даст 100% загрузку процессора:
while(true) {}
Так что быдлокодьте себе на здоровье — ваш телефон в тысячу раз мощнее компа на котором я учился разработке. Он выдержит.
Вы можете создать сайт на чистом Си, можете написать драйвер для Linux на Петоне.
А разработка мобильных приложений на Javascript, которые запускаются во встроенном (в приложение) браузере — вообще давно стала мейнстримом.
Теперь представим что вам как и всем нормальным заказчикам нужно создать очередной софт считающий ваши деньги, клиентов или товары на складе.
каждый фреймворк, язык разработки и каждая технология в ИТ, в первую очередь ориентируется на таких как вы, на такие проекты и такие задачи.
Все примеры, демки и showcase будут в первую очередь про продажи, товары и подсчет прибыли.
ИТ начиналась как прикладная отрасль для обслуживания бизнеса и остается таковой до сих пор в наибольшей степени.
А все ваши стартапы и нейростети — где-то с боку, торчат ушами.
Вообщем дорогие банкиры, магнаты и бизнесмены — мы вас любим и ждем)
Так как выбрать
Есть один важный фактор, называется уровень владения:
10 лет активной разработки на любом языке будут сильно отличаться по результату от 2-3х лет.
Вообщем ищите экспертов и дайте им работать на том языке и технологиях, которыми они владеют лучше всего.
Есть под рукой эксперт по PHP — пишите вашу CRM/ERP на PHP, не лезьте в джаву.
Тоже самое с шарпом, го и всеми остальными языками и технологиями.
Эксперт в PHP создаст куда более качественную систему чем любитель на Golang или типичный аутсорсер из Индии на .NET/C# .
Проектирование
Существует глобальное непонимание при разработке ПО, что якобы систему достаточно написать — вбить код, собрать и запустить.
Вне зависимости от масштаба и выбора технологии, до начала разработки нужно потратить время на проектирование.
- Аудитория, для кого создается система: B2B, B2C, multitenancy - вот это все;
- Набор сущностей и их взаимодействие: есть заказ, пользователь и курьер, пользователь может создавать заказы, назначать на курьеров, курьер может выставлять статус выполнения и так далее;
- Набор основных экранов и переходов между ними: авторизация, дашборд, master-detail по сущностям, справочники.
Даже showcase и demo проекты проектируют до разработки, представьте себе.
Последнее слово
Есть еще один совет, который я бы хотел дать всем потенциальным собственникам заказного ПО:
не пытайтесь вести разработку на экзотических языках и технологиях.
Если только вы сами не являетесь экспертом в ИТ с большим опытом.
Ваш выбор должен быть ограничен первыми 10 пунктами из примерно такого списка. Списки популярности языков обновляются каждый год, поэтому просто регулярно проверяйте в поисковиках.
Такой совет обусловлен огромным количеством проблем, которые могут вылезти при разработке на языке или технологии еще не прошедшей достаточную обкатку на большом количестве пользователей.
И вылезать они могут в самых неожиданных местах.
С точки зрения бизнеса, решение таких проблем это отвлечение ресурсов — времени и денег, часто больших.
Поэтому оставьте пожалуйста Haskell и Scala экспертам и пишите вашу CRM на обычной джаве.