Comments 67
Я думаю вы не правильно используете слово специализация. Т.е. если мы говорим о программисте со специализацией vs generalist (как по русски?)
Результат работы программиста это не код на определенном языке — это продукт. И когда люди говорят что у них есть специализация — они говорят что они могут создавать определенный тип продуктов.

У меня специализация например разработка под мобильные системы — я могу делать игры и user end приложения под j2me, brew, android, iphone и несколько еще экзотических вещей. И я буду сохранять свою специализацию — ибо я верю что в ближайние лет 15 мобильные системы будут только развиваться.

А на чем писать, после 10 лет опыта, мне откровенно пофиг. Хотя при прочим равным я предпочту знакомые вещи. Т.е. игры под айфон я буду писать на c++, а не на objC++. Причем замечу что, развиватся в плане изучения новых языков мне совсем не хочется, и просто ломает.
А вот новый тип продукта, новый тип платформы (сейчас плантшетники) это интересно. А то что там может быть другой язык — это мелочь, хоть и не приятная.

Специализация это хорошо. Быть generalist-ами могут люди с очень специфичным складом ума и характера.
Только не нужно забывать что работа программиста это не код, а продукт.
«Результат работы программиста это не код на определенном языке — это продукт»

Ой, ну это уже настоящий гон… Извиняюсь за выражение… Программный продукт — это не только собственно программа, а это еще и документация, тех. поддержка и т.д. Почитайте первую главу Брукса «Мифический человеко-месяц», там как раз об этом написано.

Другой пример — никакой программист не сможет создать такой продукт, как, например, операционная система. В разработке ОС принимают участие тысячи людей в разных странах мира. Поэтому я бы все же сказал, что вы не правы. Результат работы программиста — это именно код.
никакой программист не сможет создать такой продукт, как, например, операционная система

Linux, PhantomOS?
Наверное, вы меня не совсем поняли. Я имею ввиду, что ни один программист В ОДИНОЧКУ не сможет создать ОС как законченный программный продукт. И еще я не очень понял смысл ваших примеров.
>> никакой программист не сможет создать такой продукт, как, например, операционная система

Visopsys была написана всего одним программистом — Эндрю Маклафлином.
>«Результат работы программиста это не код на определенном языке — это продукт»
Ой, ну это уже настоящий гон… Извиняюсь за выражение… Программный продукт — это не только собственно программа, а это еще и документация, тех. поддержка и т.д.

Что тут гон? Человек сказал «продукт», а Вы почему-то решили, что он имеет в виду программу. Понятие «продукта» как раз и отличается от программы наличием документации, тех. поддержки и т.д.

По поводу того, что «Результат работы программиста — это именно код» — нифига подобного. Код без документации нафиг не нужен. Сам по себе код заказчику не нужен — нужно «чтобы работало». Код без уверенности в его работе и опыта разработки аналогичных систем тоже нафиг не надо — нет уверенности в работоспособности.
Если оперировать такими понятиями, я скорее склонен считать, что продукт — результат работы команды. Функциональность — результат работы программиста. То, что команда может состоять из одного человека сути дела не меняет. Вот Вы говорили про игры — а как же гейм-дизайн, графика, интерфейс?
UFO landed and left these words here
Мне кажется и любой сапожник тоже может легко научится ремонтировать другую обувь. Все зависит от него и его желания и стремления к совершенству.

Но вообще да, тем в чем-то правильная. Сам в институте лучше всего шарил(да и нравилось) Delphi, а сейчас надо работать на C#. Вот и совершенствую себя.
UFO landed and left these words here
Где-то будет, где-то не особо. Сишный switch дельфиста выбешивает. Библиотек учить придется немеряно. С другой стороны — многие компоненты (вроде девок) даже перехода особого не требуют, а навыки ООП нужны одинаково.
UFO landed and left these words here
Тогда вам (были) ближе Питон или Хаскель — там достаточно отступов.
Хороший программист зная несколько языков легко выучит и еще один.

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

