Так получилось, что все наши разработчики - универсалисты, нет разделения на "фронтендных" и "бэкендных". И ищу я сейчас таких же, но в процессе интервьюирования выяснилось, что некоторых это отпугивает, а некоторые вообще считают такой подход в корне неверным. А вы как думаете?
Понятно, что человек может быть более опытен в какой-то области и более эффективно решать задачи именно в ней. С другой стороны, мы имеем collective ownership, code review, и т.д., где любой девелопер может посмотреть и покритиковать код другого. - Igor Sereda
Некоторые интервьюируемые мне прямо говорили, что HTML и CSS это такой большой пласт знаний и трюков, что они привыкли, что есть верстальщики, которые пишут HTML, а они сами только JS пишут. Really? - Igor Sereda
С другой стороны, у меня есть сомнения, вдруг я что-то делаю не так. Может быть, девелоперов на все руки, которые могут сделать систему от общей архитектуры и базы данных до юзабельного ui очень немного, и все работают у нас :) - Igor Sereda
Расскажите, что вы думаете? Есть у вас разделение команды на бэкенд и фронтенд, и какой общий размер команд? - Igor Sereda
Во всех хороших командах, где я участвовал, разработчики всегда были универсалами и делали вертикальные, а не горизонтальные задачи. - Стадо овец
С другой стороны, конкретно в случае с версткой я таки обычно нанимаю отдельного верстальшика, потому что разработчики рангом пониже очень плохой CSS/HTML производят. Тем не менее, опытный web разработчик уметь верстать должен иначе он не web разработчик. - Стадо овец
С третьей стороны, лично я про себя знаю, что нормально сделаю интеграцию, серверную и клиентскую логику, но UI у меня выйдет очень так себе, сверкать и бросаться в глаза не будет независимо от того XAML это или HTML. - Стадо овец
Ну я искренне верю что "if you're looking for a "full stack" developer.. then you have no idea how deep the stack is, and neither does your candidate." https://twitter.com/igrigor... — мне не встречались люди, которые и правда хорошо умеют всё. Но это правда что разделение на верстальщиков и девелоперов чисто российское: фронтэндщики в UK должны уметь дизайнить и верстать. К счастью, я фронтэнд только вычитываю и багфикшу, писать с нуля у меня получается медленно и плохо. - I'm on my way
При этом Хорстман учит что human being is an extremely challengeable creature. Если мне придётся работать со всем стэком, я сначала начну более активно багфиксить и в JS тоже, а там и с CSS разберусь, в конце концов там нет rocket science, там просто нужна та тысяча-другая часов практики. - I'm on my way
Мой опыт, что, в общем-то, неудивительно, совпадает с опытом @aivanov. Дизайнера привлекаем обычно отдельного, он же сознается про размеры кнопочек, цвета и отступы. Остальное делают разработчики. Есть те, у кого лучше получается верстать, есть те, у кого бэкэнд веселее выходят. Но баги в любых областях все могут пофиксить. - Ye Olde English Hoodie
я думаю, что очень круто, когда разработчик спокойно смотрит на оба этих дома и вообще на любую техническую проблему. узкие специалисты, даже допустим с T-shaped skills http://en.wikipedia.org/wiki... - они тоже конечно нужны, но JS или HTML/CSS это как-то уже совсем-совсем недостаточно узко. девелоперы на все руки ftw + каждому по любимому фломастеру, что бы глубоко и со всеми оттенками вкуса. - [email protected]
"специализация — для насекомых" %) по-моему, годный разработчик должен уметь при необходимости уметь и html с cssами поправить (сам так делал не раз, и бывало, за одну неделю успевал и на C писать, и цссы править). Однако, кажется ща всё стало таким здоровым и сложным, в каждом слое какие-то фреймворки (даже для вёрстки!), что иметь какое-то разделение обычно практичнее. - адский хардлайн в засаде
Только DBA нужен отдельный, потому что веб-программисты не умеют SQL. - адский хардлайн в засаде
специализация - для специалистов. процесс разделения на серверный и клиентский код начался очень давно, и сейчас является фактом. наличие т.н. фулстека обычно говорит о студенте или гении. с теми и другими лично я работать не люблю - словарный запас кофемолки
@larhat если веб-разработчик не умеет SQL – это очень странный и/или неквалифицированный веб-разработчик - ptzn
@ptzn "если веб-разработчик не умеет JavaScript – это очень странный и/или неквалифицированный веб-разработчик" ;) но вообще "не умеет" не в смысле "совсем не знает", конечно, а скорее избаловался ОРМами своими. - адский хардлайн в засаде
Избалованность ORM-мами приводит к необходимости вкуривать SQL и ЧСХ ВНЕЗАПНО - I'm on my way
Так можно, но универсалистов сильно сложнее искать, они стоят существенно дороже и в целом производят код чуть хуже чем специально заточенные люди. Та же фигня по которой сейчас нет или почти нет ученых универсалистов. Типа Ломоносова. - insecure Bangalore
про ОРМ я тут даже в свое время статью писал http://o-softe.blogspot.ru/2013... - insecure Bangalore
я работал горизонтальным разработчиком и это было хуёво. комплекс неполноценности на всю жизнь :) - муха шла
Надо ещё сказать, что незнание SQL встречается куда чаще чем незнание UI. UI обычно знают и умеют, но не хотят. SQL довольно часто таки не знают совсем. - Стадо овец
заточка под фронтенд и бэкенд имеет смысл. я фронтенды не люблю и стараюсь держаться от них подальше. - offshore dogga dogz
@larhat если _вообще_ не умеет JavaScript, то да, хреновый веб-девелопер. Другое дело не хочет или не знает тонкостей использования какого-то конкретного фреймворка. - ptzn
Написал, стер, напишу иначе. Очень смешно, когда для обоснования своей позиции люди ссылаются на твит двухлетней давности. За последние два года с full stack многое изменилось. - bopm
^ Стэк сжался за два года, понимаю. - I'm on my way
^ бгггг (извините) - шаша
Я так думаю, что оба подхода (универсалы и специалисты) имеют полное право на существование, всё зависит от целей и задач. Быстро генерить объём кода и количество фич на ковейере "без души" лучше силами узких профессионалов, творчески создавать любимый продукт удобнее силами универсалистов. - sёliv
При всем моем уважении в Игорю, он все же разработчик http оптимизаций в гугле. С его точки зрения стек - это модель OSI. С моей стороны - верстка, клиент-сайд, приложение, база, девопс. - bopm
И да, за два года стало поуже. Можно быстро делать хорошие вещи без необходимости вымазываться в масле. - bopm
@sereda frontend/backend разделение есть (дело не столько в скиллсетах, сколько в личных пристрастиях/опыте), универсалы в команде тоже есть (они более сеньоры), а нанимать безумно трудно и тех и других, во всяком случае в СПб :) - ostolop
@alf "мне не встречались люди, которые и правда хорошо умеют всё" -- хех, а мне встречались... правда, не всё сразу ;) - ostolop
^ и один из них уже работает у Игоря, ага ;) - I'm on my way
Думаю, что в основном вопрос в том, какие задачи выполняются. Если сравнить фронтэнд при разработке плагина к jira и booking.com, то сложность html+css разная. Если заставить универсалов часами делать закругленные уголки и прочие рюшечки для всех самых древних браузеров, они взвоют и быстро разбегутся. - Джуник
С другой стороны, наверное, любой программист может написать несложный html+css даже ничего в этом не понимая, просто почитав, как это делать. Это, конечно, не будет идеальный html и css с точки зрения всех современных тенденций, но работать будет. - Джуник
Ого! Какая отличная дискуссия получается. Спасибо, коллеги. - Igor Sereda
Вот вброшу еще - например, как ответ @junique - вот раньше, до веба, как-то же программисты делали десктопный UI, на разных тулкитах, которые по сути решали те же задачи, что и HTML/CSS - лэйаут, отрисовка, контролы. Программисты не бегали к верстальщикам спросить, как лэйаут сделать или какое значение для свойства поставить. Ну и была специализация на GUI, конечно, но обычно gui тулкит входил в основной набор средств разработки, которым владел девелопер. Сейчас, на ваш взгляд, что-то поменялось? - Igor Sereda
^ я и тогда UI не любил :) - I'm on my way
@alf я помню :) - Igor Sereda
^^^ Вот я про это не стал писать, но раз зашла речь, то выскажу своё мнение: дико бесит, что слово "фронтенд" сейчас в 99% случаев означает html+css. Я вот наоборот писать UI на нормальных фреймворках любил и, как мне кажется, умел. Сейчас поменялось то, что бекэнд пишется на языке программирования, а "фронтенд" лепится из говна, палок и сборника заклинаний шаманов мира. - sёliv
@seliv слушай, ну в свинге говна и палок тоже было немало, а на html/css/js можно очень даже элегантно вещи делать. а плохо делать можно на чем угодно :) ну есть возня с браузерами, да, частично закрываемая jquery, а раньше была кросс-платформенность - Igor Sereda
Я как верстальщик не делающий глубокий js довольно востребован. Просто знать кучу вещей, о которых споткнется универсал и потратит в конечном итоге больше времени. CSS/HTML сейчас приходится оптимизировать под кучу устройств, браузеров, разрешений. Я например часто видел наполовину слепленные сайты, где тупо позиционирование блоков делалось JS, потому что программист не разбирался. Далее никто из программеров не будет выстраивать методологию верстки, структуру и т.п. В конечном счете приходишь на проект, а там 15к строчек ЦССа, который писали 10 людей. - Пресная жизнь
Далее не каждый программист выдержит "а подвиньте тут на 1px" и так 20 раз. Верстальщик/фронтендер стоит очень часто на стыке именно с заказчиком, наравне с дизайнером. Все эти анимации, переходы и красивости нужно делать. Насчет универсальности, да наверно программисты могут писать хтмл/цсс - но делают это пренебрежительно, с ленцой считая это дело второстепенным и простым. - Пресная жизнь
@sereda вопрос в критической массе, и в степени "частичности". В свинге не нужно было каждое мелкое изменение проверять на всех платформах, потому что взаимодействие каждого элемента с каждым другим в сегодняшней фазе луны и версии JDK не может быть предсказано. jQuery (за пределами довольно ограниченного ядра) это тоже масса полунедопиленных компонентов на самом деле, причём мне ни разу не удавалось их изящно доработать, например так, чтобы захотелось закоммитить контрибьюшн. Только хак-перехак-наперекосяк, чтобы заработало сегодня и здесь (но я не настоящий сварщик, конечно). - sёliv
@exdeniz мне кстати кажется наоборот, как раз программисты склонны как-то структурировать вёрстку, ну не знаю, BEM там какой-нибудь внедрить, семантически верстать. Фреймворки "для чайников" тоже вроде этому способствуют. Кстати, я как программист не считаю html/css простым; он примитивен (в смысле инструментария), но отнюдь не прост. - sёliv
^ программистам нужно вот прям сейчас, поэтому добавить класс который перезаписывает другой класс по ID для них это нормально. Просто на рынке сейчас куча поточных верстальщиков, у которых проект 5к рублей и досвиданья. Когда приходишь на большие проекты, первым делом разрабатываешь структуру верстки, блоков, классов - что бы у программиста вообще не возникало необходимости лезть и добавлять "маленький фиксик" в цсс. - Пресная жизнь
^ ыыыыы, waterfall detected (не то чтобы это было что-то плохое ;) - Igor Sereda
@sereda Сложно судить о том, что было раньше, но рискну предположить, что редко удавалось достичь такого отделения логики от view, как произошло практически по дефолту в веб-разработке. Понятно, что универсалы могли наваять ui. Но думаю, что когда нужен был очень сложный ui, то им по большей части занимались узкие специалисты. Как сейчас и происходит в вебе. - Джуник
@sereda Собственно, для разработки плагинов к jira, думаю, универсалы -- подходящий вариант как раз потому, что сложный и красивый с рюшечками ui не нужен. - Джуник
^^ Да ладно! У нас чуваки местами из JS умудрялись SQL в базу напрямую херачить. Такого вот отделения логики от view мы достигли. - sёliv
@junique Рискну предположить, что вы заблуждаетесь насчет сложности ui некоторых плагинов к jira ;) У нас процентов 40 кода в JS. И рюшечки мы любим, и пиксели влево-вправо двигаем. А уж какое счастье нам доставляет тот факт, что мы имеем дело не только со своим css, но и с произвольным css, который могут нахерачить писатели других плагинов, оказавшихся на том же инстансе JIRA - не передать. - Igor Sereda
@exdeniz мысль про стык с заказчиком интересная, но от заказчика могут же быть корректировки "в один пиксель" не только по части верстки - Igor Sereda
не верю в универсалов, потому что в css слишком много фигни, которую нельзя понять, можно только запомнить, т.е. просто противно этим заниматься, если не научился, пока был молодой и невзыскательный. серверный код отличных фронтендеров (фронтендер as in html+css+js) это ад. попытки объяснить, что не так, наталкивались на стену непонимания. - urquan
кстати, где ищете? - urquan
Понятное дело, что "узкий" специалист в своей специальности уделает "широкого" специалиста, но сомневаюсь, что в нашей предметной области можно стать хорошим специалистом и не "измазаться" и в сервере, и в клиенте. Хотя между клиентом и сервером водораздел побольше, конечно, но все равно. А к людям, которые знают хтмль и цсс и не знают яваскрипта, я отношусь с подозрением, думаю, что они либо маньяки, которые умрут вне своей текущей экосистемы, либо лентяи, которые все шансы изучить js старательно отпихивали. - Тринадцатый
Кэп подсказывает, что ответ сильно зависит от продукта. Если большинство задач в разработке можно описать как "сделать запрос в базу, выплюнуть ответ в браузер", то да, есть смысл в команде универсалов. - По кофе и спать
@sereda Вполне может быть, что заблуждаюсь, хотя мне непонятно, зачем могут быть нужны рюшечки в jira-плагине. :) А что говорят узкие специалисты про ваш js+html+css? Те, кто именно на этом специализируется. Это им достаточно интересно? - Джуник
Все знакомые мне джава-программисты html+css делают не очень. Я так думаю – им слишком просто и не интересно. Потому взяла на себя эту почетную обязанность. Разделяю мнение @alf – дизайнер должен дружить с кодом. Извините, что со своей колокольни. - Астральные осьминожки
Ну и на 100% поддержу – "никто из программеров не будет выстраивать методологию верстки, структуру и т.п. " и "не каждый программист выдержит "а подвиньте тут на 1px" и так 20 раз.". - Астральные осьминожки
А чем современный fullstack веб-разработчик отличается от Android-разработчика приложения вроде Foursquare? Почему Android-разработчики не делятся на фронтендеров и бекендеров? - По кофе и спать
Ну Андроид/Айос же ща чаще всего — фронтенд, который кормится от АПИ бэкендового на чём угодно. - адский хардлайн в засаде
@larhat а собственно чем запрос к API отличается от запроса к ORM? Ну кроме меньшей гибкости конечно. - По кофе и спать
@cafesolo тем, что под андроид можно писать фуллстек на одном языке (Java), а под веб нет? Ну и сама классификация "под андроид" уже подразумевает фронтендерство, как мне кажется. - sёliv
@seliv верстка под андроид это не только Java. Там по факту тот же HTML/CSS только в другом формате. - По кофе и спать
@cafesolo оно скорее не отличается от клиент-сайдового жаваскрипта, который так же ходит в АПИ за данными, которые потом показывает. - адский хардлайн в засаде
@urquan ищем в Питере - http://spb.hh.ru/vacancy... - Igor Sereda
@junique Re: "А что говорят узкие специалисты про ваш js+html+css?" - хороший вопрос! По крайней мере мнение узкого спеца по html/css про нашу верстку было бы интересно послушать. Что касается JS (который я не плюсую к html/css специально), то там у нас есть достаточно интересные задачи для любого программиста, например, FRP подход для организации сложного поведения в UI или модель синхронизации данных с сервером и слияния параллельных изменений. - Igor Sereda
Итого! Попробую подсчитать голоса, насколько я понял ваши реплики. (Заранее извиняюсь если кого-то понял неправильно и причислил не к той группе.) - Igor Sereda
UPD: Скорее за универсалов - 7 (@aivanov, @shalapanova, @xekc, @beskov, @bopm, @ptzn, @emdin) - Igor Sereda
UPD: Скорее против универсалов - 7 (@feedetcontra, @moveyo, @exdeniz, @urquan, @sunalex, @n1313, @unicodefreak) - Igor Sereda
UPD: И так, и так / все зависит / нет склонности к определенному подходу - 7 (@alf, @larhat, @denistsyplyakov, @seliv, @ostolop, @junique, @cafesolo) - Igor Sereda
UPD: ничья :) - Igor Sereda
Меня не посчитали, я за универсалов, поэтому нифига не ничья :) - ptzn
@sereda А дайте посмотреть ваш html+css? - Пресная жизнь
@sereda, да я не то что против универсалов... Просто от каждого по возможностям. Я знаю, что уважаемая мной @junique не очень любит пиксели двигать, в то время как не менее уважаемый @seliv напротив. Эффективнее, если они будет делать то, что близко. - Астральные осьминожки
Я вот читаю и никак не пойму: какие пиксели вы все тут собрались двигать в responsive mobile first дизайне? - bopm
Зависит от проекта. Если у вас сайт на джанго и бутстрапе, разделение бессмысленно, т.к. действительно сложных задач не будет: архитектура однозначна, все техническое решается по мануалам, нетехническое - с аналитиком. Если у вас база на сотни таблиц и сложный фронтенд, требуются специалисты, т.к. ни один человек не может знать детально и особенности оптимизации гигабайтных индексов в постгресе и специфику браузеров на старых андроидах. - consumed
@bopm, ну что значит какие? В любом дизайне есть какие-то базовые соотношения размеров элементов, рамочки-фигамочки и ты пы, неважно, в чем все это измеряется. И UI должен максимально соответствовать задумке дизайнера, а не быть "по мотивам", как некоторые любят. А то там недолет, там перелет, на чуть, но на выходе какашко получается. - Астральные осьминожки
@sunalex то, что ты описываешь тут является классическим кейсом дизайнера-идиота, который не понимает media для которой дизайнит. Лечится административными методами. Для всего остального есть graceful degradation. - bopm
Задумка дизайнера my ass. Показал бы мне хоть кто-то задумку дизайнера, ради которой нужно было бы рисковать реализуя очередные костыли. - bopm
@bopm а я вижу кейс программиста-идиота, который ради красивого кода готов пожертвовать красивым UI-ем. Причем здесь понимание и непонимание media вообще? Я говорю про то, что если дизайнер задумал такое-то соотношение кегля заголовка к кеглю основного шрифта, такие-то _базовые_ соотношения отступов – это надо реализовать и точка. Не можешь – пойди обсуди и найди решение, которые устраивает всех. Ну или да, административными методами дизайнеров фтопку, тоже вариант. - Астральные осьминожки
Красивого кода все равно не будет, т.к. программист не знает CSS и у него там с первого дня помои. - consumed
Записывать меня в команду "скорее универсалов" неверно. Это все зависит от задачи и проекта. Готов поставить деньги, что специалист-бэкендер и специалист-фронтендер уделают двух универсалов на любом объеме задач, как по качеству, так и по скорости. А если денег на двух нет, то один универсал уделает любого узкого специалиста. Подразумеваю, конечно, полный комплект задач, равно бэк- и фронт-эндных. - Тринадцатый
@sunalex поздравляю вас, вам на пенсию пора. Возьмите любую свою верстку и потяните её за край. Когда приблизитесь к размеру мобильного устройства расскажете нам за отношения отступов. На всём протяжении маршрута. - bopm
@n1313 утрирую: если денег есть на четное количество сотрудников — нужно брать специалистов, если на нечетное — универсалов. (-; - По кофе и спать
@n1313 Могут уделать, но могут и не уделать, а послать менеджера в путешествие за правильной спецификацией, где жестко разделен фронтэнд и бэкэнд, а пока не принесет пинать балду. В некоторых случаях особенно интересная ситуация начинает складываться, когда надо локализовать какую-нибудь проблему или что-то ускорить, а где именно узкое место неизвестно. - Стадо овец
@bopm, лучше уж быть пенсионером, чем самоуверенным, но глухим молодчиком, не желающим попытаться вникнуть в то, что говорит собеседник. За сим дискуссию сворачиваю. - Астральные осьминожки
(facepalm) - bopm
«Возьмите любую свою верстку и потяните её за край. Когда приблизитесь к размеру мобильного устройства расскажете нам за отношения отступов.» — это растягивая вширь и ввысь с ноутбучного 1366x768 до смартфонных 1920x1080? :) - рептильный дом
Какая дивная беседа выходит. http://stackoverflow.com/questio... Прямо толпы людей открывающих для себя мир. - bopm
Ну, мне можно, я бэкендщик причём наш фронтенд не мобильный и вообще не наш, меня вся эта мобильная возня пока не касалась и, надеюсь, до смерти не коснётся. - рептильный дом
@sereda ну вообще-то если ты про убеждения, то запиши меня в центристы. Пусть расцветают сто цветов, пусть соперничают сто школ. - I'm on my way
@exdeniz Да пожалуйста, если в готовом виде - http://almworks.com/structu... - все что под синим хедером. Если будете копать, в CSS много от платформы (распознается по названию css ресурса) - Igor Sereda
Пересчитал голоса - теперь небольшой перевес в сторону специализации (отредактированные комменты выше) - Igor Sereda
Ещё бы ему не быть. Люди консервативны. - bopm
Интересный тред, спасибо. Мне кажется, все зависит от конкретного проекта. У нас, например, нет фронтенда в классическом понимании, так как весь клиент написан на js и в стеке, например, есть node.js middlewares. В этом случае бессмысленно держать людей, знающих только html+css+jquery. Было несколько таких и они постепенно ушли. Остались люди, которые умеют писать хороший клиентский код, html+css, но и понимают request/response/thread safety и могут что-то положить в redis, если надо. С другой стороны, в страшном сне нам не придет в голову лезть в сам API, там дикий python и летают запросы в postgres на две страницы. Но нам пришлось переучиваться на таких универсалистов на лету, я ужасно рад, что мне удалось найти таких людей. С точки зрения HR гораздо проще нанять специалистов, конечно. - Doppelherz Omega-3
Так что я за разумный универсализм. - Doppelherz Omega-3
Отмечу, кстати, что коллега @xekc писал уже про специализацию и двери, да и вообще был знатный тредик вот тут: http://friendfeed.com/corvalo... - I'm on my way
^ спасибо, хороший тред. жаль, комментов @piggymouse там уже нету. (подумал про бэкап фф ленты опять) - Igor Sereda
я за универсализм, whatever it means. понятно что полного универсализма не бывает. - самый большой взрыв