Pull to refresh

Comments 80

UFO landed and left these words here
Мне показалось, что в этом посте Поллака понятие «средний разработчик» никак не вяжется с ведением собственных, пусть даже маленьких, open-source проектов :)
Ну и он линк дает на место, откуда цифру взял.
UFO landed and left these words here
Он написал их только на scala. И он не говорил, что он пишет только на ней
UFO landed and left these words here
Вы не написали. Но вы предъявили ему, что 50к в год — это мало. Так вот, повторю, он не указал, что он пишет и на других языках.

Будете и дальше спорить или гадать «он себе других языков не представляет»?
фанатик? — очень похоже на то. Ну а по поводу количества строк кода… Мне вот стало сильно интересно, а сколько же я пишу строк кода если посчитать так, в среднем. И, по результатам гита, у меня получилось за прошедший год по 87,6 измененных строк в день. что достаточно хорошо корреллирует с тем, что он написал.
если мы говорим о Java, то 100500 строк в день можно стабильно получать применением рефакторинга «change signature» :)

можно попробовать считать как Тёма Лебедев при выплате зарплаты коллегам — «единицами смысла»(http://www.artlebedev.ru/kovodstvo/sections/148/). Но тогда ни о каких «красивых числах» в десятках и тысячах речи уже не будет…
не забывайте, что Скала в несколько раз компактнее Java, так что 50к строк Скалы это под 100к строк эквивалентной Java
>Т.е. порядка 200 строк в день.

Сродни «любой женщине хватит всего 30 см.». Демотивирует и направляет по ложному пути.

200 строк качественного кода — это очень и очень много для большинства языков. А дерьма/копипаста наклепать можно и 1000 строк в день.

Количество строк кода нельзя указывать в отрыве от (1) языка, (2) сложности проекта, (3) и главное — качества проекта.
Очень точно. Можно 10 кликами в IDE сгенерить какой нибудь Entity класс по схеме базы, или шаблон юнит теста по существующему коду. Это что, показатель что ли?

Опять же 100 строк кода веб-приложения на Java, сохраняющего какую-нибудь сущность в БД, пусть с какой нибудь приаттаченной воркфлоу, это мягко говоря не то же самое, что 100 строк кода CryEngine, например, или 100 строк драйвера какого нибудь.

А еще, те кто был в Ынтерпрайз проектах знают, бывает что 4 часа фиксишь баг хитрый, из них два часа сидишь в дебаггере, а ведь фикс, когда смотришь дифф — 10 строк кода.

А еще тут не покрываются случаи, когда ведь день занят, например, измерениями производительности, или ответами на письма программистов, которые пользуются твоим модулем, на всякие встречи и прочее, на написании документации, наконец.
Насколько я знаю, при подобных подсчетах подразумевают некий боле-менее «готовый к употреблению» код.
То есть если я за понедельник ударно нафигачил 200 строк чернового кода, а потом ещё 4 дня его отлаживал — в среднем я писал 40 строк в день. А ударные темпы текстового набора первого дня никого не интересуют.
«Осень уже пришла!» –
Шепнул мне на ухо ветер,
Подкравшись к постели моей.
они 3250 строк в год получили при статистическом анализе больших проектов, проживших уже пару лет. Програмист в этом случае не пишет новый код, он его добавляет в существующий проект, пытаясь не поламать существующий функциолан. И если существующий уже код запутаный/глюкавый/индусский, то эти 3250 в год покажутся еще прекрасной производительностью труда.
А при написании нового проекта, с нуля или на начальный стадиях, производительность будет намного большей. По-этому мерять в «SLOC в день» не самый лучшей подход.
Хорошо написано, даже обидно стало, что не имеет, судя по всему, смысла смотреть что такое Scala, разве что для общего развития, ведь пишу «в стиле заполни-форму-и-сохрани-в-базе», а не «мега-событийно-управляемыми-в-режиме-реального-времени штуковины».
Ну а как вы собираетесь перейти на написание второго типа проектов (если, конечно, есть такое желание)?
Не попробуешь — не узнаешь, как говорится.
Попробуйте, может, как раз и окажется, что ваше место не в «заполни-форму-и-сохрани-в-базе».
Знал бы — перешёл бы даже без Scala или Java с родным PHP, и почувствовав его ущербность недостаточность для таких задач стал бы искать другие инструменты. Просто задач соответствующих нет, а для не highload CRUD-приложений «мега-событийно-управляемыми-в-режиме-реального-времени штуковины» PHP вполне хватает, а та же Java мне кажется избыточной даже чисто синтаксически из-за сильной типизации, не говоря о большой сложности начального (прежде всего) развёртывания и дев-, и продакшен сред (тут у PHP, по-моему, вообще конкурентов нет).

P.S. Пошел читать Simply Lift
Да есть они :( Вся веб-разработка под жаву — памятник избыточности и ненужности, которую никак не обойти в рамках языка. Каждый раз когда ты юзаешь Google Guava или QueryDSL, понимаешь, что где-то в другом мире все эти проблемы давно решены.

Проблема в том, что пока большинству людей удобней заниматься копипастом огромных кусков кода (в т.ч. генераторами модулей популярных рельсофреймворков), и они могут обосновать это извращение финансово, ничего никуда не сдвинется :(
Мне одному кажется, что пост полон снобизма в стиле «Java круче PHP, потому что сложнее, Scala круче Java, потому что сложнее»?
UFO landed and left these words here
Согласен. Думаю что такой уж сложной Scala может быть только для тех Java-программистов, которые кроме Java ничего и не видели.
Угу, после такого маркетинга и смотреть-то на scala не хочется теперь, по правде говоря. Мол, докажи, что ты в касте лучших программистов, перейди на скалу, слабо что-ли, а если скала не понравилась или не подходит — то ты среди середняков, в «классе программистов, которым скала не подходит», без способностей и мозгов. Потрясающе. Может это какая-то особенность сравнения с Java и это их местные разборки какие-то (если не можешь/не хочешь конкретно с Java на Scala перейти, то офисное скучное существо, решающее скучные задачи скучными способами) и я не совсем в теме, но со стороны выглядит так себе все это, понты и манипуляции.
По-моему, это не кажется, а так и есть. Снобизм присутствует. Но мне показалось, что он нарочитый. Поллак специально давит в эту точку. А в предпопослднем абзаце объясняет чего хочет этим добиться.
Никакого снобизма нет. Его мессадж не в том, что Scala круче, а в том, что не надо винить Scala в том, что не получилось.
Ни к Java, ни к Scala никакого отношения не имею, но в том-то и дело, ага, совсем никакого снобизма, не получилось или язык не подошел — значит сам дурак, слабо, а вот Scala с нимбом, ее винить нельзя, очень удобная позиция с точки зрения разработчика языка, не находите? Кто-нить: «мне Scala не подошла», реакция — «о, слабак», обсуждение достоинств-недостатков языка переводится на обсуждение достоинств-недостатков критикующих, так себе приемчик.

Я лично про содержание сказать по делу не могу ничего (ну понятно, что на функциональном языке писать поприятнее, и чуть больше знать нужно), но по форме — выглядит не очень все это.
Я только начал изучать Scala (статья взяла на «слабо» :) ), но понял, что функциональные возможности можно вообще не использовать. Это прежде всего ООП язык, а в каком стиле (императивном или функциональном) писать решает каждый сам. Просто даже из-за сахара (один автоматический вывод типа чего стоит) писать приятней, чем на Java при том же (по идее) результате (байт-коде JVM) и использовании тех же библиотек/фреймворков.

Странно другое. Может я до каких-то нюансов не докопался ещё, но как может средний (или даже начинающий) Java-программист не освоить императивную сторону Scala я не понимаю. И как переход на Scala может помешать проекту (ну, минус некоторое время на изучение особенностей синтаксиса) — тоже. Или дело в инфраструктуре (IDE, инструменты деплоя, тестирования и анализа и т. п.), или является заблуждением мнение о легкости использования Java-классов и сборок, или статья откровенный вброс для поднятия популярности Scala. В последнем случае своей цели она отчасти достигла. Судя по топику минимум два человека начали изучать Scala только на ХАбре :)

Вот с постепенным переводом Java-проекта на Scala проблемы могут быть, даже если начинать не с самого верха.
И всё-таки, автор не говорил «значит сам дурак». Это ваше восприятие.
Автор говорит: «сложность Scala перечеркивает её достоинства». Это не значит, что «сам дурак», это значит «Scala пока сложная». Автор несколько раз говорит, что Скала только развивается, и пока не доведена до ума (не стала достаточно простой). Так что никакого снобизма.

Кстати, он не разработчик языка, а всего лишь активный пользователь.
Да, и он — один из тех, из-за кого Скала стала «сложной». Попробуйте Lift попользовать :) А потом сравните с Play, которую предпочли взять в свой стек Typesafe. (Я сам пишу на лифте уже года полтора).
Тоже пытался начать новый коммерческий проект на Lift. Порог вхождения высок.
Бросил читать после фразы «линий кода»
А зря. Один неудачный оборот в статье не должен вас откатывать.
Просто когда встречаются такие обороты, понимаешь, что проще читать оригинал.
Согласен, для перевода это — ляп.
Просто я и на русском так говорю, не смог переключиться в должной мере.
Поэтому перед опубликованием лучше дать прочитать статью другому человеку на предмет выявления ляпов.
А я пошел смотреть, что такое Scala. На первый взгляд — очень интересно.
Тогда советую также Clojure посмотреть, может он вам подойдет больше.
Или немного подождать и посмотреть на Kotlin
О, спасибо, а то посмотреть не успел толком, а топик куда-то пропал с Хабра. Вот только из того что успел глянуть сразу вопрос возник. Язык хорошо (действительно интересный, правда читая сейчас про Scala ясно откуда ноги у многого растут, тогда это откровением казалось), хорошая IDE еще лучше (кто бы сомневался, что она будет хорошей), но остальная инфраструктура — привязки к GUI, фреймворки, библиотеки — предполагается Java/Scala использовать или надеяться на энтузиастов?
Ну и раз так, то не забудьте перед чтением — посмотреть сравнительные таблицы ключевых отличий Scala от Closure. Тогда читать будет вдвойне интересно. Но ссылками не кинусь, давно это было.
На мой взгляд он ошибается также и в том, что перейти с PHP на Java слишком сложно. Лично я перешел в силу необходимости с PHP на Java (SmartGWT) за полторы недели из которых часть времени ушла на развертывание окружения. У нас народ переходит с PHP сразу на Scala и опять же без проблем. Тут дело в желании скорее и в упорстве.
Вот именно, дело в желании и в упорстве. Про это и написано. Он не говорит конкретно про Вас или других способных людей.
«Тут дело в желании скорее и в упорстве.» — да, вот ключ, о котором он говорит.
Одно время изучал Scala. Язык похож на универсальный швейцарский нож, в котором есть все. Из-за такой универсальности он конечно сложноват, наверно имеет смысл его изучать под конкретную задачу, а не вообще. Нельзя не отметить шикарный Lift, концепции заложенные в нем это будущее сложных веб сайтов и систем, особенно в части реал тайма и параллельной обработки данных.
Конечно для общего развития стоит почитать пару книг о языке или почитать хотя бы «7 languages in 7 weeks» там есть как раз одна глава о Scala.
Согласен с швейцарским ножом. Больше всего расстраивает, что язык динамично развивается, а практика и исследования по использованию отстают. В том плане, что Scala сложный синтаксис и много новых понятий по сравнению с Java.
Может кто подскажет хороший мануал по Scala: только не Scala for Dummies, а что-то типа Scala fundamentals.
Хочется понять именно базу языка и как он расширяется (плагинизируется) и в то же время как он соответствует Java code. Хотелось бы разобраться, что в ядре, а что синтаксический сахар (currying, lazy evaluation, actors, mixins, ...)

