Специализация
Как вы могли заметить, мои компетенции не ограничены каким-то одним языком программирования, ОС, технологией или даже типом создаваемого ПО. Так дела обстоят далеко не у всех программистов, еще меньше добровольно к такому стремятся. Рассказываю про плюсы и минусы специализации.
Яркое пламя науки
Знаете как расшифровывается аббревиатура «PhD»?
A Doctor of Philosophy
Очень странный для отечественного уха термин, непонятный и неочевидный для сельского быдла непричастных, он тем не менее в полной мере отражает суть истинного знания — его целостную картину.
Такая «лычка» означает что человек овладел не просто какими-то там профессиональными навыками и знаниями, пусть и в большом объеме, а изучил и освоил некие закономерности и принципы работы вещей:
не «умею использовать молоток и гвозди», а «знаю как это работает»
Опустим сейчас известные перекосы в современном образовании, когда половина PhD оторвана от реальности и занимается х#итой теорией, при этом раз за разом на пик практической популярности вылезают проекты созданные любителями без четкого плана и необходимого опыта.
К сожалению эти перекосы часто закрывают от нас суть вещей:
для изучения принципа работы какого-то предмета недостаточно опыта его использования.
Водитель не сможет создать автомобиль с нуля, для этого нужен другой уровень компетенций, которые нельзя получить за время одной только езды на машине.
Даже если кататься каждый день по 8 часов пару десятков лет.
Да это легкий намек на необходимость изучения альтернативных ОС если вы вдруг захотите написать свою — опыта работы в одной только Windows будет недостаточно.
Чем дальше по пути усложнения технологии, тем глубже становится этот разрыв в знаниях:
Разумеется помимо самой возможности создания чего-то нового, есть еще вопрос качества создаваемой вещи и как бы вам не казалось обратное:
для улучшения качества вещи недостаточно одних только практических навыков, очень быстро все упрется в матчасть.
Поэтому не сможет обычная швея-мотористка даже с многолетним опытом пошить условно костюм «от Версаче», даже если ей выдать необходимые дорогостоящие материалы и оборудование — не хватит той самой «матчасти».
ИТ
А вот в ИТ-индустрии все обстоит немного не так:
приложив достаточное количество усилий, любой человек даже не имеющий профильного образования сможет достичь самых вершин мастерства.
Разумеется это займет не один десяток лет, конечно ему будут мешать обстоятельства, рутина и окружение, но это хотя-бы возможно.
Это даже не просто возможно — до недавнего времени все сколь-нибудь стоящие программисты были самоучками.
Поэтому в РФ возникла культура наплевательства на крутость ВУЗа и наличие формального обучения вообще:
например за все время моей трудовой деятельности в качестве наемного сотрудника у меня ни разу не попросили показать диплом. Даже в крупных компаниях.
Но вернемся к теме специализации.
Кручу гайку кручу болт
Начнем с пути жесткой специализации — когда человек фокусируется даже не на языке или технологии, а на решении одного конкретного вендора.
Три самых распростаненных примера в СНГ:
консультант SAP, программист 1С и разработчик Oracle.
Название должностей специально написаны так как их пишут рекрутеры, хотя и 1С и SAP и Oracle это компании с огромными линейками продуктов у каждой, но «по-умолчанию» подразумевается владение и опыт работы именно с их флагманскими продуктами.
Теоретически и согласно наставлениям самих вендоров, жизнь такого специалиста проста, легка и прекрасна:
процесс получения необходимых знаний строго формализован через сертификацию а все возложенные задачи специалист должен решать с помощью профильного решения вендора, в котором он столько лет упражняется.
На практике же оказывается что обойтись одними лишь профильными навыками невозможно и для эффективной работы нужна какая-то бытовая автоматизация на скриптах, нужно уметь работать с удаленными серверами а в идеале еще и развертывать тестовую среду продукта локально.
Поэтому любой достойный ораклист в обязательном порядке знает на бытовом уровне пару серьезных языков вроде Python/Perl и умеет работать с Linux хотя-бы удаленно.
Еще нужно уметь обходить недоработки продуктов вендора, как-то решать вопросы интеграции и обмена данными, словом делать очень много вещей далеко уходящих за воображаемый круг обязанностей узкого специалиста.
В итоге получается уже не жесткая специализация и профилирование а скорее такая «сфера интересов», с центром в виде продукта вендора.
Случается что компании, даже очень большие и известные.. исчезают.
Речь не обязательно о полном банкротстве, бывают слияния и поглощения, смена направления деятельности — вариантов много.
Чаще всего этот процесс происходит болезненно, с массовыми сокращениями и перетрясками в руководстве. Поэтому качество как выпускаемых продуктов так и их сопровождения катастрофически падает, что ведет к утрате интереса и массового оттока пользователей.
Как вы думаете, что случается в таких случаях со специалистами узкого профиля, которые занимались продуктами ушедшей компании?
Разумеется кто-то переучивается и находит новую работу в новой роли, но существенная часть таких узких специалистов уходит из индустрии навсегда.
На что есть несколько серьезных причин:
возраст, нежелание учиться заново да и общее разочарование от работы — не каждый спокойно переживет момент перелома, когда большая часть его профессиональных навыков вдруг оказывается никому не нужна.
Понимаю что будущее какого-нибудь 1С сейчас выглядит безоблачным, но стоит напомнить, что совсем недавно существовала компания Cray, продававшая самые мощные суперкомпьютеры на планете.
И компания SGI, когда-то занимавшая доминирующее положение в киноиндустрии и создававшая специализированные рабочие станции для видеомонтажа.
И компания Sun Microsystems, с целой линейкой специализированных продуктов уровня предприятия — как программных так и аппаратных.
Во всех случаях на рынке существовали и очень ценились узкие специалисты, выбравшие направлением своей работы какой-то один продукт одной из этих компаний — с соответствующей сертификацией, обучением и многолетним опытом.
Их уникальный, собираемый годами опыт оказался никому не нужным, потому что все эти замечательные но узкие специалисты оказались зависимы от одного конкретного продукта, который перестал существовать.
Также нетрудно догадаться, что создание с нуля коммерческого продукта уровня рабочей станции SGI или сервера с Solaris требует несколько иных навыков и компетенций, нежели умение таким продуктом пользоваться, пусть и подтвержденное крутыми сертификатами.
Но чтобы вы не думали что все совсем плохо и печально, расскажу о другой стороне медали бытия узкого специалиста — об оплате.
Дитя корпораций
Узкие специалисты выгодны для крупной компании, собственно помимо крупных компаний они не особо где и встречаются.
Деятельность такого специалиста строго формализирована и ограничена конкретным продуктом — ради этой формализации он и проходил сертификацию.
Поскольку деятельность формализована — она предсказуема, измеряема и поддается оценке, что чрезвычайно важно для большой компании.
Словом узкий специалист это такой заточенный под определенным углом винтик для большой корпоративной машины, пользование которым хорошо оплачивается, разумеется пока есть интерес к самому продукту вендора.
Для примера, обычный JavaEE-разработчик и JavaEE-разработчик на IBM Websphere стоили существенно разных денег, зарплатная вилка отличалась если не в два раза, то в полтора точно, причем как в РФ так и по миру.
Еще дороже когда-то стоил разработчик на Weblogic, особенно когда это еще был продукт компании Bea, до покупки Ораклом.
Все это разумеется в белую, официально, со всеми бонусами и плюшками большой компании — от кофе и печенек до оплаты перелетов и гостиниц.
Если узкому специалисту казалось что денег недостаточно, до недавнего времени был замечательный способ легкого заработка:
поехать от своей большой корпорации чего-то внедрять в глубокие #беня — Африка, Ближний Восток, Восточная Европа и так далее, вплоть до РФ которая в 90е считалась точно такой же жопой мира как и дикая Африка.
Как сейчас обстоят дела в полевом энтерпрайзе не знаю, но уверен — придумано что-то еще, позволяющее продолжать валять корпоративного дурака за хорошую плату.
Данила-мастер
Теперь расскажу о другом пути развития, который гарантированно приведет вас либо в дурку либо к успеху.
Суть его в том что вы изучаете не инструменты, а принципы работы и не воспринимаете даже очень крутой продукт или модную технологию как «слово божие» и истину в последней инстанции вселенских масштабов.
И разумеется никогда не останавливаетесь, поскольку это очень долгий процесс. Скажу сразу и откровенно:
вы не будете встречать одобрения, понимания или уважения от «обычных» специалистов очень долгое время, а когда ваш час придет — все достижения спишут на вашу «гениальность» и «природный дар».
Логическая связь между многолетней практикой и профессиональными достижениями напрочь отсутствует в голове обывателя — стоит об этом помнить.
Еще стоит знать, прежде чем лезть в такое, что работодатели, несмотря на все публичное кукареканье про гибкость мышления и дружелюбие — не одобряют самообучение сотрудников.
Вам будут мешать, будут запрещать заниматься опытами и экспериментами на рабочем месте и разумеется отказывать в переходе на изучаемые технологии, даже при необходимости для самой компании и без изменения должности.
Поэтому если вы например уже работаете как C# разработчик и изучаете Java — скорее всего вам придется уволиться с текущей работы чтобы профессионально заниматься Java. Даже если в компании есть своя Java-разработка.
Скромно умолчу про куда более радикальные варианты из серии: «фронтэнд→бекэнд→мобильная разработка» — такой переход в пределах одной компании на грани фантастики, даже в западном мире.
Так что путь изучения принципов работы да и по-сути любой выход за рамки «ремесла» это натуральная партизанщина на годы и десятилетия.
Окружающие точно вам рады не будут.
В чем профит
Если вы думали что столь мощное задрачивание сделает из вас «супермена» от разработки, которого без собеседований возьмут в Гугл то сразу огорчу:
процесс попадания в крутую компанию не имеет ничего общего с работой внутри, а большая часть уже работающих сотрудников легко может оказаться тупее вас.
Вообще навык организации стада идиотов в какую-то работающую структуру — самый важный в жизни, если научитесь то дальше жизнь станет прекрасной и удивительной, а вы быстро обнаружите себя на высоких должностях в крупной организации.
Умных людей много не бывает, умных и организованных в какую-то структуру — еще меньше, поэтому в 99% случаев по жизни вы будете иметь дело с идиотами различного масштаба.
Но вернемся к нашим мастерам и баранам.
Если становление специалистом широкого профиля не сделает вас «суперменом» в глазах нанимающей стороны и не приведет к пропорциональному от затрат на такое вечное обучение росту доходов — в чем же смысл?
Во-первых вы перестанете зависеть от «рынка» и его колебаний:
если вы на практике владеете всеми основными языками и технологиями разработки, знаете досконально весь производственный процесс — от идеи до результата, то шанс утери профессиональной актуальности равен нулю.
Проще говоря у вас всегда будет работа, при любых раскладах и в любые времена, чтобы не происходило вокруг.
Это дает спокойствие и уверенность в завтрашнем дне.
Во-вторых чем шире ваш кругозор и меньше темных пятен в знаниях — тем более крутой результат вы сможете получить.
Современный софт, несмотря на все большее усложнение по своей сути является все тем же «клиентским интерфейсом, приделанным к алгоритмам обработки данных» — как это было еще в 70е.
Так что для создания чего-то такого:
по прежнему нужны профи и только профи, хотя сопровождать и дорабатывать разумеется могут разработчики попроще.