По данным «Яндекс.Работы» средняя зарплата программиста в Москве в 2015 году - 83 000 рублей
Изображение:
wackystuff
«Когда некий набор скиллов кажется большой стеной, отделяющей тебя от чего-то нужного, очень легко использовать всё это как отмазку - „ну я же этого не знаю, а если не знаю, то нефиг и соваться“». Как живой интерес, желание учиться и базовые знания в программировании помогают найти работу в новой сфере.
a-d-astra - о том, как устроиться на работу без большого опыта программирования:
В разговорах с немалым количеством людей порой часто доводится слышать - «ах, сколько вкусных вакансий в интернете, но там же надо знать HTML/английский/фотошоп/Java/ещё что, а я же не знаю»... существует на удивление расхожее мнение, что это же надо сначала себя замотивировать, Собраться, Пойти На Курсы (а то и на Высшее Образование!), долго и вдумчиво Серьёзно Заниматься, и лишь только потом, может быть, имеет смысл претендовать на какие-то junior / entry-level вакансии.
ИМХО - нет, нет, и ещё раз нет! Когда некий набор скиллов кажется большой стеной, отделяющей тебя от чего-то нужного, очень легко использовать всё это как отмазку - «ну я же этого не знаю, а если не знаю, то нефиг и соваться». Но практика показывает обратное - даже если чего-то где-то не знать, но быть в общем и целом толковым человеком (и уметь пользоваться гуглом и онлайн-словарями), то, реально, «наглость города берёт». Или даже не наглость... скорее, крепко сформированное намерение, готовность действовать и получать своё. А если есть хотя бы минимально топичный опыт по какой-то смежной,пусть и более низкого уровня, теме - таким тараном можно пробить не одну крепостную стену, я (в своё время устроившись на свою первую донельзя раздолбайскую IT-работу «с улицы» в 18 лет) гарантирую это!
Мир меняется слишком быстро, а человеческая жизнь слишком коротка, чтобы ждать становления «достойным» для чего бы то ни было месяцами, а то и годами. Всегда можно хотя бы попробовать что-то новое и интересное. Просто по приколу, да. А если выгорит - то вдруг за это ещё и заплатят? За спрос денег не берут же - не заплатят, так никто ничего не теряет. А заплатят - прекрасно! При таком раскладе просто грех не спросить и не понабиваться куда-нибудь хотя бы просто для опыта, правда? А параллельно обложиться книжками-лекциями и продолжать фтыкать. Sky is the limit, вот это всё.
Не буду судить «за всю сеть» - но у нас в IT вообще народ порой странно себя ведёт - о чём я вряд ли когда устану напоминать. :) Народ рассуждает о том, «какие языки сейчас надо учить» и «на какие аббревиатуры в резюме поиском найдётся больше вакансий». Учить? Языки? Что, правда, что ли? Я всегда думала, что учат в первую очередь семантику. Понятийный ряд. Будь то семантика различных парадигм программирования, или же семантика той предметной области, в которой хочется что-то разрабатывать (включая математический базис, конечно же). Онанизм на «вот это Java-программист, а это PHP-программист» - это что-то из области программного аутсорсинга, где продают несведущим заказчикам человекочасы заточенных под конкретные шаблонные копания отсюда и до обеда «людей-инструментов» (и я в своё время пообещала, что в эту сферу я больше ни ногой). А в местах, где есть хоть сколько-нибудь интересные задачи, всё же не на это смотрят, судя по моему опыту.
Как я попала туда, где работаю сейчас? Нет, меня, в отличие от 90% моих коллег, никто не «хантил», меня вообще не обязательно звать, я сама прихожу :) Потому что по ключевым словам из технологических аббревиатур хантить меня вряд ли получилось бы, у меня в резюме была куча всего намешана, причём большая часть этого - всякая помойка типа PHP-шных CMS/CMF (по принципу «когда очень нужны деньги, что бы ты ни любил, всё равно будешь писать на том, за что здесь и сейчас заплатят»). А тут... как я уже писала - просто увидела вакансию разработчика Ruby-проектов, с припиской «нам пофиг, кто вы, откуда вы, и насколько вызубрили какой-то конкретный API, нам важно, как вы умеете программировать». И я как раз тогда закончила несколько курсов на Курсере с весьма фундаментальной «матчастью» (добрав то, чего мне в принципе не могли дать в сильно провинциальных учебных заведениях моих родных краёв), а посему подумала - чем Чёрт не шутит?
Написала - «так и так, могу писать вообще на чём угодно, но сейчас поняла, что хочу побольше кодить на Ruby, ну нравится он мне». И на собеседовании как раз очень пригодилось всё то, что я учила - и теория алгоритмов (не знай я слов «динамическое программирование», не прошла бы), и функциональные идиомы с метапрограммированием, и даже на коленке написанные собственные проекты, просто чтобы подтвердить, что я что-то такое пробовала делать! При этом те задания, что на листочке, я вообще решала на очень «пиджин руби», а первые дни на работе практически с нуля осваивала во второй раз в жизни виденный Git! Вообще, как я тоже писала, я и по сей день немало языковых идиом подгугливаю по необходимости (и немало специфичных для какого-нибудь rspec вещей узнаю от коллег), а тогда и подавно напамять бы ничего не вспомнила (посему и пришла на собеседование с книжкой того самого господина Мацумото). Это не значит, что я вообще отказываюсь что-либо предметно-специфическое учить, отнюдь нет - наоборот, практически каждый день что-то новое узнаю! - но всё же, чем дальше, тем больше мне важно, что писать, нежели «с вызовом каких методов какого API писать».
Уже потом я узнала, что, оказывается, в организацию немалый конкурс и некислый отбор, и в интернетах полно гневных отзывов о здешних «фашистских» порядках отбора... но тогда-то я их не читала, и не знала, что я опять «лезу» куда-то не туда, потому что «какие твои шансы, да ещё и без диплома, там и не таких-то обламывали». Фигня всё. Как там... «вижу цель, не вижу препятствий»? Потому, собственно, на темы модных аббревиатур в резюме и не особо парюсь. При наличии хоть какой-то фундаментальной базы и, главное, достаточного упорства, любой мало-мальски «предметный» скилл можно освоить на достаточном для работы уровне в кратчайшие сроки. Сказала я, сначала покодив по работе на Ruby, потом переключившись на немного Javascript, потом таки успешно дорешав домашку на горячо ненавистном C++, и заканчивая день мелкокодингом для себя на Java. :)
Ну и не надо вот только мне рассказывать про «вот из-за таких, как ты, всё плохо, уровень падает, всё катится в пропасть». А вот нифига. Опять же, человек с достаточным упорством и наглостью - это человек в общем и целом более усердный (и внимательный по отношению к своим собственным ошибкам!), чем тот, кто навесил километровый потенциал Важности на то, чтобы Достаточно Соответствовать оказанной ему чести. Потому что у «соответствующего» потом зачастую просто не хватает сил расти дальше. Для него занятая вакансия - не средство для дальнейшего роста, а цель, на которую он долго целился, и вот сейчас уже достиг, а если достиг, то «сколько ж можно ждать и терпеть, надо теперь и для себя пожить». А когда понимаешь, что пространства для роста ещё ой как много, и каждый день надо непрерывно отслеживать, не спорол ли ты фигню, и чего ещё тебе не хватает - относиться к такому делу несерьёзно просто физически не выйдет.
В общем, не была б я сейчас на курсе всяких лекарств - выпила бы за нас, за храбрецов и наглецов! Прорвёмся, всех порвём и везде, куда не звали, влезем!
Обсудить в блоге автора
В комментариях началась дискуссия о самообразовании, языках и «матчасти» программирования:
todesser:
Все от потребностей зависит.
Кто хочет много зарабатывать - учится, остальные - ищут отмазки или ноют.
Как-то так
Ответить
wisegrey:
Да ладно?!
В своё время:
Зная из html только b, i и strike, фотошоп видев два раза в жизни, вполне себе с улицы устроился на должность «дизайнер веб сайта» (так в трудовой написали), на деле же контентщиком.
И ничё, быстренько надрочился с фотошопом работать, html подтянул, и всё заверте... =)
Недавно:
Решил менять сферу деятельности, податься в тестировщики. Прочитал книжку по тестированию и пошел ломиццо по вакансиям. Прям вообще с улицы мог довольно быстро устроиться, но вот идти на 35К как то не очень пёрло, поэтому искал более дорогую работу. И таки за пару месяцев нашел.
Не бывает у того кто не пытается.
Ответить
ratnos:
> Учить? Языки? Что, правда, что ли? Я всегда думала, что учат в первую очередь семантику. Понятийный ряд.
Всё-таки, кролик - это не только ценный мех. Программирование кроме семантики подразумевает знание встроенных функций языка, того, что на этом языке уже написано (популярные библиотеки) с их глюками, особенностей компиляторов опять же с их глюками, инструментов для работы с конкретным языком и конкретным окружением.
Ответить
a_d_astra:
Разумеется, какие-то такие мелочи полезно знать. Но не критично, при наличии хорошего reference book и доступа к сайтам вроде stackoverflow. А вот знание «матчасти» уже по stackoverflow не нагуглить, тут надо именно что учить.
Ответить
a_d_astra:
Ну вот хотя бы упомянутая выше линейная алгебра используется в крайне большом количестве предметных областей. Понимание производительности различных алгоритмов и структур данных благотворно влияет на решение всеразличных оптимизационных задач. Если не только о математике - знание функциональной парадигмы программирования сильно упрощает жизнь Ruby-разработчику (который перестаёт смотреть на свой код как на какую-то «чёрную магию»). Понимание асинхронности, многопоточности и механизмов синхронизации в наш век мультиядерности и распределённых систем вообще обязательно! В общем, примеров на любой вкус найдётся достаточно.
Ответить
ratnos:
в такой терминологии разница между «учить» и «подсматривать» - в объёмах нужных к усвоению знаний. И чем сильнее язык Б отличается от языка А (а эти отличия всегда есть, иначе это был бы один язык), тем объём нужной к усвоению информации больше, тем ближе граница к «учить».
Ответить
a_d_astra:
Такой вопрос: а чем, собственно, могут отличаться языки программирования? Как и языки человеческие - набором используемых в них грамматических конструкций. Базовых блоков. И по этим блокам языки - как машинные, так и человеческие - могут объединяться в определённые группы и семьи. И если понимаешь суть самого блока (например, то же функциональное программирование, или ООП, или там, не знаю, прямую работу с памятью, или событийную модель) - натянуть на этот каркас чисто синтаксические конструкции любой конкретной технологии, опять же, очень быстрое дело. Примерно как при знании английского и понимании... ну, например, глагольных времён в этой семье языков достаточно просто врубиться в немецкий.
Ответить
ratnos:
Сами языки отличаются синтаксисом и семантикой. Но для получения итоговой программы этого мало, т.к. для написания _рабочих_ программ помимо синтаксиса и семантики (реализуемой в рамках конкретного ЯП) нужно знать (в третий раз пишу):
- инструменты для работы с ЯП (IDE, средства отладки)
- компиляторы/интерпретаторы для данного ЯП с их особенностями
- встроенную в язык библиотеку и библиотеки, доступные в коммьюнити или официальном репозитории (типа PEAR, Rubygems, Quicklisp)
- способы взаимодействия программы с окружением и API (как заюзать шелл, сокет, cpu affinity, выделить память, запретить кеширование и т.д.). для низкоуровневых языков - как работать с железом.
Ответить
__out:
Никогда не работал в сфере Web, поэтому не вижу вообще никаких проблем ^_^.
Сейчас все наработки на этой ниве - просто результат продолжающегося фана. По фану начал делать странички, по фану поучился в художке с год, чтобы чуть получше начать делать дизайн, по фану пилил свою CMSку, впервые поставил себе WordPress тоже по фану для своего проекта, затем так же по фану начал подпиливать темы-пописывать плагины.
Собсна, сам веб - он примерно как большое поле с разбросанными золтом-брильянтами: ходи себе неспешно, собирай, радуйся. Кто не может и видит не брильянты, а опыт, библиотеки и «многанадазнать» - тот сам себе ******** и ковец счастья. Так щетаю, например.
Ответить