Думаю лет через 30-40 все устаканиться. Технологические компании будут играть в длинную, а не на год-два.
UFO landed and left these words here
Можно провести аналогию с водителями, например. Нет такой профессии — «водитель Жигулей» или «водитель Газели». Есть таксисты, автогонщики, дальнобойщики, трактористы и т.д.
Суть профессии не в умении пользоваться какой-то определенной моделью инструмента (автомобиля), а в применении любой подходящей модели для выполнения определенных задач.
«Программируйте с использованием языка, а не на языке» (С) МакКонел
Хорошему программисту должно быть без разницы на чём писать, IMHO.
Хорошо так говорить, когда есть выбор. Когда ты сидишь один, нет ни строчки кода и ты думаешь «на каком бы языке это запрогать?» Но в жизни всё иначе. Работать приходится в коллективе, работать приходится с существующим кодом…
Ты смысл цитаты не понял, она как раз про то, что на любом языке можно программировать как надо(аля совершенный код), а не как диктуют ограничения языка.
Эх, если бы только язык… Еще ведь требуется знание библиотек, фреймворков, IDE и т.д.

По объему информации, сложности освоения, на мой взгляд, разница как бы не в несколько порядков будет, между языком и его рабочим окружением…
Да, перейти на новый фреймворк бывает тяжело, особенно если они имеют разные архитектуры с предыдущим фреймворком.
Также говорить о том, что перейти с языка на язык просто — это бред. Конечно если языки на одном фреймворке, то проблем не будет. Но переход например с C# на С++ приводит к безумному негодованию, в силу того, что в С++ придется многое делать руками, о чем в C# даже и не задумывались, а так же отстутствие многих классных языковых конструкций.
«Специалист подобен флюсу: полнота его одностороння» :)

А если серьезно, то правильно выше замечено, знание языка!=специализация, в конце-концов всё можно написать в бинарных кодах :) Специализация в программирование — это, по-моему, знание тонкостей и опыт разработки какого-то класса продуктов, вернее даже довольно узкого пересечения разных классов. Например разработка мобильных игровых приложений или высоконагруженных веб-приложений. Думаю, любой хороший программист при необходимости без проблем перейдёт с одного языка на другой (по крайней мере среди императивных), сменит API, сможет писать под другую среду выполнения и т. п. Но вот перейти от разработки однопользовательских десктопных приложений к распределённым веб-приложениям уже не так просто. Ну и, конечно, знание предметной области, чтобы говорить с заказчиками/потребителями на одном языке, ведь они редко «опускаются» до того, чтобы выдавать формализованные ТЗ или feature request.

Исходя из этого, по-моему, можно выделить «вечные» ниши, в которых кардинальных изменений не будет происходить очень долго. Будут появляться новые технологии и языки, сменяться интерфейсы, расширяться задачи и т. д., но сама ниша (или класс продуктов) останется и если не уподобляться «флюсу», а следить за новинками в своей (и смежных) областях, то менять специализацию вряд ли придётся, в крайнем случае можно плавно мигрировать, при этом даже не расставаясь с «родным» продуктом. Ну а то, что будут возникать новые ниши, так это неизбежно, тут уж каждый сам решает, что лучше синица в руках или журавль в небе.
Хороший сапожник не останется без работы из-за смены моды, потому что туфли тоже нужно будет ремонтировать, а умеющий отлично ремонтировать башмаки сможет сделать и туфли. Без работы хороший сапожник может остаться только если все будут ходить босиком.
Ну и по аналогии: у хорошего программиста есть мышление, понимание подходов и алгоритмов. При желании он за некоторое время сможет выучить синтаксис, семантику и специфику других языков. Без работы хороший программист может остаться только если умрет IT :)
В банковскую сферу пойти можно, там до сих пор, говорят, AS/400 и прочая заря компьютерной эры от IBM. Или МК программировать, там мейнстрим тоже прямо из 70х и не меняется.
«Всё, что мне бы хотелось донести, это то, что необходимо развиваться многомерно, обращая внимания на разные сферы, пытаться «унюхать» новые тренды и тенденции. А еще: не бояться изучать новое, стремиться к нему. Ну это, конечно, не про аудиторию Хабра, иначе зачем вы бы здесь находились? :)»
Зачем тогда доносить это именно на Хабре? :)

Многомерность и разнонаправленность оправданы, когда каждое направление более-менее развито.
А то часто выходит — «Мы все учились понемногу чему-нибудь и как-нибудь», а конкретного результата — ноль.

Разработчик «под всё подряд» скорее всего имеет опыт в чём-то одном (и то дай бог), а с остальными платформами «игрался на досуге». Так что он будет прямо по ходу пытаться вникать, что совсем не плохо, но не каждый работодатель может себе позволить учить девелопера за счёт простоя проекта.

Ещё сильно удивило «Хорошо программировать умеют индусы, их много.»
Тому, кто реально видел индуский код — и в голову не прийдёт поставить его рядом со словом «хорошо».
Их просто много :).
если эффективность работы программиста не зависит от знания языка («не важно, на чем пишет»), то зачем в требованиях на работу требуют знания определенных ЯП?
Ну так потому что зарплата высокая, претендентов будет много. Вот и надо порог выставить в виде знания языка принятого на предприятии.
Да для того чтобы понять что вы умеете, какими технологиями вы мыслите, и самое главное — это экономия времени на ваше обучение (зачем брать, обучать и ждать пока научится, когда есть тот который уже знаком с определенным языком)
Специализация — программирование, к примеру. Внутри неё как раз нужно и полезно расширять кругозор, осваивать новые языки. Не думаю, что в IT есть смысл заниматься совсем узкими задачами, не высовывая нос из своего угла.
Весьма хорошо. И ведь это касается не только программирования — абсолютно всех сфер деятельности.
Вы рекламируете свою компанию. На самом деле сапожник усовершенствовавшись в ремонте сапогов до очень высокого уровня получит массу свободного времени и т.к. ему это дело нравится, изучит кучу совместных дисциплин: напр, как лучше заготавливать кожу, какие крема лучше сочетаются с обувью такого-то типа итп. Потом откроет свое дело, наймет еще 1000 сапожников, итд.
Поддерживаю этого оратора. У хорошего специалиста будет много свободного времени, которое можно потратить на изучение чего-то нового, потому что он быстро будет справятся со своей основной работой.
Абсолютно согласен. Хотя как показывает практика не все специалисты продолжают расти, к сожалению.
А по моему — быстрая смена инструментов и технологий — это естественный отбор, который оставляет область здоровой, интересной и привлекательно отсеивая лишний шлак.

В быстрой горной реке вода чистая и сильно бурлит, а в болотном пруду все спокойно, но она грязная и воняет.
На самом деле люди, меняющие технологии раз в полгода — это головная боль компаний. Потому что раз в полгода эти люди начинают писать крайне хреново в силу изучения новой технлогии, а так же задалбывают всех своими «прикольными новыми фишками». Все же надо понимать, что заказчику нужны не технологии, а результат.
А что мешает отточить новую технологию не на «production» а в свободное время на не связанных с бизнесом проектах?
То, что вы все равно потом затрахаете коллег этой технолоигей, которая вообщем то и не нужна особо (бывают исключения).
Да уж, по себе могу сказать, Macromedia director и Flash скоро уйдут в историю… Ну, по крайней мере, так меня пугают PHP программисты :) их, в свою очередь, пугают программисты на Ruby и Python-е, которых в свою очередь…
«Узкие» спецы тоже нужны, масштабность потребностей смещается в разные стороны, а они все равно нужны…
Ну я не в теме, но что-то слышал о том, что C# более перспективен (чур не холиварить), хотя понятно — С++ над временем и пространством :)
Интернет рынок растет — значит есть спрос. Как только произойдет насыщение — будет упор на качество.
А этот период уже не за горами ))
По-моему это хорошая тенденция.
Если бы этого не было то у молодых сапожников не было бы шанса конкурировать со старым мастером, а его мастерство умерло бы вместе с ним.
Почему-то очень хочется процитировать Роберта Хайнлайна в этом топике:

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

Специализация удел насекомых
«Достаточно времени для любви, или Жизни Лазаруса Лонга» (1973).
Недавно перечитывал. Местами затянуто, но вцелом очень свежо и познавательно даже 37 лет спустя.
Такое впечатление, что в треде нет работающих людей. Если подходить к вопросу с реальности и не сферического вакуума, то вы обнаружите, что специализация в том или ином виде есть у каждого. И это легко выясняется при поиске работы. Попробуйте проработав несколько лет в вебе на VB поискать работу в JavaME или с Windows GUI C# перейти на *Nix C++. Видя ваше резюме вам будут давать должности согласно опыту и образованию — это и есть специализация.

