- PVSM.RU - https://www.pvsm.ru -
Приветствую, коллега!
Примерно за год до момента написания этой статьи мне начало казаться, что я начал выгорать. Работа, уже давно превратившаяся в ремесло, перестала приносить то студенческое чувство первооткрытия, знакомое каждому программисту, приносящее эйфорию. Ради этого чувства, ради новых знаний я когда-то просиживал за монитором по 18 часов в сутки. Это давно прошло… но недавно я испытал это чувство снова! Сначала оно было тихим, непривычным из-за длительного перерыва, но со временем оно разгорелось и заполыхало!
Если вы такой же, как и я, программист со стажем около от 12 лет, возрастом в районе 30 лет, задержавшийся в своем родном стойле стеке (особенно если это C# .Net MVC), то приглашаю под кат. Тем, кто моложе — думаю тоже будет полезно, чтобы заранее быть готовыми.
Предыстория начинается с того, что я давно занимаюсь разработкой на стеке C# .Net (ASP, MVC, windows services). Мне кажется, что меня можно назвать кем-то вроде full-stack разработчиком: базы данных, backend, frontend и даже олимпиадное программирование — всё это я через себя пропустил. Не скажу, что я профессионал, но удивить меня чем-то сложно, если речь идет о .Net. Нет, я не ходил на конференции .next и подобные, но я учился с их несколькими старожилами в университете, знаком с некоторыми из них лично, а число запущенных мною в ПЭ проектов среднего масштаба перевалило за 30.
Как было указано до ката, мне показалось, что я выгораю. Когда нам принесли новый проект для реализации (не слишком большой — это важно!), уже на первом совещании я знал, что и как именно мы будем делать — скукота.
Вы себя ещё не узнали? Если вы моложе, обязательно продолжайте читать, у вас всё впереди. Если вы ушли дальше меня, продолжайте читать, а в комментариях расскажите о своем опыте.
Итак, впереди у меня маячило примерно пол года неинтересной работы. Но мы сдали проект на несколько месяцев раньше, узнали кучу крутейших вещей, прокачались в смежных областях и получили массу удовольствия! Не буду долго тянуть… новый проект был сделан на полностью новом стеке: Node.js + React.
Коллеги, предвидя шапкозакидательство, сразу должен оговориться, что решение о смене стека пришло не спонтанно. Несколько месяцев я вынашивал мысль о том, что .Net MVC — не самый лучший выбор, если речь идет о небольших проектах. Подыскивал альтернативы, смотрел по сторонам. О связке Node.js и React я считал, что это инструменты, более заточенные под server-side и client-side, чем C#, но уже первый опыт превзошел все мои ожидания.
Во-первых, считаю нужным уточнить некоторые детали и условия, при которых можно считать ключевую мысль статьи — замена стека .Net MVC и Node.JS+React — верной. Я не склонен скатываться в крайности и утверждать, что во всех случаях такое мероприятие будет полезным, поэтому вот краткий перечень исходных ограничений:
Такое ограничение возникло из-за предположения, что при участии в проекте большой команды от 5 человек, речь идет уже о серьезных корпоративных приложениях, которые тяжело будет реализовывать без преимуществ .Net (причем не только ASP.NET, но и Core). Про сами преимущества и недостатки поговорим ниже.
Использовать JavaScript (или даже TypeScript, вас это не спасет), язык с динамической типизацией без многопоточности и без Linq, для реализации вычислений или более-менее сложной бизнес-логики, просто нельзя — язык просто для этого не предназначен. Чего не скажешь про C#. Важно учитывать специфику инструмента, чтобы не забивать гвозди микроскопом.
Унификация поможет снизить порог входа, бюджеты и сроки. Но у палки всегда есть два конца и необдуманный шаг со стороны «эффективных менеджеров» без реальной необходимости может привести к потерям.
Принимая во внимание перечисленные ограничения, предлагаю следующий чек-лист, пройдясь по которому вы сможете оценить применимость к вашей экосистеме проектов.
Требует ли ваш бюджет низкого порога входа специалистов и невысокой стоимости содержания?
Если у вас небольшая компания или команда программистов, то сложность инструментов разработки отнимает драгоценные ресурсы. Стек Node.js+React обладает рядом неоспоримых преимуществ по сравнению с .Net MVC или Core:
Горят ли ваши сроки для запуска MVP или PoC?
С точки зрения скорости реализации MVP или PoC стек Node.js+React, несомненно, в более выигрышном положении по сравнению со стеком .Net. Принимая во внимание предыдущий пункт о стоимости разработки и содержания, для задачи запуска MVP появляется синергия: быстро, дешево, эффективно. Кроме того, стабильность работы Node.js находится на высоком уровне и не вызывает нареканий.
Будет ли вам достаточно функциональности «легких» IDE?
Для Node.js в связке с React отлично подходят «легковесные» IDE. Например, VS Code — не требует больших мощностей при разработке, кроссплатформенный редактор, распространяется бесплатно, его функциональности вполне хватает, чтобы комфортно разрабатывать как backend, так и frontend.
Для проектов на C# можно использовать Visual Studio Community — тоже условно-бесплатную IDE, но она уже потребует ресурсов, будет не такой шустрой и не кроссплатформенной.
Вы сможете обеспечить качественную разработку и поддержку своего проекта, учитывая отсутствие типизации?
Отсутствие типизации в языке — это палка о двух концах. С одной стороны, такой подход позволяет кратно увеличить скорость разработки, уменьшив объем кода. С другой стороны, кратно увеличивается объем тестирования. Кроме того, некоторые ошибки могут проявиться только во время эксплуатации, успешно преодолев все тесты. Крупные проекты делать без типизации становится затруднительно.
Вы готовы отказаться от полноценной многопоточности из коробки? В вашем проекте отсутствуют сложные вычисления или бизнес-логика?
Как известно, в Node.js реализовано однопоточная событийно-ориентированная модель. Это отлично подходит для большого количества запросов, но совершенно не годится для распараллеливания вычислений или реализации сложной бизнес-логики. Таким образом, при выборе стека для backend'а на Node.js, надо отдавать себе отчет о нюансах его работы.
Вам требуется кроссплатформенность из коробки?
Да, под .Net существует .Net Core, который претендует на кроссплатформенность. Но это все-таки не .Net MVC. Если у вас собран большой объем готовых компонентов под .Net MVC, то переход на .Net Core не будет легким. Используя Node.js можно об этом не беспокоиться и использовать свои наработки под любую платформу, в зависимости от требований заказчика.
Богатый мир модулей Node.js позволит вам эффективно и с минимальными затратами реализовать практически любую прикладную задачу от авторизаций в корпоративных системах и rest-api до чат-ботов мессенджеров.
Развертывание приложений Node.js в системах под управлением любой ОС — одно удовольствие и пару команд. А потребность в серверных мощностях могут быть снижены на порядок по сравнению с .Net, и вы можете спокойно выбирать «оплата за ресурсы» в нашем конфигураторе [1] выделенного сервера.
А у вас были попытки смены стека?
Автор: oldadmin
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/355733
Ссылки в тексте:
[1] конфигураторе: https://ruvds.com/ru-rub
[2] Источник: https://habr.com/ru/post/514194/?utm_source=habrahabr&utm_medium=rss&utm_campaign=514194
Нажмите здесь для печати.