Как стать автором
Обновить

Комментарии 80

НЛО прилетело и опубликовало эту надпись здесь
Мне показалось, что в этом посте Поллака понятие «средний разработчик» никак не вяжется с ведением собственных, пусть даже маленьких, open-source проектов :)
Ну и он линк дает на место, откуда цифру взял.
НЛО прилетело и опубликовало эту надпись здесь
Он написал их только на scala. И он не говорил, что он пишет только на ней
НЛО прилетело и опубликовало эту надпись здесь
Вы не написали. Но вы предъявили ему, что 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, потому что сложнее»?
НЛО прилетело и опубликовало эту надпись здесь
Согласен. Думаю что такой уж сложной 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, середняк!». Почему-то пост вызвал именно такие мысли.
НЛО прилетело и опубликовало эту надпись здесь
А мне как раз не понравился позыв «слабо?», как в школе.
НЛО прилетело и опубликовало эту надпись здесь
Да не было такого призыва. Призыв был «не надо винить Scala, если у вас не получилось».
НЛО прилетело и опубликовало эту надпись здесь
Поправте меня, если я ошибаюсь, но одним из серьезных препятствий в повсеместном использовании 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 не нахожу.
Это перевод. Прямо под постом — ссылка на оригинал (между тэгами и комментариями, слева от моего ника).
Спасибо огромное. А то я этот маленький пиптик не заметил:
img534.imageshack.us/img534/6994/screenshot2012010511325.png
… и начал было уже думать, что я чего-то не понимаю. Даже спросить стеснялся.
Если в проекте решаются стандартные задачи, используется мощные фрейворки вроде Spring, Hibernate, Java EE то использование Java будет продуктивнее из-за лучшей поддержки в IDE. И про разработчиков все верно. Java толком мало кто знает, что уж говорить о Scala.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории