Много ходит споров о том, какой стоит изучить язык программирования, чтобы сделать карьеру в сфере разработки. Но я глубоко убежден, что языком обязательный набор знаний не ограничивается. К сожалению, не все это понимают.
В обсуждениях задач бизнес и разработчики говорят на разных языках.
С точки зрения бизнеса совершенно не важно, на каком языке будет решена их задача. Бизнес не думает, а возможно, даже не знает о java, go, ruby и других языках и технологиях. Для разработчиков здорово, конечно, когда масштабный и интересный проект начинается с нуля и технологический стек выбирается командой. Но в реальном мире гораздо чаще происходит не так.
Обычно в компании уже есть экспертиза в определенном стеке, от которой ИТ-руководству не хочется отказываться. Причины могут быть совершенно разные, от запрета на “зоопарк технологий” до личных предпочтений лиц принимающих решений. Встречаются и дополнительные факторы вроде потребности в интересных технологиях для команд, ради привлечения и удержания квалифицированных кадров.
ПОЧЕМУ НЕ НАДО СТАНОВИТЬСЯ ПРОГРАММИСТОМ? | 7 жестких но правдивых минусов о которых все молчат
Разработчики со своей стороны зачастую высказывают желание развиваться в определенном технологическом стеке. Подкрепляет это намерение большая разница между зарплатами для некоторых языков. Так и появляются люди, которые упорно живут, например, в рамках Java или Python (Go, Kotlin, Scala… список можно продолжать чуть ли не бесконечно) и даже Delphi, не пытаясь посмотреть, а что есть еще.
На мой взгляд, желание углубиться похвально. Но иногда “за деревьями теряется лес” — в процессе этого погружения специалист просто забывает о том, что для бизнеса технологии — лишь инструмент для решения своих задач. В итоге зашоренность на одном технологическом стеке в комплекте с врожденным перфекционизмом (“а давайте сделаем рефакторинг на полгода проекту, у которого нет серьезных планов по развитию, просто потому, что так будет красиво”) не самым лучшим образом отражаются на качестве принимаемых решений.
Моя точка зрения состоит в том, что конкретный язык программирования вторичен. Первичны общее понимание принципов разработки и умение решать проблемы бизнеса — знание подходов и паттернов, которые помогают систематизировать общую работу, опыт применения различных техник, в том числе командных. С таким багажом еще один язык, который нужен в данном конкретном проекте, освоить несложно. У меня перед глазами полно примеров того, как люди переквалифицируются на другие стеки в течении месяца — двух интенсивного обучения. Конечно, сложнее переключаться между языками с разными парадигмами, например с функциональных на объектно-ориентированные, но и здесь нет ничего невозможного, если человек не противится такому переключению “на уровне веры”.
Зная несколько языков, под каждую конкретную бизнес-задачу можно выбирать свой подход к решению — тот, что не просто подойдет, но будет оптимален в данном конкретном случае. И чем больше в арсенале разработчика база этих подходов (языков), тем получается шире взгляд на проблему и мотивированнее выбранный стек. Бизнесу, собственно, это и нужно — получать наиболее подходящее решение для своих задач.
Кто главнее: программист или бизнес?
А вот с глубоким знанием одного языка, но без способности решать бизнес-задачи специалист принесет пользу далеко не любой команде. Безусловно, в отдельных проектах глубокие знания “фишек” языка помогают команде в целом добиться большего перформанса. Но чаще член команды, знающий один язык, но не умеющий слушать бизнес, будет лишь тормозить коллег. И кстати, такой “ходячий справочник неочевидных возможностей” зачастую если и нужен в конкретной команде, то только один (делаем выводы о востребованности таких узких специалистов на рынке труда).
Умение решать бизнес-задачи — это на самом деле часть более глобальной сущности — всестороннего опыта работы. Получить его можно как с работодателем, так и в рамках домашних проектов. Правда, на мой взгляд, только бизнес-проекты (где есть заказчики, бюджеты, сроки) могут дать столь необходимую в подобных ситуациях обратную связь, оценивающую качество решения.
А именно это определяет глубину полученного опыта. С домашними проектами такой обратной связи получить просто не от кого: ты сам что-то делаешь и в определенный момент решаешь для себя, что сделал хорошо. На этом все заканчивается. Но когда проект реализуется для бизнеса, недостаточно проработанное решение будет отправлено на доработку,
потом еще и еще раз, если это необходимо. И по ходу этих итераций ты неизбежно изучишь несколько подходов к задаче — получишь понимание более высокого уровня.
Одна из составляющих умения решать бизнес-задачи — понимание этой самой задачи. И поскольку довольно часто российские разработчики участвуют в зарубежных проектах, для этого понимания необходимо знание английского языка. В этом вопросе не всегда можно положиться на бизнес-аналитика, поскольку хороших специалистов по этому направлению на рынке не хватает.
Лучше понять бизнес помогает погружение в какую-то отрасль. Когда ты не просто делаешь абстрактный модуль, принимающий, обрабатывающий и отправляющий неизвестному адресату пакеты данных, а реализуешь, допустим, часть сложного биллинга или банковской системы, где есть разные типы пользователей, стандарты и прочие особенности. Знание этих деталей очень ценно.
Такое погружение учит интересоваться тем, что происходит вокруг твоей части задачи. Это помогает искать оптимальное решение. Я знаю специалистов, которые никогда не пойдут работать на задачу, которая нужна непонятно для чего. А в некоторых направлениях развития бизнеса для разработчиков предусмотрено обязательное внутреннее обучение, потому что без погружения в принципе не получится эффективной работы.
В качестве небольшого дополнения для лучшего понимания проблем бизнеса я рекомендую посещать конференции, посвященные конкретной отрасли. Там спикеры делятся опытом, как они решили бизнес-проблему с помощью ИТ-технологий. Зачастую оттуда можно вынести полезную информацию о том, в каком направлении двигаться. Хотя, конечно, никто не требует в деталях повторять чужой опыт.
Я не говорю, что заботиться о бизнес-задачах должен каждый разработчик. Джун только входит в этот круг, на начальном этапе у него уходит слишком много времени на коммуникации с коллегами и изучение того, как решить конкретную проблему. Тут не до расширения кругозора.
Но вот начиная с миддла предыдущий опыт формирует понимание, с какой стороны подходить к задачам определенного типа. На этом этапе уже не возникает вопросов по экосистеме разработки — когда и какие статусы выставлять, как реагировать на код-ревью и т.п. Специалист начинает быстрее справляться даже с незнакомыми задачами — здесь-то самое время “подтянуть” бизнес-составляющую. Фактически сениор от миддла и отличается этим пониманием подходов к решению распространенных проблем бизнеса. И стремление к такому пониманию помогает быстрее перейти на следующий уровень.
Таким образом, я призываю ставить себе цели по развитию одновременно в двух направлениях. С одной стороны, учить языки, а с другой — набираться опыта в решении конкретных задач бизнеса. И в этом развитии надо соблюдать баланс, иначе найти свое место в мире сениоров будет довольно тяжело. А вот куда именно развиваться — в сторону архитектора, очень сильного разработчика или тимлида, — зависит уже от амбиций и личностных качеств (умения работать в команде, ответственности, коммуникабельности и т.п.) конкретного специалиста.
А что вы думаете по этому поводу?
Автор статьи: Сергей Марина
P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на наши страницы в VK, FB или Telegram-канал, чтобы узнавать обо всех наших публикациях и других новостях компании Maxilect.
- развитие программиста
- карьера программиста
- языки программирования
- навыки и умения
- навыки
- бизнес-задачи
Источник: habr.com
Накодить миллион. Программисты догоняют инвестбанкиров по уровню зарплат
Хотите зарабатывать «миллион долларов США»? Тогда срочно начинайте учить какой-нибудь язык программирования. Не верите, что программисты получают такие деньги? $983 000 — именно эта цифра, по данным сервиса Paysa.com, значится в графе максимальный годовой доход на позиции principal software development engineer в штаб-квартире Amazon в американском Сиэтле (средний размер — $470 000).
Совсем недавно такие доходы получали, пожалуй, только лишь на Wall Street. Что ж, пора констатировать: времена изменились. Программисты — это новые инвестбанкиры. И так думаю не только я.
Технологии правят миром. А технологические компании и их CEO — новые рок-звезды, быть причастным к которым хотят все больше молодых профессионалов. По данным Стэнфордской бизнес-школы, в технологические компании отправилось работать 33% выпускников MBA 2015-2016 годов, хотя еще в 2010-2011 годах этим компаниям удалось привлечь лишь 13% выпускников.
Доля финансовой отрасли за этот период снизилась — с 36% до 31% для класса 2015-2016 годов. В MIT Sloan School Amazon — второй по значимости наниматель выпускников MBA (23 человека из потока в 406 человек), он уступает только традиционной McKinsey Company и Boston Consulting Group в пятерку лидеров входит также Google.
В отрасль software/internet отправилось работать 23,9% выпускников MIT Sloan School против 4,7% в инвестбанкинге. Средняя базовая годовая зарплата первых — $120 000, что на $5000 меньше, чем у банкиров, но зато максимальная зарплата — $165 000 против $150 000. В этих цифрах не учитываются пакеты акций технологических компаний, которые они обычно предлагают сотрудникам в составе компенсационного пакета (на несколько десятков тысяч долларов или 50-100% базовой зарплаты), а ведь они могут еще и неплохо вырасти по прошествии нескольких лет, отмечает Михаил Наринский, старший технологический консультант нью-йоркского офиса Google (выпускник MBA MIT Sloan).
Вакансия software engineer, пожалуй, самая востребованная на данный момент в США. По данным портала Indeed.com, сейчас в стране открыто свыше 200 000 таких позиций. Колледжи в спешном порядке разворачивают бакалавриат по специальности computer science.
А Microsoft, например, регулярно проводит четырехмесячные оплачиваемые (из расчета $100 000 в год) учебные лагеря (boot camp), успешных выпускников которых принимает на работу. Профессия software developer занимает 13-е место в топ-25 лучших работ в США 2017 года в рейтинге U.S. News. По его данным, в этой сфере всего 2% безработных, средняя зарплата составляет $98 260, а количество открытых вакансий — 135 300.
«Инвестбанковская отрасль становится все менее привлекательной, а технологическая — с каждым годом расширяется, открывается все больше возможностей для карьерного роста и решения новых глобальных задач», — рассуждает Альберт Маликов, который променял успешную карьеру в российском офисе инвестбанка UBS на работу в финтех-команде голландского офиса Uber (получив перед этим MBA в MIT Sloan). По его словам, все больше банкиров переходят на работу в технологии, где они видят потенциал роста, возможность принести пользу обществу и применить свои лидерские навыки, что сложнее сделать в устоявшейся финансовой индустрии.
Финансовая индустрия сейчас и сама проходит технологическую революцию, открытых позиций становится все меньше, поэтому навыки программирования точно помогут выделиться среди конкурентов, особенно в тех фондах, что практикуют quantitiative research, считает Денис Толкачев, инвестиционный аналитик американской инвестгруппы Capital Group. На Wall Street, ввиду нескольких факторов (ужесточение регулирования, технологические инновации, большой наплыв таланта в начале 2000-х), очень сильно изменилась динамика спроса и предложения на профессионалов. Спрос упал, а предложение только после 2009 года начало медленно, но верно понижаться. Это привело к снижению оплаты труда, рассуждает Толкачев.
У программистов же возможностей стало намного больше: спрос постоянно растет в связи с структурными изменениями практически во всех индустриях (ритейл, банки идут в online), везде автоматизация, которая требует программирования. Например, в сегодняшнем автомобиле Ford GT 10 миллионов строчек программного кода — в пять раз больше, чем в боевом самолете Lockheed Martin F-22 Raptor 2005 года выпуска. Но специалистов по-прежнему не хватает, приходится рассчитывать на иммигрантов, пример тому — полнейший интернационал в Сан-Франциско и Кремниевой долине, отмечает Толкачев.
При этом, в программировании существует (возможно, пока что) довольно-таки средний по сравнению с Wall Street «потолок» зарплат/бонусов. И upside у программистов — это работать на будущий Facebook, Instagram или создавать своего «единорога». Но таких, кто объединяет в себе навыки программирования, бизнес-чутье и способность к управлению людьми, — единицы, и именно они сегодняшние рок-звезды в бизнес-мире, считает Толкачев.
Зарплаты программистов пока, конечно, не сопоставимы с инвестбанковскими (разве что в Америке и на топовых должностях), но в целом движение идет в этом направлении, согласен Сергей Булатов, директор английской рекрутинговой компании Regency Advisers. Зарплаты даже в $1 млн еще сравнительно редки, но по мере роста важности технологий в той же банковской отрасли, будут расти и заработки топовых программистов. «В каком-то смысле мы наблюдаем разнонаправленное движение доходов «финтеховцев» и инвестбанкиров, этот процесс начался не вчера и завершится не сегодня, но он идет все более явно — важность человеческого фактора падает, технологий — растет, увеличивается и value ее создателей», — отмечает Булатов. Конечно, банкиру еще не надо уметь кодить, но многие финтеховцы — финансисты только на 30%, а на 70% — уже программисты, и эта тенденция будет нарастать. В то же время, в банковской отрасли доходы после кризиса 2008 года в мире снизились на 30-50%, а в России упали в два-три раза, резюмирует Булатов.
Продвинутые девушки уже давно обратили внимание на технологические кадры — чего стоит недавний брак топ-модели Миранды Керр и CEO Snapchat Эвана Шпигеля, или союз теннисистки Серены Уильямс с сооснователем Reddit Алексисом Оганяном. Как сообщали американские СМИ, последний преподнес прославленной спортсменке помолвочное кольцо с 10-каратным бриллиантом за $2 млн.
Думаю, немало «охотниц за капиталами» следят и за аккаунтами основателя «ВКонтакте» и Telegram Павла Дурова, где то и дело появляются атрибуты его красивой жизни — вояж на частном самолете из Санкт-Петербурга в Венецию или чекин в парижском Ritz. «Почему-то мне кажется, что программисты должны быть менее «транзакционны» в отношениях с девушками, чем инвестбанкиры, у последних — профессиональная деформация», — комментирует в Facebook топ-менеджер Тинькофф Банк Георгий Чесаков.
Но кодинг — это тоже не гарантия бутерброда с икрой, предупреждает известный хедхантер Алена Владимирская в своем Facebook. Учитесь кодить только в приличных местах, работайте в самых передовых или восстребованых «стеках», имейте в багаже два активных языка, учитесь работать с открытым кодом и понимайте экономику, маркетинг, учет и управление людьми, советует она: «Тогда в вашей кодерской жизни будет хорошо долго».
Источник: www.forbes.ru
Бизнес или программирование что выбрать
Много ходит споров о том, какой стоит изучить язык программирования, чтобы сделать карьеру в сфере разработки. Но я глубоко убежден, что языком обязательный набор знаний не ограничивается. К сожалению, не все это понимают.
В обсуждениях задач бизнес и разработчики говорят на разных языках.
С точки зрения бизнеса совершенно не важно, на каком языке будет решена их задача. Бизнес не думает, а возможно, даже не знает о java, go, ruby и других языках и технологиях. Для разработчиков здорово, конечно, когда масштабный и интересный проект начинается с нуля и технологический стек выбирается командой. Но в реальном мире гораздо чаще происходит не так.
Обычно в компании уже есть экспертиза в определенном стеке, от которой ИТ-руководству не хочется отказываться. Причины могут быть совершенно разные, от запрета на “зоопарк технологий” до личных предпочтений лиц принимающих решений. Встречаются и дополнительные факторы вроде потребности в интересных технологиях для команд, ради привлечения и удержания квалифицированных кадров.
Разработчики со своей стороны зачастую высказывают желание развиваться в определенном технологическом стеке. Подкрепляет это намерение большая разница между зарплатами для некоторых языков. Так и появляются люди, которые упорно живут, например, в рамках Java или Python (Go, Kotlin, Scala… список можно продолжать чуть ли не бесконечно) и даже Delphi, не пытаясь посмотреть, а что есть еще.
На мой взгляд, желание углубиться похвально. Но иногда “за деревьями теряется лес” — в процессе этого погружения специалист просто забывает о том, что для бизнеса технологии — лишь инструмент для решения своих задач. В итоге зашоренность на одном технологическом стеке в комплекте с врожденным перфекционизмом (“а давайте сделаем рефакторинг на полгода проекту, у которого нет серьезных планов по развитию, просто потому, что так будет красиво”) не самым лучшим образом отражаются на качестве принимаемых решений.
Моя точка зрения состоит в том, что конкретный язык программирования вторичен. Первичны общее понимание принципов разработки и умение решать проблемы бизнеса — знание подходов и паттернов, которые помогают систематизировать общую работу, опыт применения различных техник, в том числе командных. С таким багажом еще один язык, который нужен в данном конкретном проекте, освоить несложно. У меня перед глазами полно примеров того, как люди переквалифицируются на другие стеки в течении месяца — двух интенсивного обучения. Конечно, сложнее переключаться между языками с разными парадигмами, например с функциональных на объектно-ориентированные, но и здесь нет ничего невозможного, если человек не противится такому переключению “на уровне веры”.
Зная несколько языков, под каждую конкретную бизнес-задачу можно выбирать свой подход к решению — тот, что не просто подойдет, но будет оптимален в данном конкретном случае. И чем больше в арсенале разработчика база этих подходов (языков), тем получается шире взгляд на проблему и мотивированнее выбранный стек. Бизнесу, собственно, это и нужно — получать наиболее подходящее решение для своих задач.
А вот с глубоким знанием одного языка, но без способности решать бизнес-задачи специалист принесет пользу далеко не любой команде. Безусловно, в отдельных проектах глубокие знания “фишек” языка помогают команде в целом добиться большего перформанса. Но чаще член команды, знающий один язык, но не умеющий слушать бизнес, будет лишь тормозить коллег. И кстати, такой “ходячий справочник неочевидных возможностей” зачастую если и нужен в конкретной команде, то только один (делаем выводы о востребованности таких узких специалистов на рынке труда).
Умение решать бизнес-задачи — это на самом деле часть более глобальной сущности — всестороннего опыта работы. Получить его можно как с работодателем, так и в рамках домашних проектов. Правда, на мой взгляд, только бизнес-проекты (где есть заказчики, бюджеты, сроки) могут дать столь необходимую в подобных ситуациях обратную связь, оценивающую качество решения.
А именно это определяет глубину полученного опыта. С домашними проектами такой обратной связи получить просто не от кого: ты сам что-то делаешь и в определенный момент решаешь для себя, что сделал хорошо. На этом все заканчивается. Но когда проект реализуется для бизнеса, недостаточно проработанное решение будет отправлено на доработку,
потом еще и еще раз, если это необходимо. И по ходу этих итераций ты неизбежно изучишь несколько подходов к задаче — получишь понимание более высокого уровня.
Источник: maxilect.ru