# Специализация (или нет)

DevFeed: [Специализация (или нет)](<https://devfeed.tech/articles/article-30413.md>)

Original publisher: [Read original article](<https://www.mdubakov.com/posts/specialize/>)

Published: 2013-01-10T15:41:57Z

Content type: opinion

Language: ru

Sources: [Blog by Michael Dubakov](<https://devfeed.tech/sources/blog-by-michael-dubakov.md>)

Topics: [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [ui](<https://devfeed.tech/topics/ui.md>), [client](<https://devfeed.tech/topics/client.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [client](<https://devfeed.tech/tags/client.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [js](<https://devfeed.tech/tags/js.md>), [rest](<https://devfeed.tech/tags/rest.md>), [server](<https://devfeed.tech/tags/server.md>), [ui](<https://devfeed.tech/tags/ui.md>)

## AI overview

The article argues that strict specialization among development teams can create imbalances when work shifts toward cross-functional tasks. It recommends retaining a primary area of expertise while developing enough breadth to work across technologies and deliver features end to end.

## Source excerpt

Много лет назад мы брали на работу просто разработчиков. В основном очень хороших. Но не всегда. И я лично, и все, с кем я начинал, писали на любом языке. Нужно что-то сделать на .net -- делали. Нужно что-то сверстать -- верстали (ну ладно, в основном я). Нужно было что-то забабахать на javascript -- бабахали. О качестве решений пока говорить не будем. Потом как-то незаметно появилось четкое разделение: вот команда javascript, которая на server-side задачи ноль внимания. А вот команда .net, которая в client-side ни ногой (за редким исключением). И прием на работу четко разграничен. Вот вакансия .net разработчика, вот вакансия js разработчика, а вот вакансия ios разработчика. Особенно ярко это проявилось, когда мы начали делать tp3 с четким разделением зон ответственности. Весь UI исключительно на js, все взаимодействует через REST, ядро договаривается с командой js о форматах запроса/ответа и вперед. Начинать новый проект таким образом неплохо. Каждая команда думает о своей части, колбасит свою архитектуру, рефакторит и уверенно стремится к совершенству. Но вот возникает момент, когда архитектуры в целом готовы и сложных архитектурных задач как-то уже и мало. Но зато очень много прикладных задач, горизонтальных. И как-то получается, что задач на стороне UI дофига, а задач на стороне сервера мало. И тут специализация дает о себе знать во всей красе. Команды несбалансированны, UI разработчиков в 2 раза меньше. В результате половина команды ядра слоняется и просит дать им работу, так что приходится команду ядра нагружать не самыми важными задачами. А команда UI находится в постоянной запарке. Мое мнение простое: специализация не должна быть абсолютной. Понятно, что человек любит определенную технологию и проводит с ней больше времени. Но классный программист способен быстро войти в новую экосистему и эффективно писать на любом языке. Правило 80/20 считаю вполне может тут работать. Ты фокусируешься на своих компетенциях, но и заглядываешь в новые для тебя области. С точки