Разработчики .NET имеют в своем распоряжении несколько инструментов: несколько языков, огромную инфраструктуру, стеки для множества различных типов приложений (веб, настольные, мобильные …), а также растущую экосистему OSS. Так почему же разработчик .NET будет изучать Ruby и Rails? Для тех, кто изучал, что им понравилось или не понравилось? Читайте дальше, и вы найдете ответы на эти и другие вопросы.
Кроме того, что я поделился своим личным опытом, я попросил нескольких нынешних или бывших разработчиков .NET, которые рискнули проникнуть в Rails Land, также поделиться своим опытом:
- Джонатан Биркхольц , он же JB
- Майкл Коби
- Майкл создал Just for Bands on Rails, веб-сайт для групп, чтобы управлять их бизнесом.
- Бен Шейрман
- Бен работал над несколькими приложениями на Rails в ChaiOne и выступал на конференциях по Ruby и Rails.
- Тим Тиррелл
- Тим собирал приложения на Rails и представлял конференции на Ruby и Rails.
- Кори Хейнс
- Кори был повсюду (буквально!), Сотрудничая с разработчиками как « Путешественник » и помогая им улучшить свое мастерство. Он также начал Code Retreats и является создателем MercuryApp , приложения Rails, которое помогает людям и командам отслеживать все, что им нужно, и обдумывает его для улучшения.
- Дерик Бэйли
- Дерик является создателем Albacore , который представляет собой «набор задач Rake для автоматизации процесса построения системы на основе .NET»; отличный пример того, как применить уроки из Ruby к вашему .NET кунг-фу. Дерик также плодовитый блоггер , он пишет очень подробные и информативные посты о том, как расширить Rails и согнуть его под свои нужды.
- Джак чарлтон
- Джейк писал посты на основе своего опыта работы с Ruby и Rails.
- Скотт Беллвер
- Скотт несколько лет преподавал Rails, представлял его на нескольких конференциях по всему миру, написал несколько статей, связанных с Ruby, Rails, BDD, Agile, Lean и смежными темами.
Этот пост содержит цитаты из того, что я получил от них, и я также опубликовал их полные ответы здесь, если вам интересно.
- Скотт несколько лет преподавал Rails, представлял его на нескольких конференциях по всему миру, написал несколько статей, связанных с Ruby, Rails, BDD, Agile, Lean и смежными темами.
Разработчики .NET, изучающие Ruby on Rails?
После почти десятилетия разработки .NET я почувствовал необходимость рисковать в разных водах. Поскольку несколько человек .NET, чье мнение я ценю, были счастливы, работая над Rails, я решил попробовать, и мне это очень понравилось. По-видимому, это было общей тенденцией для нескольких людей:
«В 2005 году я продолжал слышать гул о Rails. Я изучил это, но первоначально не получил это. Я не понимал MVC (в то время я был парнем с WebForms), а Ruby совершенно отличался от C #. Я не мог себе представить, как это происходит, как это было. Перенесемся через 3 года, после просмотра того, как все больше и больше людей начинают его использовать, и я решил начать серьезно его пытаться. — Бен
«Для меня это был способ узнать что-то новое — изучить новые сообщества и технологии — и, надеюсь, научиться чему-то, что я мог бы привнести в свою разработку .NET (что я и сделал). Меня сразу поразило то, как быстро я смог запустить веб-сайт рельсов с базовыми экранами CRUD, используя строительные леса. Только когда я изучил рельсы, MVC в веб-приложении имел смысл ». — Дерик
«Когда вы начинаете продвигать статически типизированный язык, такой как C #, вы начинаете писать все больше и больше кода, который на самом деле не имеет никакой другой цели, кроме поддержки системы типов. Сказать, что это разочаровывает, мягко говоря. Огромное количество «избыточного» кода, такого как интерфейсы, приведение типов, внедрение порочных зависимостей исключительно для тестирования »- Джак
«Помимо кайфа, это была миграция людей, чье мнение, которое я уважаю, говорит мне, что мне нужно взглянуть. Потратив большую часть своей карьеры на создание интеллектуальных клиентских приложений, я очень мало знал о веб-фреймворках. Единственный веб-опыт, о котором мне приходилось говорить, — это веб-формы, и на самом деле это не считается. Поэтому, когда у меня был небольшой волонтерский веб-проект для местной благотворительности, я решил взглянуть на рельсы ». — JB
«Я слышал о Ruby и Rails некоторое время, прежде чем решил изучить его более подробно. Я прошел через «Изучай Ruby за 20 минут», который находится на главной странице языка Ruby, и мне понравилось. Краткость языка — это то, что действительно взволновало меня ». — Майкл
«Работа в душераздирающем корпоративном ИТ-отделе действительно заставила меня смотреть в сторону менее корпоративного направления. Поскольку я был влюблен в культуру модульного тестирования программного обеспечения, Ruby и Rails казались очевидным направлением ». — Тим
«С 2004 года я стал видеть, что на ежегодной Agile-конференции наряду с другими более мелкими конференциями появляется все больше и больше Ruby. Я проводил бы время в паре с людьми в нем и действительно наслаждался этим. ”- Кори
Я, безусловно, могу относиться к этим цитатам. Несмотря на то, что у меня были замечательные друзья в сообществе .NET, к сожалению, это сообщество не имеет большого влияния в направлении, которое Microsoft использует в своих проектах. Сообщество Rails, с другой стороны, полностью определяет направление стека, основываясь на реальных потребностях.
Что нравится в этом? Что не надо?
Когда я впервые попал в Rails, я был поражен тем, как много я могу сделать с минимальными знаниями Rails или Ruby. Поскольку он в значительной степени опирается на соглашение по конфигурации, можно много сделать, если следовать соглашениям. Мне очень понравилось это чувство выполненного долга для человека, который мало знал ни о языке, ни о стеке. Мне также нравятся инструменты тестирования (такие как RSpec и Cucumber), с которыми я чувствовал, что могу писать свои тесты с гораздо меньшим трением, чем то, к чему я привык в пространстве .NET.
Это были вещи, которые захватили меня сначала, и я начал ценить другие, поскольку я получил больше опыта.
На данный момент, я не могу думать о том, что мне не нравится в этом. Может быть, есть пара вещей, которые, возможно, я просто пока не совсем понимаю, или которые кажутся мне странными после стольких лет работы с другим стеком, но это не имеет никакого отношения.
Когда я спросил своих друзей, что им нравится или нет в Ruby и Rails, я получил много дублирующих ответов, а также некоторые вещи, которые были важны для одних, но не так важны для других:
Рубин
«Я буквально * люблю Руби. Это безумие, гибкость, лаконичность и красота ». — Бен *
«Мне нравится лаконичность Руби. » — Майкл
Драгоценные камни
«Драгоценные камни делают компонентизацию приложений не только возможной, но и настолько простой, что КАЖДЫЙ это делает. Обычно, когда у вас есть проблема, есть кто-то, кто уже имел эту проблему, решил ее и упаковал в драгоценный камень для использования ». — Бен
«Я сэкономил часы своего времени на поиске драгоценных камней, которые могут помочь доставить функцию, прежде чем я просто сел и сам ее кодировал. Другой важной частью драгоценных камней является то, что они обычно поставляются с отличной документацией и шпаргалками. Так что я могу установить гем и в короткий срок получить драгоценный камень, выполняя ту работу, которая мне нужна. И если документации не хватает, я могу просто открыть гем и погрузиться в код сам. ”- JB
инструменты
«Мне нравятся вещи из командной строки. Я печатаю довольно быстро, и это вписывается в мой рабочий процесс ». — Бен
«Переход от среды разработки инструментов Visual Studio, ориентированной на GUI, на чрезвычайно легкую и в основном ориентированную на командную строку среду — это просто глоток свежего воздуха». — Тим
тестирование
«Мне нравится, что тестирование — это то, что ты делаешь, а не дополнительная затея». — Джейк
«Мне особенно нравятся инновации в области тестирования и TDD в сообществах Ruby и Rails. Существует много дискуссий о различных методах и приемах. Я не вижу такого же уровня обсуждения в других сообществах ». — Кори
«Мне нравится, как тестирование так тесно связано с сообществами Ruby и Rails». — Тим
Простота
«Создать сайт и запустить его легко, и быстро внести в него реальную ценность. Что еще более важно, хотя, это убирается с моего пути. У меня нет времени или терпения иметь дело с инструментами и технологиями, которые постоянно мешают мне. Инструменты не должны диктовать, как мы работаем, но должны быть созданы, чтобы работать так, чтобы они нас поддерживали. Rails и сообщество вокруг него делают именно это. Очень легко изменить поведение рельсов и то, как вы с ними работаете. Это указывает на две вещи, которые я люблю больше всего: язык ruby и сообщество ruby. Это рубиновый язык и окружающее его сообщество, которые действительно дают рельсам свою силу. — Дерик
«Я люблю простоту. Мне нравится, что соглашение о конфигурации глубоко укоренилось во всем. Я люблю эти вещи «просто работать». Мне нравится, что это мешает мне и позволяет мне писать код, который имеет ценность для бизнеса ». — Джейк
«Rails действительно — это фреймворк, который мешает вам и позволяет выполнять работу очень церемонно. Мне нравится аспект «соглашения о конфигурации» в Rails. Это позволяет мне меньше думать о создании приложений ». — Тим
Это не только радуги и единороги
Некоторые парни упоминали, что «Рельсы — это не только радуги и единороги». Что-то, что постоянно появлялось, — это скорость изменений в Rails и вокруг него. Так как сообщество управляет развитием, вещи, как правило, движутся быстро …
«Иногда трудно понять, где что-то пошло не так, потому что происходит много конвенций и магии. Особенно когда живешь на грани. Драгоценные камни не всегда остаются синхронизированными, Rails постоянно меняется, поэтому вам нужно иметь большое терпение, если вы собираетесь работать над последними и лучшими ». — Бен
«Скорость изменений в сообществах ruby и rails ошеломляет, и в сообществе очень большой синдром« блестящей новой игрушки ». Это дает преимущество постоянного продвижения технологии вперед, но часто приводит к головным болям, пытаясь выяснить проблемы несовместимости между различными версиями разных драгоценных камней. Такие инструменты, как Bundler, призваны помочь решить эту проблему, и в значительной степени помогают. Однако они также часто являются частью проблемы ». — Дерик
«Что может расстраивать других, так это скорость обновлений с рельсами. Rails может двигаться быстро, и если у вас есть приложение на Rails 2.0, поиск справки по основам и учебным пособиям может оказаться затруднительным, поскольку Интернет уже перешел на Rails 3 или 3.1 ». — JB
«Что мне не нравится, так это скорость, с которой движется сообщество. Будучи хорошим разработчиком, каким бы мне ни хотелось быть, некоторые вещи все еще занимают у меня некоторое время, и иногда я чувствую, что, как только я понимаю что-то, это изменилось в последней версии ». — Майкл
Быстро меняющийся темп Rails — это всегда плохо?
«Несмотря на высокую скорость, изменения велики. При работе с рельсами я часто думаю: «Чувак, зачем мне делать X, разве рельсы не должны делать это для меня?» Затем, через несколько месяцев, я вижу, что следующая версия рельсов будет включать эти функции. Это приятный сюрприз из моего опыта .NET, где часто обновления решали проблемы, которых у меня не было. По словам Рики Жерве, «лучшее нерешенное решение проблемы, которой не существует» — JB
Что упустить из .NET? Что не надо?
Я что-то пропускаю из .NET? Я думаю, что LINQ, наверное, самая большая вещь. В Ruby есть пара функций LINQ, но это не совсем то же самое. Кроме этого, я, конечно, не скучаю по TFS .. вообще !! Хотя разработчики .NET, безусловно, могут использовать другие системы контроля версий (а некоторые и используют), подавляющее большинство просто придерживается TFS, потому что «это путь Microsoft».
Сначала я думал, что буду скучать по моим милым маленьким дополнениям для Visual Studio: CodeRush и ReSharper. Я должен сказать, что не сильно скучаю по этому. Я получаю большинство рефакторингов, инструментов навигации по проектам и автозаполнения, которые мне нужны в RubyMine.
Есть несколько других вещей, которые я не пропускаю, но это слишком сильно совпадало бы с тем, что воспитывали ребята:
«C # по-прежнему довольно крутой язык, но я действительно не скучаю по .NET Framework», — Бен
«Я любил C #, поэтому я скучаю по этому. Думаю, мне стоит больше заглянуть в RubyMine, но я скучаю по ReSharper. Мне просто нужно, чтобы мои качества рефакторинга смешались с Vim. ”- JB
«Я хотел бы сказать, что я действительно не скучаю по IntelliSense и ReSharper так, как я ожидал». — Тим
«Что-то, что было бы неплохо, это хорошая IDE для разработки на Ruby / Rails, так как это кажется самым большим препятствием для людей .NET, переходящих на Ruby / Rails. Отсутствие такой Visual Studio, как IDE, похоже, причиняет боль некоторым людям, и как инструмент разработки Visual Studio довольно хорош ». — Майкл
«Я определенно не пропускаю ежедневную работу в Visual Studio или Windows». — Тим
«Я не скучаю по шаблону всего, что вам нужно знать, чтобы в наши дни даже считаться« промежуточным »разработчиком в .NET. Если вы не знаете IoC, TDD, SOLID и дюжину других принципов и шаблонов, вы не будете в курсе того, что нужно для создания хорошей архитектуры в .NET. Многие из этих шаблонов и практик по-прежнему необходимы в Ruby и Rails, но язык и фреймворки, как правило, превращают эти знания в первоклассных граждан, вместо того, чтобы требовать от вас их использовать, как запоздалую мысль ». — Дерик
«Я не скучаю по TFS, архитекторам, которые думают, что вы должны передавать наборы данных, предприятиям, застрявшим на старых технологиях, рабству Microsoft, разработчикам, которые не могут потрудиться прочитать книгу и немного выйти за пределы своей зоны комфорта, чтобы узнать что-то новое и удивительно. »- Бен
«Я не скучаю по инструменту« все в одном », к которому стремятся технологии и команды Microsoft. Такие инструменты, как TFS и Visual Studio, могут иметь большую привлекательность для бизнеса из-за тесной интеграции между ними, но реальность повседневной работы — это отдельная история. Эти инструменты приводят к очень жестким процессам, где инструменты диктуют, как люди работают и взаимодействуют. Они решают крупные бизнес-задачи в определенной степени, но создают значительно больше проблем, чем решают, предотвращая изменения и препятствуя способности команды обрабатывать особые случаи и потребности, которые не соответствуют стандартным рекомендациям этих тесно интегрированных инструментов ». — Дерик
«Я не скучаю по менталитету« Microsoft сказал… »большинства разработчиков .NET. Я терпеть не могу и не понимаю. Как будто люди боятся что-то узнать или поставить под сомнение, что бросает вызов всему, чему меня когда-либо учили. Люди должны смотреть за пределы того, что они в настоящее время делают, чтобы понять, что еще существует, если только по какой-то другой причине, кроме как понять, почему они делают то, что делают ». — Дерик
«Я не скучаю по культуре. Бесконечные схватки с архитекторами и менеджерами при попытке внедрить тесты, инструменты с открытым исходным кодом и гибкие методы. Я жил с ужасающим отчаянием, рожденным от разочарования. ”- JB
«Я не скучаю по работе с технологией, в которой большинство разработчиков не думают за крошечной коробочкой». — Тим
«Честно говоря, я ничего не пропускаю .Net.» — Кори
Зачем переходить на Ruby on Rails?
Итак, есть ли случаи, когда разработчики .NET, решившиеся перейти на Rails, решили переключиться? Да, довольно много, на самом деле. В моем случае так и случилось. Но как это случилось? Обычно лучший способ узнать что-то новое — это получить как можно больше информации. После нескольких месяцев работы над проектом Rails в свободное время мне предложили возможность работать над ним полный рабочий день. Пока мне это очень нравится. Конечно, есть препятствия здесь и там, но общий опыт был полезным.
Я думаю, что это все о том, чтобы получить как можно больше удовольствия, но при этом получать за это деньги. Я имел несколько лет удовольствия от Clipper, чем FoxPro, чем .NET. Это было просто время для меня, чтобы начать веселиться с чем-то еще. Я снова услышал похожие истории от ребят:
«Я обнаружил, что могу очень быстро создавать приложения и размещать их так же легко (на Heroku). Когда на работе появлялись проекты, требующие такой же ловкости, я рекомендовал Rails ». — Бен
«Возможность сделать что-то новое и захватывающее, с быстро развивающимся и хорошо организованным сообществом, была именно тем, что я искал после 9+ лет разработки .net. Я построил несколько небольших сайтов, чтобы играть с Rails и учиться. Чем больше я играл с ним, тем больше я хотел играть, учиться и создавать что-то значительное. Во второй половине 2010 года мне была предоставлена возможность не только перейти на работу в Rails на полный рабочий день, но и выйти самостоятельно в качестве независимого подрядчика / консультанта ». — Дерик
«… Хотя я не переключился — я просто занял новую должность в цифровом агентстве, которое является сильным магазином .NET. Я использую Rails для своих собственных вещей, и это долгожданное облегчение ». — Джейк
«Мой рельсовый момент произошел в первую ночь. Я сел за обучение рельсам и через несколько часов создал приложение и разместил его на Heroku бесплатно. Мой разум был взорван. Мне не нужно было тратить время на выяснение миграции данных, тестовых сред, планов хостинга и т. Д. Я сразу мог сосредоточиться на том, на чем я хотел сосредоточиться: на чем я хотел, чтобы мое приложение делало ». — JB
«Я занимался разработкой .NET в той или иной форме почти десять лет, и я решил, что пришло время изучить что-то новое. Последний скачок произошел, когда мы с другом разработали план Just for Bands. На самом деле я не хотел делать это в .NET (даже с использованием ASP.NET MVC) главным образом потому, что весь день работал на .NET и действительно хотел узнать что-то новое ». — Коби
«Я мысленно перешел полтора года назад, когда подумал о своем будущем и понял, что не могу придумать ни одной работы .NET, которая бы мне понравилась. Я буквально смог переключиться, потому что рынок труда в Остине сейчас смехотворно хорош, так что возможности были доступны для разработчиков с небольшим опытом или вообще без опыта работы с Rails ». — Тим
«В 2007 году мне действительно надоел опыт разработки на C #. Я бы потратил время на написание Ruby, а затем вернулся на C #, и это было как день и ночь с гибкостью. С 2004 года я занимался разработкой, основанной на тестах, и чувствовал, что постоянно борюсь с C #. Я устал от компилятора и языка, кричащего на меня о вещах, к которым я буду стремиться, таких как невыполненные методы. Всякий раз, когда у меня была возможность работать в Ruby, опыт был гораздо более приятным. Итак, я решил выбраться из этого мира. Я изучал Ruby, поэтому я взял несколько месяцев и создал приложение на Rails. Затем мне предложили устроиться на работу в стартап, занимающийся Rails ». — Кори
Подводя итоги
Разработчик .NET может многому научиться, глядя на Ruby или Rails. Благодаря динамическим функциям C # разработчик может многому научиться на чистом динамическом языке, таком как Ruby. Благодаря тому, что ASP.NET MVC становится все более популярным, можно многому научиться у Rails (который существует уже долгое время и развивается намного быстрее, чем ASP.NET MVC когда-либо сможет). Кроме того, есть несколько вещей, которые возникли в мире Ruby или Rails и попали в .NET, такие как CoffeeScript, Sass, Cucumber, Jasmine и т. Д.
Другими словами, вам не нужно оставлять .NET в другом, чтобы извлечь выгоду из изучения Ruby и некоторых Rails. Но в зависимости от того, кого вы спрашиваете, вы можете услышать такие вещи:
«Почему по шаблону… люди пробуют Rails, и они просто никогда не возвращаются?» — Бен
Или последнее, но не менее важное:
«Не стесняйтесь цитировать меня при переходе .NET’ers к Ruby: слишком поздно, слишком поздно — снова!» — Скотт Беллвер
Я разместил полные неотредактированные ответы, которые я получил от ребят, в свой личный блог, на случай, если вы захотите проверить это.