Знание языков и готовность обучаться мало интересует работодателя или негативно отразиться на зарплате — получите должность стажёра. Поэтому развитие часто происходит однобоко. Никто не говорит, что открыв для себя VB в том же вебе вы не можете перейти на C#. Работодатель может и не заметить смены технологии (знаю из личного опыта). Но вот вряд ли вам дадут возможность поиграться с чем то совершенно другим.

iPhone, Android, Maemo — это реально найти сразу «в одном флаконе», а вот замените Android и Maemo на Symbian и Rim и у вас возникнут серъёзные проблемы с поиском разработчиков. Кстати, почти все знакомые программисты под iPhone работают и с Android.

Приятно знать, что есть компании — исключения готовые дать человеку время на обучение по ходу работы, но не стоит забывать, что больше компании — по правилам.
В реальной жизни разработчик сам должен держать руку на пульсе, и часть свободного времени ПОСТОЯННО (!) тратить на образование. Пусть оно ляжет в долгий ящик. Не страшно. Страшно — это когда человек засасывается в одну технологию, а потом 30..40 лет, и все, труба — его технология — это уже очень редкая область, рынка нет, ничего нет. Потому надо себя заставлять.
ЗЫ я 20 лет занимаюсь ИТ, постоянно что-то учу :)
Я тоже что то учу, но требуют опыт. В основной области он есть и он богат, а в том что учу для себя — нет. И работать за зарплату в 4 раза ниже, чтоб набрать опыт, я уже не могу — семья и всё такое. Так что, несмотря на пульс и руки, постоянно толкают в колею.
Ну и успокойтесь, вы делаете то, что нужно и все, что возможно.
Коснись что, накроется контора или придется сменить работодателя — да, будет ломка. Но недолго.
Тут в комментах правильно написали. Опыт — это опыт программирования. Я тоже уверен, что не сильно важно на чем. Важно как голова работает.
Довольно спорный подход. Постоянно что-то учить в расчете на то, что а вдруг когда-нибудь это пригодится. Сам же пишешь про 30-40 лет. За это время кто-то уйдет на пенсию, кто-то станет топ-манагером, кто-то начнет свой бизнес. Думаю, заниматься прогаммированием так долго по-любому сложно хотя бы психологически.

Кроме того что значит «учить». В школе мы тоже дофига всего учили и сейчас ничего из этого не помним. Для того чтобы учить какой-нибудь ЯП нужна постоянная практика на нём. А это возможно только на постоянной работе — если без фанатизма конечно :).
Причем это не только в ИТ так) Хороший дизайнер постоянно ищет новые приемы и подходы, менеджер учится новым техникам ораторского искусства и управления проектами итд
Мне кажется, XXI век можно охарактеризовать словами: Unique people who can learn and adapt quickly.
Мне кажется, знание синтаксиса и базовых возможностей того или иного языка — вопрос 1-2 месяцев, остальное зависит от уровня самого специалиста. Опытному хорошему специалту достаточно знать принципы, а знание языка — дело времени.
Тогда надо выбирать профессию в отраслях, которые будут вечно. Я про то, что люди всегда будут кушать, лечиться и умирать. :-)
не только сапожник. а и артель сапожников должна держать руку на пульсе.
если фирма заложник одной «поделки» (я не имею ввиду ничего плохого) — она тоже очень рискова…
Тут у людей по 10 специальностей и они бедные ночами не спят пытаясь выбрать из них одну, а у вас боязнь специализации… Вам действительно стоит изучать побольше вещей, потом, когда вы будете знать столько специальностей за изменениями которых невозможно уследить не посвятив этому все 24 часа в сутке, у вас начнётся ломка отчищения, я вам гарантирую…

«В большом пусть поют, а я буду оперировать. Вот и хорошо. И никаких разрух.» © Ф.Ф.Преображенский
Чувствую в этом посте замаскированную вакансию: «недавно открыли вакансию мобильного разработчика — запускаем проекты разработки мобильных приложений для iPhone, Android, Maemo. И на эти проекты под разные платформы мы хотим одного человека :)» Всё остальное — «обвязка»
Only those users with full accounts are able to leave comments. Log in, please.