Java очень популярна, потому что она крайне проста. К сожалению все фреймворки (библиотеки) изменили впечателие о простоте, но для того, чтобы понимать изнутри эта простота крайне важна. Interface, class, method, primitives + synchronized construction.

P.S.: если брать чисто язык я бы сказал, что PHP сложнее Java, хотя API у Java побольше и библиотек туча.
Курсивы, зачеркивания, примечания переводчика, обновления, жирный шрифт — пожалейте глаза читателей! Ну, и суммирование — нетипичная операция для «вышесказанного» :-)
Спасибо. :) Будем работать надо собой.
Глянул еще раз оригинал (прошло кое-какое время между переводом и публикацией) — автор там изрядно начеркал, моей отсебятины мало :)
Ягуар хуже, чем Нива. Как минимум, для половины СНГ дорог.

Во! Во! А всяких недоумков — в топку мартеновской печи! Плюсую.
Бред какой то написан. Как по мне так это php сложнее java, а не наоборот. Ява приличный, структурированный язык, чего в нем сложного?
Инфраструктура. У людей реально мозг ломается, когда речь заходит про сервера приложений, виртуальные машины java, class loader`ы, не говоря о Maven, Spring etc.
Ну не знаю, у меня мозг ломается когда я вижу в пхп 5 практически одинаковых способов реализации одного и того же) Особенно когда я их всех вижу в одном проекте)
В PHP тоже есть виртуальная машина, правда?
Даже ещё более виртуальная чем в Java, никаких компиляций байт-кода в нативный, чистая его интерпретация :)
Ну в целом, ява как язык — очень простой. Куда проще например, Python-a (мое субъективное мнение). Просто если работаешь с джавой — знать язык сам по себе ниче не значит, если не знаешь инфраструктуру.
Ява — да, структурированный, приличный.
а вот мозги у многих — нет)
> Это происходит в Eclipse, нажатием кнопки «дай мне шаблон X» с подстановкой кода в предложенные средой разработки места. Потом поход на несколько митингов. И они называют это рабочим днем.

То, то программирование стало носить интеграционный характер — прикручивание готовых и документированных кусокв друг-другу по документированной схеме, вообще причина того, что в разработку пришло большое количество людей, строго говоря, к ней не относящихся. Со временем область деятельности этих леммингов полностью автоматизируется и они начинают массово мигрировать.
и что будет дальше?
останутся конторы с маленьким штатом лютых профессионалов верифицирующих свой код?
как по-вашему что будет дальше?
Сложно сказать.
Есть много компаний в т.ч. и MS, заинтересованных в большом количестве специалистов, работающих с их стеком, подобные рабочие места врядли исчезнут, просто локализуются.
Для остальных будут созданы редакторы, платформы вроде yahoo pipes, новое поколение билдеров и т.д.
«А тебе слабо перейти на Scala? Пиши тогда дальше на Java, середняк!». Почему-то пост вызвал именно такие мысли.
UFO landed and left these words here
А мне как раз не понравился позыв «слабо?», как в школе.
UFO landed and left these words here
Да не было такого призыва. Призыв был «не надо винить Scala, если у вас не получилось».
UFO landed and left these words here
Поправте меня, если я ошибаюсь, но одним из серьезных препятствий в повсеместном использовании Scala была «хрупкость» сгенерированного ее компилятором байт-кода (о чем, кстати, писал сам Поллак). Соответсвтенно, когда я сам, в свое время, задумался о том, чтобы все это дело поизучать, сразу встал вопрос, а имеет ли смысл этим заниматься… Если это проект, который должен прожить какой год-полтора, то ладно. А если разрабатывается масштабный проект, над которым будет работать целая команда разработчиков и который будет использоваться 5-10 лет, то как все это вообще можно будет нормально поддерживать? У той же джавы просто исключительная обратная совместимость, легко найти специалистов если что, большинство других JVM проектов тоже в первую очередь ориентируются на джаву.

Может для каких-нибудь исследовательских проектов Scala и подходит, но как быть с набившем оскомину энтерпрайзом, в котором как раз таки и сконцентрированна основная масса денег?..
Это проблема номер один. В Scala, пока еще, необходимо делать то, что недопустимо в энтерпрайзе — пересобирать всю систему при переходе на новый компилятор даже в одной из её компонент. Для масштабных проектов это — не вариант.
Ситуация не изменится пока проект остается инновационным, исследовательским. Разработчики плюнули на обратную совместимость, чтобы быстрее идти вперед. Это и плюс и минус.
Scala — очень неоднозначная, очень перспективная технология, которая грозит стать мэйнстримом, но пока только грозит.
> Scala не настолько лучше, чтобы уволить 50% непродуктивных разработчиков.

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

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

Автор просто слишком политкоректен :) Но я думаю он того же мнения.
> В то время как крутые парни разрабатывают гигантские нечеткие, управляемые событиями, мега-гипер-супер-колоссальные-реального-времени-супер-бла-бла-бла штуки, большинство программистов делают скучные вещи, перекладывая данные из базы данных и обратно, и Oracle/SQL предлагает механизм, прекрасно подходящий для этого.

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

А потом молодые люди думают: вот есть крутой функциональщик, от получает N бабок. А вот есть совсем не крутой копальщик от забора и до обеда, и получает он всего лишь в 2 раза меньше. Очевидно, что здесь выгодней. Так индустрия скатывается во мракобесие, а общество — во всеобщее потупление.
Копать — тоже нужно. Причем копальщиков объективно нужно намного больше, чем крутых специалистов.
Кроме того далеко не все хотят быть крутыми специалистами — это геморрой. Работа — далеко не главное в жизни большинства людей.
>Кроме того далеко не все хотят быть крутыми специалистами — это геморрой.

А какой смысл говорить о всех? Выбор чего-либо нужно делать предметно, для решения каких-то проблем. Вот если есть сложные наукоемкий проект, то люди для которых «работа не главное в жизни» идут лесом. Если же нужно набыдлокодить еще одни фронтенд к базе данных, то дело другое. Кесарю кесарево, а Богу Богово.
Хороших, годных компаний, в которых работают такие же годные специалисты — единицы. Что-то с этим сделать нельзя. Глупые будут выбирать глупое, а умные — умное. Нам остается лишь расслабиться и наблюдать за процессом.
Поллак давно вдарился в эмо, зайдите в его блог и прочитайте несколько последних постов.
При желании всегда можно найти обоснование своему мнению.
В Typesafe взяли Play, а не Lift, так теперь Поллак уже всё вокруг слезами залил.
Время всё покажет, а пока что — трёхкратный рост кол-ва вакансий за год: www.indeed.com/jobtrends?q=scala&l=
Да, они там с Одерски вроде горшки побили.
Подскажите, где оригинал статьи? На goodstuff.im не нахожу.
Это перевод. Прямо под постом — ссылка на оригинал (между тэгами и комментариями, слева от моего ника).
Если в проекте решаются стандартные задачи, используется мощные фрейворки вроде Spring, Hibernate, Java EE то использование Java будет продуктивнее из-за лучшей поддержки в IDE. И про разработчиков все верно. Java толком мало кто знает, что уж говорить о Scala.
Only those users with full accounts are able to leave comments. Log in, please.