Усталость?

Я не думаю, что существует усталость от .Net, как это описано в книге Эрика Клеммонса Javascript Fatigue. По крайней мере, я не думаю, что это одни и те же чувства, учитывая то, как об этом говорят люди, отказывающиеся от Javascript.

Я просто думаю, что .Net, возможно, вообще упустил лодку любви.

Но позвольте мне немного вернуться сюда.

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

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

Все сложно.

Некоторый фон

Партнер

В конце 2001 года у нас с партнером возникли разногласия по поводу того, какую платформу выбрать.

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

Я, с другой стороны, имел утилитаристский взгляд на ситуацию. C# выглядел более продуманным, чем Java. Я думал, что инструментарий для Java не на должном уровне, и было ясно, что они не смогут конкурировать с Visual Studio в течение многих лет. Казалось, что .Net будет быстро принят потенциальными клиентами. Я оценил его практичность и тот факт, что он позволяет мне выполнять работу быстрее и с лучшей поддержкой. Соотношение затрат и выгод благоприятствовало этому.

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

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

Java, с другой стороны

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

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

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

Эти новые разработки, такие как Groovy, Scala и Clojure, родились из страсти. Люди принесли с собой любовь. Некоторые произошли просто потому, что это был способ установить флаг — у создателей была причина.

Долгосрочный прогресс требует любви

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

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

Java в значительной степени требовала этого, и любовь пользователей, которые восприняли ее, питала эти сторонние проекты.

Как побочный эффект, прогресс начал происходить в другом месте. Grails появился за два года до ASP.NET MVC, а Rails предшествовал Grails. Целые экосистемы считали Windows чем-то второстепенным и искали нишу, как Xamarin, Windows была тем, с чем люди ассоциировали .Net.

Пользователи не пытались создавать эти вещи в .Net — вместо этого они ждали, пока их создаст Microsoft.

Да, у нас были некоторые проекты, такие как IronPython или IronRuby, многие из которых были быстро заброшены или никогда не использовались в производстве. Некоторые альтернативные языки даже появились сначала для .Net, например Boo. Однако поднимите руки — кто когда-либо развертывал что-то, написанное на Boo?

Без этих параллельных разработок .Net в конце концов обречена на застой.

Быть практичным

Кажется, я не один. До F# немногие разработчики, которых я встречал, любили .Net.

Большинство из нас были довольны этим. Мы нашли его продуктивным способом работы и приятной альтернативой Java. Это было практично и эффективно.

Несмотря на то, что C# был моим любимым языком в течение многих лет (и до сих пор остается в некоторых случаях), он никогда не вызывал такой любви, как Clojure. Было больше похоже на то, что мы были парой, которая перешла непосредственно от встречи к спокойному взаимному принятию долгосрочных отношений.

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

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

И да, по иронии судьбы, отчасти это было связано с тем, что C# был на самом деле компетентным и развивающимся, в то время как Java казался рожденным полноценным динозавром, управляемым комитетом.

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

Было легче жить с жалобами, пока не появилось то, что ты любишь.

Это не ты, это я

Отпустить

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

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

Отказ от контроля и смирение — это то, в чем Microsoft исторически не была хороша.

Отдаляются друг от друга

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

Хотя может быть уже слишком поздно. Их аудитория слишком привыкла к утилитарному подходу. Их пользователи слишком привыкли спрашивать "Что мне это даст?".

Дело в том, что я подозреваю, что F# помог бы мне (даже с отсутствием S-выражений), если бы я сначала не занялся Clojure. Возможно, это зажгло искру. Я бы попробовал это раньше, но в течение нескольких лет я ожидал, что Microsoft откажется от этого.

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

Я буду рад использовать .Net там, где мой интерес и его возможности совпадают, но, вероятно, уже слишком поздно для романтики.

Первоначально опубликовано на numergent.com.