Истории как я стал программистом: Как я стал программистом. Путь от питерского бездомного до Senior Developer-а за 6 лет
Как я стал программистом. Путь от питерского бездомного до Senior Developer-а за 6 лет
Всем привет! Меня зовут Андрей, я работаю в отделе разработки продуктов Veeam Software.
В этом году исполняется 6 лет с того дня, как я «пришел» в программирование. К слову, случилось это стихийно, и на момент написания своего первого кода, у меня за плечами не было ни профильного образования, ни малейшего опыта. Сегодня же, я создаю продукт, признанный и уважаемый во всем мире.
Сегодня я хочу рассказать свою историю.
Итак, начну с момента, когда мне исполнился 21 год, я уволился из рядов доблестной российской армии и оказался на серых и холодных улицах Санкт-Петербурга. Осень, отсутствие жилья и денег активировали все клетки головного мозга для ответа на вопрос: «Что делать?».
Я человек, не лишенный амбиций и, будучи по факту бомжом, я планировал стать программистом. Я был уверен, что у меня все получится: тонкая грань между уверенностью и самоуверенностью. План был до боли прост: найти такое место работы, где будет крыша над головой, еда и книги как источник знаний для будущей профессии, и, соответственно, время, чтобы эти книги читать.
Охранник книжного склада (я же в культурной столице) — это та самая профессия, которая могла обеспечить все эти пункты. Через череду невероятных событий, совпадений и неудач я устраиваюсь на работу в офис одной очень известной в городе розничной сети по продаже книг, где находился и склад хранения.
Я стал там жить и работать: душ, компьютер секретаря, целый склад книг и три стула для сна. Так пролетели 5-6 месяцев. Я уже хорошо освоил на тот момент Visual Basic for Application и T-SQL и начал писать различные макросы автоматизации работы с Excel для секретаря. Я познакомился с ребятами из IT отдела, они мне выделили изолированную «песочницу» на виртуальной машине, куда я поставил Visual Studio и начал изучать уже более взрослые языки: C++ и C#. Не забывал я и о художественной литературе: за это время я успел существенно расширить свой кругозор в этой области. Благодаря этому, девушки из отдела персонала предложили мне устроиться продавцом-консультантом. Я согласился и стал работать днем продавцом на пл. Восстания, а ночью — охранником офиса. В таком режиме я проработал еще полгода, у меня появилась возможность снять жилье. В то же время, управляющая магазином предложила мне стать старшим продавцом. Я уволился из охранников и стал работать ночью в магазине. Должность ночного старшего продавца предполагает очень много рутинной работы по заполнению всяких файлов, отчетов, составления графиков рабочего времени.
Вот тут я в полной мере применил все полученные знания по программированию на практике и автоматизировал все, что было возможно автоматизировать. К слову, в книжном магазине на пл. Восстания до сих пор используют мои программы.
С коллегой на работе в том самом книжном магазине (я слева).
В магазине были некоторые отделы, где я откровенно не знал ассортимент и не мог найти нужную покупателю книгу. Поисковый терминал честно говорил, что книга есть в магазине, но на каком стеллаже и полке — было неизвестно. Я взялся за решение этой проблемы. В моем распоряжении были несколько древних, уже списанных ТСД (терминал сбора данных) и компьютер, который я стал использовать как сервер. Так я начал писать свое первое клиент-серверное приложение. Уже через месяц я смог продемонстрировать работу программы на одном из отделов магазина, чем вызвал интерес у руководства. Мне предложили продолжить развивать свое приложение уже по-взрослому: составить план проекта с целями, сроками и бюджетом. Так я стал руководителем проекта «Адресное хранение». За все это время я набил миллион шишек и изобрел множество велосипедов, но это был бесценный опыт и я смог запустить свой проект в крупных магазинах сети.
Проект только-только был запущен, а я начал думать, куда мне двигаться дальше. Возникло острое ощущение, что я начинаю топтаться на месте. Я не стал тянуть и написал заявление на увольнение, еще даже не составив резюме на новую работу. Я боялся, что сейчас насижу себе уютное место и станет страшно что-то менять, поэтому отрезал себе путь к отступлению.
Начал искать новую работу. Был на многих собеседованиях, где-то не нравился я, где-то не нравилось мне, но однажды на HH.ru наткнулся на вакансию в компании Veeam: требованиям я соответствовал. Я начал читать о компании, чем занимается и т.п. И понял, что совершенно не понимаю, о чем идет речь. Фраза «резервное копирование виртуальных машин и мониторинг виртуальных сред» повергла меня в шок. Но я отлично помнил выражение: «Программист — это человек, который решает совершенно непонятным вам способом проблемы, о существовании которых вы даже не подозревали». Значит, пора стать настоящим программистом. Я решил, во что бы то ни стало, работать в Veeam. В последствии выяснилось, что компания Veeam предоставляет решения, без которых просто не мыслима работа крупных компаний, гос. учреждений, банков и т.п.
Меня пригласили на интервью. От огромного желания получить работу, я заикался и делал глупые ошибки, но в меня поверили и взяли в команду UI. Видимо, меня спасли те самые «горящие глаза», о которых было написано в требованиях к вакансии.
Первые две недели работы я сидел с широко открытыми глазами: такого огромного и непонятного количества кода я не видел никогда. Своих коллег я воспринимал магами: они говорили и делали непонятные слова и вещи.
Это я в процессе работы.
«Сейчас я тебе все объясню», — сказал мне мой Team Lead, его рассказ был очень интересным и совершенно непонятным. Постепенно, день за днем, слова моих коллег стали приобретать смысл, я уже заканчивал свой первый «визард». На первых порах весь свой код я писал, используя широко известную практику «копипаста», Ctrl+C — Ctrl+V – 1я стадия программиста. Затем — «прозрение»: начинаешь использовать везде, где нужно, а чаще, где совершенно ненужно — «Software design patterns» — это очень опасная 2я стадия программиста: наступает, так называемый «паттерн головного мозга». Если остаться на второй стадии, то твой код будет понятен только тебе и только на момент написания, а коллегами ты будешь проклят. Как раз из второй стадии выдернула меня моя команда, вот тут я понял по-настоящему, что значит командная разработка. «Так писать не нужно» — это не аргумент, поэтому через шутки и примеры мне буквально на пальцах объяснили, где правильно, а где нет использовать сложные конструкции и шаблоны. Итак, через «грабли», «велосипеды» и помощь коллег наступает 3-я стадия: «код нужно писать так, чтобы он был понятен более одного дня не только автору, но и людям, которые работают с тобой».
Но, внезапно, оказывается, что код, который ты пишешь, должен делать ровно то, что от него ожидают пользователи. Наступает время знакомства с отделом «QA», т.е. с тестировщиками. Эти ребята просто «профи»: продукт знают «от и до», по логам могут найти самые неочевидные баги и дать им полное и понятное описание, но и не пропустят смещение на пиксель кнопки. Мы любим QA так, как могут любить разработчики тестировщиков :).
А если серьезно, то за три года работы в компании я еще ни разу не видел, чтобы разработчик и тестировщик не нашли общий язык. Спорим часто, но ведь только так рождается истина. В описании компании обещали дружный коллектив, есть подозрение, что не соврали.
Так, постепенно, я стал частью большой команды. Прошло еще немного времени. Продукт становился сложнее, росла и численность команды, над ним работающей.
В ноябре прошлого года мы выпускали очередную версию программы. Для меня это стало важным моментом, во многом определившим дальнейшую мою судьбу. Все начиналось так:
— Андрюх, прикрути в трей иконку для Endpoint (наш новый продукт для ноутбуков и настольных ПК).
— А, ОК, сегодня сделаю.
Закончилось полноценным Modern UI приложением с анимацией, графиком, автоматическим обновлением, уведомлениями и многим другим, через несколько месяцев.
Пришлось, конечно, попотеть, но все получилось. Меня отметили, и вот, я уже Senior Developer. И теперь уже ко мне на собеседования приходят разработчики, и теперь я сам ищу среди них те самые «горящие глаза», которые несколько лет назад увидели во мне самом.
В общем, мораль моей истории в том, что нужно ставить себе цель и уверенно к ней идти. И, что немаловажно, нужно правильно выбирать окружение, которое будет помогать достижению твоей цели (компанию для работы, людей вокруг себя). И, конечно, будут шишки (куда без них), заново изобретенные велосипеды, но будут и прозрения, и развитие, и новые горизонты.
Наш продукт растет и завоевывает признание все большего количества пользователей (что безмерно тешит мое самолюбие). На фоне этого развивается и компания в целом. Скоро планируется открытие нового офиса Veeam в Праге. Мне предложили переехать, я подумал (да-да, я не сразу стал паковать чемоданы) и согласился. Теперь вместе с другими девелоперами команды (и матерыми программерами, и новичками) планируем переезд, освоение новой локации, познание чешского пива, ну и, самое главное, новых интересных задач!
Как я стал программистом в 35 лет / Блог компании Inobitec / Хабр
Всё чаще и чаще встречаются примеры смены профессии, или скорее специализации, людьми в среднем возрасте. В школе мы мечтаем о профессии романтической или “великой”, в институт поступаем по моде или советам, а в итоге работаем там, куда взяли. Я не утверждаю, что так у всех, но у большинства — точно. И когда жизнь налаживается и всё стабильно, приходят сомнения о сделанном выборе профессии. Я говорю не о должности или работе, а именно о специализации — когда человек может назвать себя специалистом или же профессионалом.
Я точно также прошел этот путь и около двух лет назад задумался: а чего я хочу дальше, приносит ли мне удовольствие моя работа? И решил сменить специальность — стать программистом!
В этом рассказе я хочу поделиться своей историей, опытом пройденного пути, чтобы сделать этот путь легче для других. Буду стараться не использовать специализированную терминологию, чтобы история была понятна всем, кто решается сменить профессию.
Почему?
Профессию программиста я выбрал не случайно и даже не из-за того, что по слухам там много платят. Началось всё еще в третьем классе, когда у друга появилась приставка к телевизору с клавиатурой. Эта была игровая консоль, но в комплекте со специальным картриджем она превращалась в среду разработки простых игр-платформеров. Потом родители мне купили такую же домой и я “пропал”.
Школа, техникум и институт — везде я выбирал путь как можно ближе к компьютерам, к информационным технологиям. Я был уверен, что стану программистом, ну или системным администратором, как тогда говорили — “компьютерщиком”.
Но жизнь вносит свои корректировки — насущная проблема: без опыта на работу не берут, а опыта без работы не бывает. Главная ошибка на этом этапе — амбиции. Я был уверен в том, что я крутой профессионал и мне должны платить много, ну уж точно не меньше среднего по городу. Много предложений отклонял сам из-за малого оклада.
Полгода поисков работы связанной с компьютерами прошли безрезультатно. Когда деньги закончились совсем, пришлось идти туда, куда просто взяли с более менее нормальным заработком. Так я попал на завод по производству кабеля простым рабочим, где и делал карьеру следующие 12 лет.
Важно отметить, что увлечение компьютерами и программированием, мне помогало в работе: автоматизация своих рабочих процессов, затем внедрил базы данных в отделе, что упростило документооборот, и много прочих мелких примеров.
И вот в 33 года я начальник отдела, специалист по качеству кабельной продукции с огромным опытом и хорошим окладом. Но всё это не то, нет удовольствия, нет ощущения самоутверждения, радости от работы.
В то время семья крепко стояла на ногах в финансовом плане, можно было пару месяцев прожить только на зарплату жены и некоторые запасы. Тут закралась мысль бросить всё и воплотить свою мечту. Но мечтать на кухне и реально действовать — разные вещи.
Первым подталкивающим фактором стал пример моего друга, который бросил работу, взял семью и уехал куда-то на север работать на аэродром. Его мечта — самолеты. Через год мы встретились и он делился своими впечатлениями, радостью и говорил, что оно того стоит. Я завидовал его решимости, но сам сомневался.
Вторым важным событием стали кадровые изменения на заводе, где я работал. Произошла смена высшего руководства и все начальники отделов попали под жесткий контроль соответствия их новым требованиям и нормам. “Лафа закончилась”. Я понял, что надо много трудиться чтобы устоять и двигаться дальше: английский язык, повышение квалификации, больше работать — делать больше, чем от тебя ожидают.
В этот самый момент и пришла мысль: “Пришла пора опять много трудиться и учиться, так почему эти силы и время надо тратить на дело, которое не приносит удовольствия, если можно их потратить на мечту?”
Как?
Первым делом я “сжег мосты” — уволился. Это было радикально, но я понимал что не смогу одновременно развиваться по двум направлениям. Опыт первых поисков работы не прошел даром и я стал искать, лишь бы в трудовой книжке написали “программист”. Это работа на статус, на тот самый “опыт”, чтобы найти работу. Оклад тут не имел никакого значения.
Я где-то слышал, что когда ты идешь к цели, то цель начинает идти к тебе. Вот и мне повезло. Довольно быстро я устроился в маленькую компанию к индивидуальному предпринимателю по микро-сервисам. К условиям труда и финансам у меня вопросов не было, главное — запись в трудовой и начало накопления практического опыта. Я понимал, что выполняю простейшие задачи и гордо сказать “Я — Программист” не могу. Не было уверенности в моих способностях — это было лишь самое начало пути.
Поэтому я начал учиться. Учиться, учиться и ещё много много раз … Только так.
Я стал изучать спрос на программистов в моем городе. Смотрел объявления в газетах и на сайтах по поиску работы, изучал советы в Интернете по теме “Как пройти собеседование на программиста” и все прочие источники информации.
Надо соответствовать требованиям работодателей. Даже если эти требования вам не нравятся.
Английский язык
Очень быстро сформировался точный перечень необходимых навыков и знаний. Помимо специализированных программ и навыков, висел самый сложный для меня вопрос — английский язык. Он нужен везде! Забегая вперед, скажу, что в русском интернете информации нет — крохи, на сбор которых тратится очень много времени, да и то оказывается, что даже эти крохи уже устарели.
С изучением языка советую пробовать все методы, до которых дотянитесь. Я учил английский различными методами и заметил, что универсального нет. Разным людям помогают разные методы. Читайте книги на английском (лучше детские, проще разобраться), смотрите фильмы (с субтитрами и без), сходите на курсы, купите учебник, много видеозаписей с семинаров в интернете, различные приложения на смартфон. Когда попробуете всё, поймете, что подходит именно вам.
Мне лично очень помогли детские сказки и сериал “Улица сезам” в оригинале (только базовые выражения, многократное повторение фраз и слов), ещё хорошо по учебнику постигать язык. Не самоучитель, а именно школьные учебники. Я брал тетрадку и выполнял все задания. Но самое важное — заставлять себя искать информацию на английском. К примеру, книги по языкам программирования самых свежих и актуальных изданий всегда на английском. Пока появится перевод, выходит новое издание.
Сейчас мой уровень базовый, уровень “выживания” по одной из оценочных систем. Я свободно читаю техническую литературу, могу объясняться простыми фразами, но даже это уже огромное преимущество на рынке труда, когда в графе резюме в пункте о языках ставишь галочку “Английский”. Мой опыт показывает, что неопытный специалист со знанием английского проще найдёт работу, чем опытный программист без английского.
Инструментарий
В любой профессии есть набор инструментов, которыми обязательно надо владеть. Если кому-то надо уметь пользоваться бензопилой, то программисту надо уметь работать системами контроля версий, средой разработки (IDE) и ворохом вспомогательных утилит и программ. Надо не просто их все знать, надо уметь ими пользоваться. Если собеседование можно пройти на голой теории, то испытательный срок сразу покажет чего вы не знаете.
В объявлениях не всегда пишут о требованиях знаний инструментария, имеется в виду, что если ты программист, то git ты точно знаешь. Эти требования узнаются из советов о том, как пройти собеседование по специальности. В интернете много подобной информации, такие статьи часто встречаются на сайтах по поиску работы.
Я составил на листике список инструментов, установил их все на компьютер и пользовался только ими. Без учебы и литературы не обойтись и тут. Смена специальности — это огромное количество времени на самообразование.
Портфолио
Будущему работодателю надо было показать, на что я способен. Плюс, учить инструментарий надо практикой. Для программистов портфолио это github — сайт, на котором люди публикуют свои работы. Для любой специализации есть свои места публикации работ, на крайний случай есть социальные сети, где можно разместить результаты и получить отзывы. Что именно делать — не важно, главное делать постоянно и максимально качественно. Публикация своих работ заставляет стараться, чтобы не было стыдно. А это даже лучший мотиватор, чем деньги.
Было полезно посмотреть портфолио других людей и повторять. Не пользоваться банальным копированием, а делать свой продукт, пусть и повторяющий идею другого человека — это позволило получить опыт, добавить в портфолио новую свою работу и не тратить времени на творческий поиск.
Огромная удача найти в объявлениях тестовое задание. Если всё время мониторить предложения на рынке труда, то иногда попадаются задания от работодателей — это то что надо! Обычно эти задания содержат самую суть, даже если не несут осмысленной пользы как продукт. Даже если вы не собираетесь подавать своё резюме в эту фирму, то выполнить их задание и отправить надо обязательно. Практически всегда в ответ приходит оценка вашей работы, из которой будут понятны ваши слабые стороны, которые надо подтянуть.
Сертификаты и курсы
Без бумажки — мы букашки! Когда люди видят документ, подтверждающий, что вы это знаете или умеете, это производит наилучшее впечатление. Наличие сертификатов по специальности очень сильно помогает в поиске работы. Они бывают разного уровня доверия, но в любой профессии есть сертифицирующий орган, который ценится всеми. Согласитесь звучит шикарно: “Специалист сертифицированный корпорацией Майкрософт”.
Для себя я определил, что пойду за сертификатами после того, как пойму, что “могу”. Я немного почитал про сертификаты Майкрософт, 1С и различных государственных институтов. Принцип везде один: нужны деньги и знания. Либо сам сертификат стоит денег, либо обязательно перед сдачей нужно пройти специальные курсы, ну или сам допуск к сдаче экзамена стоит денег. Причем это ещё не значит, что сертификат вы получите.
Так что, на данный момент, я не имею специализированных сертификатов — ну это пока… в планах имеется.
А вот на курсы повышения квалификации я времени, сил и финансов не жалел. Сейчас уже хорошо развита дистанционная система обучения — вебинары. Большинство крупных институтов страны проводят курсы и семинары. Часто встречаются хорошие скидки или совсем бесплатные семинары. Я считаю главным преимуществом подобных занятий — возможность прямого общения с опытными и знающими людьми. Всегда можно задать вопросы, попросить оценить свою работу из портфолио. И в качестве вишенки на торте получить документ об окончании курсов. Это не сертификат конечно, но показывает работодателю ваше стремление к цели.
Самый важный документ — резюме
Я изучил множество материалов о том, как правильно составлять резюме. Смотрел чужие примеры, советовался с друзьями и знакомыми. Главным вопросом было, стоит ли писать в резюме мои знания, которые не относятся к программированию — к новой специализации. С одной стороны это то, что я умею — можно считать опытом, но с другой — это к делу не относится.
В итоге в своё резюме я включил всё, что у меня было. Весь трудовой опыт, все документы по всем курсам, включая обучение по безопасности труда на производственном предприятии. Перечислил все знания по компьютерам. Даже указал свои хобби и увлечения. И не прогадал!
Единственная моя ошибка, а вам совет на будущее: надо все ключевые, важные для специальности записи, продублировать коротко и без лишних слов в отдельном пункте вашего резюме (например, “навыки и умения”). Это был совет от менеджера по персоналу в первые же дни после моего приема на хорошую работу в крупную фирму. Надо чтобы работодатель мог сразу понять стоит ли изучать ваше резюме дальше или нет. Этот пункт желательно составлять коротко, аббревиатурами, ключевыми словами. А если хотите что-то пояснить, то это надо делать уже далее по тексту резюме.
Когда?
Как понять, что я готов? Когда начать действовать?
Спустя немногим более года после увольнения с предыдущей работы произошел застой. Стаж работы копился, навыки использования инструментария улучшались, опыт программирования на работе и в портфолио пополнялся, английский понемногу запоминался. Всё шло по плану, но внутри меня разгоралось нетерпение сделать следующий шаг, начать искать серьезную работу. А вместе с нетерпением появились и сомнения: я не готов, у меня не получится, зря я бросил старую работу… и всё в таком духе.
Чтобы не усугублять ситуацию с упадническими настроениями, я начал понемногу действовать: разместил резюме на одном сайте и просто ждал. С одной стороны не хватало уверенности в том, что меня вообще будут слушать на собеседовании и не выгонят с позором, а с другой, какой-то опыт уже есть и есть что показать.
Я видел по статистике на сайте, что мое резюме часто просматривают. Иногда некоторые фирмы заходят на мою страницу с резюме несколько раз. Как мне казалось, что первый раз посмотрел менеджер по подбору персонала, а во второй раз его показали начальнику. Я не знаю как оно было на самом деле, но появилось впечатление, что я заинтересовал людей, что люди совещаются, перечитывают, обсуждают. А это уже половина пути к победе!
Первый мой запрос на вакансию я отправил во всем известный крупный банк. Отдел по внутреннему контролю качества искал разработчика для автоматизации процесса документооборота. Запрос я делал особо не рассчитывая на успех, ставка была на то, что у меня есть опыт работы в отделе качества. Я испытал сильнейшее удивление и радость одновременно, когда меня позвали на собеседование!
На работу в банк меня не взяли, но я посмотрел на настоящее собеседование программиста с “первого ряда”. Я выполнил тестовые задания, пообщался с начальниками разных уровней. И самое главное, что я понял по результатам собеседования — это оценка моего уровня как программиста. Я стал понимать где я нахожусь, какой из меня программист, и чего я ещё не знаю. Это важнейшая информация! Помимо перечня недостающих знаний, она дала уверенность в том, что у меня получается. Медленно, но получается.
Когда вернулся домой с собеседования, я сразу исправил заголовок резюме на “стажер-программист”. Мой уровень не тянул на программиста, соответственно работодатели не совсем верно относились к моему резюме. А вот “стажер” вполне реальная оценка моих знаний в новой специальности.
Самый важный шаг
Визит в крупный банк дал необходимое понимание и уверенность в себе. Я перешел к активным действиям. Резюме разместил на нескольких ресурсах и начал активно рассылать запросы на рассмотрение моей кандидатуры в крупные и солидные организации города. Как говорится: “Хочешь стать лучшим, играй с лучшими”.
Одна вакансия меня заинтересовала больше всего. Организация разместила тестовое задание на сайте поиска работы. Задание было не очень сложным, но то, как оно было составлено, какие были указаны сроки на выполнение и какие я должен был использовать технологии… все указывало на добротный подход к делу.
Я выполнил задание, постарался сделать это раньше срока. И отправил.
Мне пришел отказ с подробным анализом написанного мною кода. Что я сделал хорошо, а что можно было сделать лучше и почему. Этот обстоятельный ответ очень заинтриговал и я понял, что хочу там работать. Я был готов сходить к ним в офис и спросить, что надо выучить, закончить или освоить, чтобы устроиться к ним на работу. Но сначала, я исправил свой код в соответствии с присланными мне замечаниями и отправил снова. На этот раз мне позвонили и пригласили на собеседование.
Самое сложное на собеседовании в 35 лет, это объяснить почему я бросил хорошую работу с хорошим заработком и начал всё с самого низа новой профессии. За своё резюме я не переживал, я мог рассказать по каждому указанному пункту, доказать что действительно знаю и умею, всё что там написано и на том уровне, как указал. А вот как я тут оказался и почему?
Как ни странно, этот вопрос был задан одним из последних, но на первом этапе. Я не стал ничего придумывать и рассказал как было, про мечту детства стать программистом и про мою цель: гордо заявить, что я специалист, я инженер-программист! Глупо, наверное, но это правда.
На следующем этапе меня оценивали настоящие программисты, в чье подчинение я впоследствии попал. Тут весь разговор был сугубо по специальности, по знаниям, умениям, навыкам работы с инструментарием. Я рассказывал, как бы решил задания, которые мне предлагали. Разговор был долгим и пристрастным. Потом неожиданное “Через два дня вам позвонят, до свидания.”
Обидно. Я привык, что эта фраза означает отказ. Но надежда была, уж очень всё делалось в этой организации по правилам и всегда держали слово. Тем не менее, я продолжил искать работу.
Позвонили мне точно в указанный срок и сказали, что есть для меня предложение. Стажировка — это отличный вариант для соискателя в моём положении. Три месяца мне платят зарплату и обучают на реальном проекте. Лучшего обучения придумать сложно, я согласился не раздумывая.
Это только начало
В первый же день стажировки мой непосредственный руководитель во время вводного инструктажа объяснил очень важную мысль, которой я делюсь со всеми, когда разговор заходит о смене специализации или теми, кто только начинает карьеру. Дословно я не записывал, но смысл запомнил хорошо:
Каждый программист развивается по трем направлениям: Программирование, Коммуникабельность, Жизненный личный опыт. Человека, который может писать хороший код найти не сложно. Коммуникабельность — черта характера, которую можно рассматривать как константу. А жизненный опыт — дефицит, так как большинство соискателей — это недавние студенты.
Получается, что меня взяли на работу с той идеей, что я обладаю опытом работы с реальными клиентами, над реальными проектами, имею много разносторонних знаний и уже готова платформа для функционирования в деловой среде. И есть смысл потратить время на моё обучение как программиста в той же мере, что и хорошего программиста обучать взаимодействию с бизнес-средой.
Для тех, кто задумался о смене работы, важной мыслью того разговора я бы выделил то, что сменить сферу деятельности ради мечты, это не только реально, но и востребовано на рынке труда.
Ну а для меня всё только начинается!
Сейчас я уже штатный инженер-программист в Инобитек, принимаю участие в разработке медицинских информационных систем. Но гордо называть себя Программистом мне пока рано. Ещё очень многое надо изучить, чтобы самостоятельно разрабатывать программное обеспечение.
Правильно говорят люди, что работа должна нравиться. Ради этого стоит “рыть, потеть и терпеть!”
Не бойтесь пробовать, или Как я стала программистом в возрасте далеко за 18
Когда вы слышите словосочетание «младший разработчик», то наверняка представляете молодого парня на последних курсах вуза или недавнего выпускника — но уж никак не 30-летнюю женщину с маленьким ребёнком, которая до этого несколько лет преподавала в вузе и от разработки была так же далека, как Майя Плисецкая от тяжёлой атлетики. Только ленивый не задавал мне вопросы: «Почему ушла с позиции доцента на младшего разработчика?», «А как ты училась программировать?», «Как искала работу?», «С чего вдруг ты вообще решила стать программистом?» и т.д. и т.п.
Вот на них я и попытаюсь ответить в этом посте.
ИТ-мир чарующе прекрасен. Часто это хорошие условия работы, интересные проекты, возможность удаленной работы, соцпакет, friendly офисы с теннисными столами, Xbox… да кому я рассказываю — вы и так все знаете:). В момент резкого скачка доллара и евро интернет просто кишел мемчиками: «Ищу симпатичного программиста, получающего в евро». — «Ты курс видела? Симпатичного не обязательно!»))
Если у вас прекрасная карьера, которая вас устраивает — отлично! Но если вы думаете, что надо решительно что-то менять и вас, как и меня, манит разработка, перейти к тем самым «решительным действиям» бывает очень непросто. Особенно когда возраст давно перевалил за 18 и вы не то что не заканчивали вуз по специальности программирование, но и вообще с трудом вспоминаете, в каком же году его закончили… В голове то и дело маячит что-то типа «ну это только для очень умных», «это только для мальчиков», «в 28–30 как-то поздно начинать программировать», «это уже не моя сказка»…
С чего все началось?
Наворачивая очередной круг с детской коляской в небольшом скверике около метро и параллельно думая о смысле жизни, вселенной и вообще, я неожиданно для себя поняла, что не хочу, совсем не хочу возвращаться на свою работу… Не то чтобы работа в вузе мне совсем не нравилась — в ней, как и в любой работе, есть свои плюсы и минусы. Но всегда присутствовала мысль, что это не мое. Да, мне нравилось читать лекции, но не настолько, чтобы зарабатывать этим на жизнь. Это как торт: раз в неделю съесть приятно, но на завтрак, обед и ужин — уже чересчур.
Так чем же мне заняться? «Финансовая математика», — подумала я. Все-таки математику в какой-то мере я знаю — к.ф.-м.н. как-никак. Открыла онлайн-лекции по соответствующей теме: спокойным монотонным голосом профессор каждой производной давал своё собственное имя и продолжал вводить все новые и новые термины… где-то на пятнадцатом я поняла, что вот-вот засну и что финансовая математика, хоть и очень популярная и, наверное, интересная тема, но все-таки пусть ей занимается кто-то другой.
Как училась?
В какой-то момент я наткнулась на курс из серии «программирование для чайников» от университета Duke (вообще для таких «любителей» технической литературы, как я, онлайн-курсы — просто находка). Не буду лукавить, в университете я думала, не заняться ли разработкой. Но тогда все мои начинания ограничились походом в библиотеку: взяла Страуструпа, принесла домой — и аккуратно поставила на полку.
«Ну ладно, — подумала я теперь, — послушаем это программирование для чайников хотя бы для тренировки английского». И тут меня затянуло. С тем же интересом и вдохновением, с которым моя дочь теперь смотрит «Фиксиков», я смотрела лекции этого курса. Вроде бы знакомые вещи — те же переводы цветной фотографии в черно-белую, автонабор текста и многие другие — открылись мне с новой стороны, со стороны разработчика.
Потом я попросила в качестве подарка на День рождения специализацию на Coursera по Java OOP, чем немного удивила своих близких, но, как говорится, чем бы дитя ни тешилось.
Вообще, если вам кажется, что у меня в декрете было как бы дофига свободного времени, а вы сейчас работаете и вам точно не до освоения новой профессии, то спешу вас огорчить (или обрадовать). Декретный отпуск, хоть и называется отпуском, таковым вовсе не является. Тем более, что я не отношусь к разряду суперженщин, одной рукой помешивающих суп на плите, второй — решающих практические задачи по программированию, третьей кормя малыша, а четвертой вытирая за ним «сюрпризы». Конечно, мне довольно много помогали близкие, занимаясь малышом, пока я разбиралась с Java, за что им большое спасибо! Но иногда приходилось доделывать что-то по курсам, когда вся семья уже смотрела как минимум третий сон.
Вообще это была небыстрая история. На курсы для beginner и intermediate по Java у меня ушло в общей сложности года 1,5. Бывали недели и месяцы, когда не удавалось послушать ни одной лекции. В такие моменты был необычайный соблазн сойти с дистанции и все бросить. Но то ли любовь к программированию (и я очень надеюсь, что именно она), то ли жаба, душившая уже оплаченными курсами, а может и все вместе, возвращали меня обратно в строй. В остальном само обучение шло довольно хорошо: я успешно справлялась со всеми задачами и с момента окончания специализации вплоть до первого собеседования считала, что очень даже неплохо знаю Java)).
Как я искала и нашла работу?
Ну тут довольно банально, скажете вы: резюме на hh, откликаешься на вакансии и ходишь по собеседованиям. Но начальных позиций не так много, да и на собеседованиях часто выясняется, что одного Java уже недостаточно, нужно знать по крайней мере git, maven и еще много страшных слов)). На общем фоне очень уж привлекательной была вакансия-стажировка от «Инфосистемы Джет» для недавних выпускников, в которой говорилось: если вы пройдете отборочное тестирование, мы вас много чему научим. И, хотя мой год выпуска не подходил по формальным критериям, я все-таки решила отправить своё резюме, а там будь что будет.
А было так: сначала тест на теорию, потом практические задачи. Если все успешно, то приглашают на 2-недельный интенсив по Java. Если и после этого тоже все хорошо, остаёшься в компании на стажировку. Программа интенсива была интересная и насыщенная. Мы узнали много нового как про Javа, так и про maven и git.
Теоретическая часть гармонично переплеталась с практическими заданиями, которые проверяла целая команда разработчиков, давая feedback, что стоит улучшить и почему. Последние два дня нас разбили на группы, и мы работали над финальным проектом, который нужно было успеть сделать в срок и защитить, то есть объяснить, почему было выбрано именно такое решение поставленной задачи. Еще понравилось, что после интенсива, когда осталась на стажировку, не было ощущения «одын, совсем одын», т.к. ещё несколько человек прошли вместе со мной.
В компании я работаю около 1,5 лет и в общем-то продолжаю учиться, но уже на более продвинутых курсах. Не открою для вас Америку, если скажу, что в целом разработчикам приходится постоянно учиться, но тем наша профессия и хороша: изучение нового способствует формированию новых нейронных связей в мозге, что, кстати, является профилактикой многих старческих заболеваний (если тема про мозг и обучение вам интересна, рекомендую курсы Барбары Окли на Coursera:))
Вместо заключения
Конечно я не призываю всех срочно бросать свою работу и идти в разработчики. Может быть, вы уже давно разработчик, а вас тянет в менеджмент или куда-то ещё. Или вы мама в декрете и сомневаетесь, возвращаться ли в профессию. Или вы выбрали специальность по принципу «друг тоже туда пошёл» или «родители настояли», а для вас интересно что-то совершенно другое…
Попробуйте! Может, оно и не станет для вас новой профессией и вы поймёте, что прежняя вам куда ближе. Но уж точно это избавит вас от сожалений об упущенных возможностях. Наверное, сейчас одно из лучших времен в истории, когда можно попробовать и научится чему-то новому, даже не выходя из дома. И в этом тоже заслуга ИТ-индустрии, в которой мы с вами работаем 🙂
Мадина Дерягина, младший разработчик «Инфосистемы Джет»
P.S.: кстати, если вы хотите узнать о том, как можно быстро попасть в ИТ, читайте интервью Александра Садыкова о роде занятий, обучении и росте функциональных тестировщиков в нашей компании. А еще советую периодически проверять раздел Стажировки на сайте «Инфосистемы Джет».
История одного программиста / Хабр
Я программист, 24 года. Рост 170. Параметры 90-60-90. Хочу поделиться опытом с институтских времен. На что нужно обращать внимание в процессе обучения (исходя из моих наблюдений), что может пригодиться в будущем. Расскажу, в какие моменты и какой прогресс наблюдался. Как не опускать руки, если скучно учиться, и в чем искать мотивацию.
У меня в школе информатика была только в 10 и 11-м классах. Изучали мы язык QBasic. Писали программы не более, чем на 30 строк. На фоне остальных одноклассников вроде получалось неплохо справляться с заданиями, да и окружающие говорили, что «программисты сейчас нужны». Когда я шла учиться на программиста, не представляла вообще, что это такое.
На первых трех курсах у меня всё ещё не было полного понимания и представления, чем буду заниматься. На первом и втором курсе были семестры с изучением языка С. Все остальные предметы заключались в ознакомлении с областями, которые помогут в программировании. Некоторые предметы отдельные товарищи не дооценивали, а зря.
Проучившись в институте, осознаешь важность следующих вещей
Coding style
На первых двух курсах мои программы представляли из себя, не побоюсь слова, говнокод (когда я открывала старые программы на более старших курсах, то я сама была в шоке от оформления кода). Я видела на одной строке несколько вызываемых функций, операторы, и всё это могло писаться без пробела. С первого по четвертый курс преподы в основном только требовали от нас знания языка, применение изученных алгоритмов в решении задачи. Нам даже ничего не говорили о стиле программирования, а что студенту «работает же – не трогай». Всё изменилось с середины четвёртого курса. Когда мы более менее справлялись с поставленными задачами, преподаватели стали делать замечания по оформлению кода. У меня даже есть отчеты, исчерканные, со стрелочками и рекомендациями для изменения расположения кусков кода. «Чистота» кода на первых трех курсах у меня была почти на нуле. Но потом ты стараешься писать код должным образом, чтоб не стыдно было показать другим.
Так что, не бойтесь показывать свой код более опытным программистам, вашим одногруппникам, не бойтесь критики, ведь лучше раньше осознать свои ошибки и научиться писать читабельный, грамотный код. Участвуйте в открытых проектах или хотя бы посмотрите, как пишут программы, например, на github. К тому же сейчас есть книги с рекомендациями по стилю написания кода, что может помочь привить «чистоту кода» уже на начальных стадиях обучения.
Сделай свою жизнь проще – используй системы контроля версий
Я впервые познакомилась с системами контроля версий на пятом курсе. И очень благодарна преподу, который заставлял нас вести разработку лабораторных работ в git. Познав все преимущества и гибкость распределенных систем, имея опыт работы с SVN и git, я отдаю предпочтение git. И даже не смущает работа в git bash, хотя существуют и графические приложения для работы Git-ом.
Нужно изучать матчасть
Многие не берут в счет некоторые предметы. Мол скучно, да и вряд ли мне это пригодится. Как показывает практика, это ещё аукнется. У большинства моих знакомых на собеседовании спрашивали именно то, что они упускали. Вот несколько вещей, знание которых мне пригодилось и не раз.
Регулярные выражения
У нас был целый предмет, на котором можно было оттачивать навыки по составлению регэкспов – теория компиляторов. Сначала мы писали простенькие лексические анализаторы, позже стали писать программки и для синтаксического разбора. После знакомства с регэкспами можно увидеть, что они нужны и для парсинга файлов, и для проверки корректности данных (тот же IP-адрес проверить). И да, любят давать на собеседованиях задания, связанные с регулярными выражениями.
Архитектура ЭВМ
Как же работает процессор, как выполняются вычисления, как работает память, обрабатываются прерывания и много другое. Знание о представлении чисел в машине, о процессе выполнения операций с числами в дополнительном/обратном коде однозначно пригодится любому программисту, работающему с компьютером или ПЛИС, микроконтроллером и т.п.
Знание о работе ОС
Работа с потоками, использование механизмов синхронизации, администрирование и др. На одном из собеседований спрашивали, что из себя представляет мьютекс. Кто-то из-за непонимания сути вопроса начнет рассказывать о lock() и unlock() функциях для работы с мьютексом. Но на самом деле нужно донести, что этот механизм синхронизации представляет из себя пассивное ожидание. В зависимости от того, по какому направлению вы собираетесь работать, определяется жизненная необходимость этого знания. Но и вообще знать и помнить о подобных вещах не повредит.
При изучении работы ОС и драйверов, впервые собирали ядро Linux, хотя раньше для меня это было чем-то загадочным.
Аппаратные языки программирования
Полезно для общего развития. Но пока в работе не особо пригодилось. Хотя нет: когда на лекции нам начали рассказывать об упакованных и неупакованных структурах, я задумалась, а есть ли такое в языке С. Да, я не знала, что есть такое понятие, как битовые поля.
Теория автоматов
И вот эта теория может пригодиться на практике. Например, если у вас какое-то длинное выражение в if, его скорее всего можно упростить с помощью карт Карно или другого метода минимизации булевой функции.
Информационная безопасность
Мне пригодились знания о расчете CRC-кодов для контроля целостности передаваемой информации при обмене. У нас была даже целая лекция о том, что это такое и как сделать правильный выбор полинома.
Сети
Знакомство с различными протоколами, с работой и видами конфигураций сети оказалось полезным.
Это лишь небольшая часть того, что может пригодиться вам в дальнейшей работе (высшая математика не исключение). Это небольшой список знаний, который активно используется мной. Да, много в институте нам рассказывали вскользь, просто для ознакомления, но благодаря этой базе, знаешь, куда копать, когда нужно решить возникшую задачу. И поскольку на последних двух курсах у нас было много предметов по специальности, значительный прогресс и применение знаний на практике приходятся именно на последние годы обучения.
Отсутствие мотивации может отбить желание учиться
Неоднократно сейчас слышу от более молодых сотрудников: «Доучился уже до вротого(n-го) курса, а скучные лекции, занятия, преподы только желание убивают». Мне в этом плане, наверное, повезло немного больше. Было у нас несколько преподавателей (они еще работают в других компаниях), смотря на которых ты думаешь: «Хочу быть таким же». Их наставления, истории из жизни вдохновляли. Благодаря таким людям у студентов появляется огонь в глазах.
Чтобы внушить чувства другим, вы сами должны быть поглощены ими. Чтобы вызвать слезы у других, вы сами должны заплакать. Чтобы убедить других, вы сами должны верить.
(Уинстон Черчилль)
Если в институте ваши преподы неинтересно читают лекции по бумажке, не дают интересные задания для лабораторных занятий, то не надо бросать программирование (у меня есть парочка знакомых, которые действительно бросили программирование), не успев начать. Сейчас многие компании проводят бесплатные семинары и предоставляют бесплатное обучение/стажировку летом. Поверьте, пообщавшись с опытными программистами, почувствуете себя иначе. К тому же после стажировки у вас появляется возможность остаться там работать.
Что бы сказать напоследок
Несмотря на то, что большую часть знаний программист получает из самообучения, получаемые знания в институте могут быть полезны. Никогда не знаешь, что тебе может пригодиться в будущем. Так что не нужно столь скептически относиться к посещаемым лекциям, семинарским и лабораторным заданиям. Если вы хотите быть программистом, вы им станете, но придется для этого попотеть и не сдаваться при встрече с трудностями.
История начинающего программиста: olegmakarenko.ru — LiveJournal
Меня регулярно спрашивают, как стать программистом. Ответить на этот вопрос мне одновременно и просто и сложно. Просто – так как я сам работал программистом и до сих пор изредка пишу какой-то код лично, и так как я постоянно с программистами работаю. Сложно – так как первые свои программы я писал ещё при Горбачёве, и все сложности тех лет успели уже выветриться как следует из моей памяти.
Сейчас однако мне прислал письмо начинающий программист, который впервые начал осваивать искусство выдачи ценных указаний твердолобым компьютерам. В письме изложена история его успеха – автор письма в довольно короткий срок переквалифицировался из аниматоров в программисты, и зарабатывает сейчас деньги написанием достаточно продвинутых программ.
Отмечу также важный момент – как вы увидите из письма, автор весьма неплохо владеет русским языком, а также рассказывает о своих навыках в понимании английской речи. Мой опыт показывает, что владение языками хоть и не обязательно для программиста, но всё же оно сильно помогает в работе: разница между человеческими и компьютерными языками не так велика, как кажется на первый взгляд.
Бэкграунд
Многие начинающие разработчики интересуются историями успеха более опытных коллег. Мой путь может быть интересен хотя бы потому, что я начинала как аниматор и не связывала будущее с программированием. Таким образом, я начинала с нуля.
Я получила обычное гуманитарное образование и ни дня не работала по профессии. В школе я получала ачивки районного масштаба, связанные, в основном, с гуманитарными дисциплинами. Кажется, я заняла какое-то место на районной олимпиаде по математике, когда мне светило 3 в четверти по геометрии.
Я любила решать задачи, но я делала это нерегулярно и неправильно. Как и многие школьники с увесистой самооценкой, я предпочитала выбирать самые сложные задачи, пренебрегая простыми. Естественно, я делала это, хоть и креативно, но медленно и плохо: как бы ни возмущались противники ЕГЭ, сложные логические построения — это, в первую очередь, комбинация более простых действий. Если вы плохо дружите с простыми задачами из части «B» ЕГЭ и допускаете «случайные» ошибки в вычислениях, от вас будет мало толку в сложных вещах.
Апофеозом моей самонадеянности была попытка, закрыв учебник, вывести и доказать все формулы по кинетике и молекулярной физике самостоятельно. Дабы не сомневаться в своём таланте, учебник физики я на время выведения формул забросила под диван. Как вы можете догадаться, в итоге с предметом отношения не сложились.
Анализ набитых в школе шишек предостерёг меня от тех же ошибок в программировании. Программист, который не боится читать чужой код, задавать простые вопросы и признавать свои ошибки, учится гораздо быстрее и работает лучше.
Надо отметить, что некоторые школьные знания пригождаются мне и сейчас. Например, курс геометрии помогает, когда нужно написать скрипт для Gimp, построить диаграмму на canvas или сделать какой-нибудь хитрый эффект на JavaScript. Если вы плохо помните школьные матаны, можете пролистать выжимку для поступающих (то, на что мы в школе тратили несколько лет, во взрослом возрасте, в принципе, можно освоить за выходные). И, главное, не стесняйтесь пользоваться Гуглом.
В вузе я отошла от математики совсем (не считая одной безуспешной попытки разработать альтернативную геометрию, в которой не нужно измерять площади в квадратах). Я начала неплохо зарабатывать на разного рода аниматорских халтурах, и всерьёз грезила стать актрисой, звездой сериала.
Счастье продолжалось ещё два года после выпуска. Потом я растолстела и утратила иллюзии. До конца жизни работать аниматором, копирайтером или секретарём мне не хотелось, а новые горизонты не спешили распахивать свои сияющие объятья.
Тогда я решила освоить новую профессию и засела за курсы по программированию. Как показала практика, это был отличный выбор.
Первые шаги
Мне посоветовали начать обучение программированию с SICP. Эта книга с 1979 года взрывает мозг подрастающей элите программистов, изначально — студентам Массачусетского университета. Она учит элиту древнему языку эльфов — LISP и особенно тяжёлым матанам. Я установила себе интерпретатор одного из диалектов LISP и ринулась в бой. SICP я осваивала так же медленно, как и открывала физику. Я задалась целью пройти все упражнения и, к счастью, у меня хватало терпения решать даже сложные задачи. Поэтому, когда я через несколько месяцев доползла почти до конца первой главы и, наконец, поняла, что я так много не напрограммирую, я не приуныла, а просто переключилась на другие задачи.
Кстати, несмотря на то, что в процессе поиска работы я нашла только одну вакансию, где бы вскользь упоминался LISP, SICP помог мне очень во многом. Во-первых, диалекты LISP время от времени вторгаются в мою жизнь. Например, как я уже писала, мне иногда нужно писать скрипты для графического редактора Gimp. Во-вторых, я всё же программировала, решала сложные задачи, а не выполняла стандартные действия.
Как я уже писала, для программиста важно не изобретать велосипедов, а уметь оперативно использовать чужие спортивные велосипеды по назначению. Но умение думать о том, как будет работать программа, ему также важно. Сначала кажется, что это не так актуально, ибо компьютеры мощные и выдержат многое. А потом у вас базы данных, и высокая нагрузка, и это всё нужно перетряхивать каким-нибудь хитрым образом.
По большому счёту, работа любого скрипта зависит от того, насколько стройно рассуждал его автор. В этом плане SICP — отличная тренировка, которая поможет выйти на новый уровень. Но всё же я не уверена, что для начинающего программиста это лучший старт. По крайней мере, не стоит пытаться пройти его обязательно до конца, не занимаясь параллельно ничем другим, если у вас, конечно, нет пары лет в запасе на обучение.
После нескольких месяцев штудий я начала, наконец, задаваться разумным вопросом: «А за что мне будут платить деньги?» Я пробежалась по сайтам по поиску работы и убедилась, что платят больше всего программистам на Java, но их редко берут без опыта. Зато неопытный web-программист может найти работу.
Поэтому я прочитала на Лурке статьи о том, что такое PHP, что такое JavaScript, и с чего мне лучше начать.* Кто-то в обсуждении статьи на Луркмор рекомендовал начинать с JavaScript, что я и сделала.
Синтаксис я изучала по курсам от Codecademy. Когда я проходила первые курсы, они были полностью бесплатны, потом разработчики добавили какие-то новые платные упражнения, но я ни разу к ним не обращалась. Курсы на английском, но написаны очень простым языком. В целом, это неплохая штука: благодаря Codecademy можно быстро и легко освоиться в синтаксисе нужных вам языков программирования и, что гораздо важнее, начать писать свои скрипты. Так как я нацелилась в web-разработчики, я начала с курса HTML и CSS (без них никуда).**
Пройдя курс, я немедленно купила себе доменное имя, нашла хостинг и развернула на нём сайт, на котором, вручную вводя текст вперемежку с HTML-тегами, начала излагать ценные советы от гуру.
Потом были курсы PHP, JavaScript, ещё что-то вроде курса «Сделайте свой первый сайт», и так далее. Надо отметить, больше всего толку принёс именно курс «Сделайте свой первый сайт», хотя он требовал знания jQuery,*** с которым я была тогда не знакома, и большую часть курса я проходила злобно матерясь, иногда наугад. Дело в том, что несколько команд на jQuery, которые я всё же постигла из курса, сразу пригодились мне для создания небольшой галереи.
После этого переломного момента я начала делать свои скрипты, и они даже работали. Примерно тогда стало понятно, насколько большую роль в обучении играет практика. Собственно, моё знакомство с JavaScript началось именно тогда, когда я начала писать первые скрипты и придумывать сложные эффекты.
Окрылённая этим опытом, я перенесла себе на ноутбук веб-сервер Apache (кстати, установите себе Linux, для программиста — лучшее решение, огромные плюсы и в обучении, и в работе, и, собственно, работодатели требуют). Теперь я могла писать скрипты на JavaScript или PHP прямо у себя на компьютере.
Тогда же я начала искать книги по синтаксису PHP. Я ориентировалась на самые свежие. Мне приглянулись записки программиста на русском, где парень примерно моего возраста систематизировал свой опыт. Изложение было разбито на логичные разделы (строки, массивы, работа с файлами, почтой, базами данных и т. д.), книга почти полностью состояла из кода с краткими комментариями, объяснявшими, что это за код.
Собственно, это было то, что нужно. Я повторяла каждый пример, видоизменяя его, писала новые варианты решения, даже маленькие скрипты. Больше всего мне понравилось писать себе на почту прямо с ноутбука. Это было для меня чем-то вроде чуда. Правда, книга сильно нуждалась в редакторе, кроме того, к примеру, для работы с базами данных там использовалось устаревшее расширение PHP.
Параллельно я активно просматривала сайты по поиску работы — в основном, чтобы узнать, какие навыки требуются от программиста, и спросить у Гугла, что это за странные слова. Чаще всего требовались Git, Bitrix, понимание работы архитектурного шаблона MVC, ООП, умение обращаться с Linux. В эту сторону я и начала копать.
Вскоре я начала ходить по собеседованиям. Если у вас устойчивые нервы, обязательно ходите. Если вы хикковаты, – лучше всё равно ходить, но беречь себя. Хорошо, когда на собеседованиях дают тесты или задают вопросы по синтаксису. Это позволяет увидеть свои пробелы в знаниях, и, придя домой, их устранить. Самое лучшее, что может быть, – это ТЗ. Как правило, в мелких конторах, которые берут программистов с маленьким опытом и не из элитных вузов, в качестве ТЗ дают настоящие задачи, которые этой конторе приходилось решать. То есть, выполнение тестовых заданий позволяет вам чуть-чуть поработать программистом.
Обязательно выполняйте ТЗ до конца и высылайте, даже если вы сорвали все сроки или работодатель уже нашёл кого-то ещё. Это одна из основных вещей, которые помогут освоиться в профессии и найти работу.
Собственно, где-то с шестого собеседования и второго ТЗ, я её и нашла. И да, программист – это важная и высокооплачиваемая профессия. Но не стоит рассчитывать на то, что руководители, которые нанимают неопытных программистов на небольшую зарплату, как-то особенно доброжелательны. Если бы у них было всё хорошо, они бы могли позволить себе более опытного специалиста. Это относится и к собеседованиям: собеседования очень важны, но не следует воспринимать их слишком всерьёз.
На моём первом месте работы я была единственным программистом. Кроме меня был ещё верстальщик, он же менеджер, и человек 25 сеошников. Все вместе мы занимались «разработкой и продвижением сайтов» на одной редкой CMS.
Техподдержка и документация по CMS были не на самом высоком уровне, поэтому моя работа, по больше части, напоминала работу хакера, который методами реверс-инжениринга выясняет секреты устройства сайта. Таким образом, некоторые очень простые задачи могли занимать по нескольку дней напряжённой работы. Помнится, я постоянно перебирала какие-то огромные массивы, чтобы вычислить ту самую переменную, которая поможет мне изменить формулу расчёта цены или вывести данные о товаре в другой колонке.
О программистах, которые работают на CMS, иногда отзываются недобро, однако после четырёх месяцев такой работы разработка движка сайтов с нуля показалась мне задачей простой и приятной.
Из компании я уволилась из-за открытых в декабре настежь окон (руководитель был морж). После этого я сделала несколько небольших собственных проектов, кое-что даже приносило мне прибыль, и устроилась уже на хорошую работу с высокой зарплатой.
Основные принципы
Пожалуй, стоит сформулировать основные принципы, которые, на мой взгляд, могут помочь начинающему программисту в учёбе и работе.
1. Ко всему подходить с практической точки зрения
Тут мне здорово помог SICP, в котором чётко давалось понять, что программы пишутся языком команд, а не описаний и определений.
В частности, это помогло мне подружиться с объектно-ориентированным программированием (ООП) и другими радостями начинающего программиста. ООП изначально было попыткой сымитировать объекты реального мира, но, вероятно, всё же к счастью для всех нас, эта попытка в полной мере не удалась.
Поэтому, если вы начнёте читать определения ООП и его принципов на разного рода познавательных сайтах, у вас волосы на голове встанут дыбом. Если же вы сосредоточите внимание на том, для чего используются объекты и классы в реальном коде, всё со временем станет проще.
Поэтому не стоит начинать с чистой теории. Нужно всегда самостоятельно делать все упражнения в курсах, выбирать те материалы, где есть понятные вам практические примеры, и сразу с ними экспериментировать.
2. Маленькими шажками строим домики из грязи
Нужно постоянно писать код и разбираться в том, как его лучше написать. Именно в процессе работы можно до конца понять нужную для программиста концепцию или, например, правила хорошего кода, освоить синтаксис языка на уверенном уровне и вообще стать программистом.
Если вы осваиваете какой-то язык, нужно позаботиться о том, чтобы обеспечить себе среду, позволяющую писать скрипты на этом языке (например, завести сайт или установить веб-сервер себе на компьютер, если вы начинающий веб-программист), и сразу пробовать что-нибудь кодить.
Сложные задачи нужно разбивать на мелкие, если с мелкими что-то не срастается, – на ещё более мелкие, и так далее. На первом этапе становится радостно от того, что на экране вообще что-то движется в результате какого-нибудь шаманства с JavaScript. Добившись этого, можно поставить себе задачу хоть немного контролировать траекторию движения, и так далее.
Конечно, с глобальных проектов начинать нельзя – есть риск вообще забросить программирование. Если горите чем-то масштабным, лучше пробовать делать из него по маленькому кусочку, так, чтобы скоро можно было увидеть результат и перейти к следующему шагу.
И, конечно, нельзя забрасывать курсы, но писать самостоятельно код, искать решения возникающих задач, – важнее.
3. Нужно всегда пользоваться поисковиками
Программисты львиную часть своих знаний получают не из курсов или книг (хотя они их постоянно читают и проходят), а из поиска.
Это происходит потому, что языки программирования, браузеры, программы постоянно меняются. Информация, которую вы узнали пять лет назад, может стать полностью не актуальна.
Кроме того, как я уже писала, программы написаны языком команд. Когда в книге вы читаете какое-нибудь определение, вы понимаете определение. Когда вы находите в поисковике ответ на вопрос: «Как сделать XX так, чтобы YY», вы, вполне возможно, хлопнете себя по лбу и воскликнете: «Ах вот как оно должно работать!» – даже если по этому XX вы пять минут назад были готовы докторскую диссертацию писать.
4. Не стоит расплываться, но и сплываться тоже не стоит
Как-то я читала на Хабре печальную историю под названием «Как я стал плохим программистом» от опытного, но вероятно, не очень успешного программиста. Там были упомянуты Джава, Делфи, курсы дизайна и рисования, работа то сисадмином, то разработчиком сайтов и жалобы на то, что очень тяжело разобраться во всём этом сразу.
С другой стороны, есть много программистов, которые застревают в одном языке программирования и, как следствие, часто на не самых высокооплачиваемых должностях. Возможно, это связано с тем, что люди, достигшие определённого уровня профессионализма в одном языке, боятся допускать глупые ошибки в другом.
Мне кажется, что лучше определить для себя, чем вы занимаетесь в ближайшие несколько лет, но не бояться решать прикладные задачи на других языках программирования или изучать что-нибудь новое в свободное от основного занятия время. При этом, если новый язык программирования может вполне пригодиться на новом этапе карьеры, то в дебри матанов или тонкости вёб-дизайна слишком глубоко погружаться не стоит, разве что это Ваше хобби. Всё-таки для того, чтобы освоить профессию на достаточно высоком уровне, требуются годы, и неразумно слишком сильно отвлекаться на что-нибудь другое.
Это обидно, но если вы выбираете конкретную профессию, значит достигать значимого для общества успеха получится, в основном, только в ней, и «также в области балета» вы впереди планеты всей не будете.
Ещё печальней всё получается, правда, если профессию не выбирать.
5. Не стоит бояться делать плохо
Сознательно косячить нельзя. И всегда нужно стараться делать лучше — без этого не стать хорошим программистом.
Но всё же программирование — это логика и команды. «Я делаю плохо» → «Я понимаю, что это плохо (или мне об этом говорят, иногда невежливо)» → «Я узнаю, как сделать лучше и делаю лучше» – вот вполне работающий алгоритм. Это путь отличного программиста от детских ошибок к более сложным, и от зарплаты в 20 тысяч к зарплате в 200.
Если вы попытаетесь каждый раз проходить этот путь, минуя первые итерации, вы сломаетесь.
6. И ещё, стоит поставить себе какой-нибудь человеческий дистрибутив Linux и понемногу привыкать пользоваться терминалом
Примечания:
* PHP — это самый популярный язык программирования, из тех, на которых пишутся сайты, он работает на сервере, и каждый раз, чтобы обратиться к нему, вам нужно послать на сервер запрос; JavaScript запускает скрипты прямо у вас в браузере, именно благодаря ему (и некоторым специальным технологиям) вы можете закрыть всплыва
Как я не стал программистом в 35 лет / Хабр
С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой профессии», «Путь в программирование» и так далее. Подобные статьи пишут постоянно, но вот сейчас они пошли как-то особенно кучно. Каждый день пишут то психологи, то студенты, то ещё кто-нибудь.
И в каждой статье звучит знакомая песня: главное, что советуют авторы — «стараться», «не сдаваться», «не бояться» и «идти к своей мечте»; а в комментариях очень часто можно встретить мнение, что ежели ты с самого детства любил компьютеры, то работа с ними в итоге неудивительна. Я хотел бы на примере своей биографии подвести читателей к мысли о том, что начальные условия могут быть важнее, чем приложенные усилия. Вера в справедливый мир способствует психологическому комфорту, но не очень-то корректно отражает реальность.
Не положено: начало
Энциклопедия профессора Фортрана для старшего школьного возраста
Моя история начинается в раннем детстве с компьютера «Корвет» из кабинета информатики. Но это было случайным лучом света в тёмном царстве постсоветского образования — в те времена официальное изучение информатики должно было начинаться в 11 классе. Я просто записался на случайно стартовавший для младших классов факультатив по компьютерному обучению. Один раз в неделю для нас открывали тяжёлую железную дверь тёмного кабинета с решётками на окнах и показывали, как вывести на экран «Hello» с помощью корвет-бейсика. Это было шикарно, но продлилось недолго.
Видимо это был какой-то образовательный эксперимент, завершившийся буквально через полгода. Я мало что успел узнать, успел только заинтересоваться. Но когда факультатив закончился, мне популярно объяснили: компьютеры на самом деле — не для детей, раньше одиннадцатого класса люди до изучения информатики не дорастают.
Здесь стоит заметить, что вокруг царили лихие девяностые, когда разные технические кружки при дворцах пионеров уже в массе своей закрылись, а домашние компьютеры ещё не стали обыденностью. Так что нельзя было получить доступ к технике — или к компьютерам — просто потому что ты хочешь их изучать. В выигрыше оказались дети либо тех людей, кто встроился в новую рыночную экономику, либо тех, кто имел доступ к компьютерам в рабочем порядке — инженеры, учителя информатики, «технические специалисты» при различных ведомствах.
Например, много лет спустя я узнал, что примерно в том же году моему (будущему) однокласснику родители подарили ZX Spectrum. Для игр, конечно.
Скорее всего, я так и остался бы за бортом нового цифрового мира. Я учился и рос в полной уверенности, что теперь доберусь до компьютера не раньше, чем в одиннадцатом классе. Забавно, что в итоге всё так и произошло. Но примерно за пару лет до этого случилось самое настоящее чудо — я получил компьютер в рамках местной благотворительной акции.
Казалось бы, вот тут-то мне бы и наверстать упущенное — но жизнь снова внесла свои коррективы.
Существует хорошо известная присказка, что если нищему дать миллион долларов, он не будет знать, что с ним делать. Конечно, если это умный нищий, он потратит часть миллиона на обучение, в том числе обучится обращаться с деньгами. Но всё равно это не сравнить с тем, что может сделать человек, среди денег выросший. Такая беда возникает всякий раз, когда человек вываливается за границы своего социального слоя.
Поскольку в обычных обстоятельствах я никогда не смог бы иметь компьютер, то денег на какие-нибудь курсы и сопутствующие товары у меня тоже не было. По той же причине я не имел связей среди людей, способных что-то подсказать мне, просто не входил в этот круг. Компьютер был буквально кусочком другого мира. Не обыденная бытовая техника, как сейчас, а что-то вроде эльфийского артефакта. Поэтому я не мог экспериментировать и изучать что-то на собственном опыте — «сломаешь дорогую вещь». Поэтому я не мог говорить сверстникам о том, что у меня дома есть компьютер — лихие девяностые вокруг, вы помните? Соответственно, резко урезались возможности для обмена информацией — я ни у кого не мог спросить совета, не мог задавать вопросы и делиться опытом. Интернет? Что? Какой интернет? Может фидо? Да у нас и телефона-то не было.
Можно было идти в библиотеку, бесплатно искать книжки или справочники, и тут возникала вторая проблема. Это был слишком прогрессивный для тех условий компьютер. На нём был установлен Windows 95.
Я взял главную (единственную) книгу про компьютеры, которая была в библиотеке — знаменитый учебник Гейна / Житомирского «Основы информатики и вычислительной техники» с красной обложкой. Можете сейчас найти её в интернете и ощутить контраст между её содержимым и содержимым полноценного компьютера с Windows 95 на борту. Ситуация усугублялась ещё и тем, что сложно было добыть даже пиратский софт — до расцвета магазинов DVD с броскими названиями «Весь офисный софт — 2000» оставалась ещё пара лет. А впрочем, когда они появились, у меня всё равно не было денег на диски.
Кстати, где-то здесь настало время «официальной» информатики в 11 классе — нам выдали уже упомянутый мной учебник 91 года издания, а реальные задачи заключались в том, чтобы рисовать несложные деревья алгоритмов (карандашом на бумаге) и использовать текстовый редактор «Лексикон».
Формошлёпство
Настоящие программисты и я
В итоге моё компьютерное развитие эту пару лет уныло пробуксовывало. Я читал справку Windows, правдами и неправдами добывал для компьютера разные программы на дискетках и учился быть «продвинутым пользователем», редактируя файл autoexec.bat. «Лексикон» принёс из школы, а как же. В общем, к тому времени, когда я смог наконец вернуться в детство и начать программировать в qBasic, вокруг уже безраздельно царили визуальные интерфейсы.
Этот контраст во многом уничтожил мою мотивацию к глубокому изучению обычного текстового программирования. Причина была в гнетущем несоответствии между графикой Windows 95, с которой я начал настоящее погружение в компьютерный мир, и унылым текстовым экраном известных мне тогда языков. Предыдущее поколение программистов радовалось просто тому, что при написании POINT(10,15) на экране возникала точка. Для них программированием было «нарисовать на экране то, чего на нём не было». Для меня экран был уже заполнен формами и кнопками. Для меня программированием было «заставить кнопку делать что-то после нажатия» — а делать саму кнопку было просто скучно.
В качестве лирического отступления хочу отметить, что сейчас развитие языков программирования по спирали вернулось к такой же ситуации. Теперь все «настоящие программисты» опять верстают интерфейсы в блокноте, и каждый программист теперь как бы снова обязан быть дизайнером. Снова нужно исключительно с помощью кода располагать на экране кнопки, окошки ввода и прочие элементы управления. В результате классическое правило 80 / 20 выглядит в данном случае так: «80% времени мы тратим на создание интерфейса методом ручного набора кода и 20% времени задаём поведение элементам интерфейса». Почему это было во времена DOS и Паскаля — я понимаю; не было альтернатив. Почему это существует сейчас, когда все уже видели и трогали VB, Delphi и C# — я не знаю; подозреваю, что проблема в платности или бесплатности среды разработки. Удобное всегда дорого, а бесплатные версии упомянутых сред появились не так уж и давно.
Это же было одной из причин того, почему мимо меня прошло интернет-программирование. Хотя там, как выяснилось значительно позже, было бы легче всего создать портфолио и стать программистом. Я попытался пощупать и PHP, и JS, но не хотел «писать код в блокноте». Ну а другая причина в том, что Интернет появился у меня то ли в 2005, то ли в 2006 году — до того он находился где-то на периферии картины мира. Вместе с сотовыми телефонами — «то, чем пользуются богатые люди».
Так что я забросил всё это dos-программирование и с головой погрузился в учебную базу данных «Борей» от Access, которая подарила мне формы, кнопки, макросы и вершину прикладного программирования — VBA. Наверное где-то в тот момент я окончательно решил, что в будущем я хочу работать программистом. Я добыл диск с Visual Studio, купил бумажную книгу(!) по VB и начал клепать калькуляторы и крестики-нолики, радуясь тому, что весь дизайн создаётся на форме за несколько минут, а не прописывается руками. Поскольку компьютер переставал быть редкостью, я наконец-то смог выйти в люди и обсуждать программирование со своими единомышленниками.
В этих обсуждениях мне открылось, что VB — это прошлый век, умирающий язык, который придуман для секретарш, а все реальные пацаны пишут на C++ или на Delphi. Поскольку я ещё помнил паскаль — я выбрал Дельфи. Возможно, это была моя очередная ошибка в длинной череде препятствий на пути становления программистом. Но я шёл по пути наименьшего сопротивления, потому что хотел скорее увидеть результаты своего труда. И я их видел! Я купил книжку ещё и по Delphi, я сцепил его с Excel и Access, которые уже знал, и в итоге сделал в первом приближении то, что сейчас называлось бы «BI-система». Печально то, что теперь я весь паскаль благополучно забыл, потому что уже лет десять к нему не притрагивался.
И, разумеется, я дважды пытался поступить в институт на программиста. В нашем маленьком городе для этого было не слишком много возможностей. В первый раз я сдуру пошёл поступать на специальность «Прикладная математика», откуда людей выпускали именно с такой специальностью — программист, однако требовали от них сурового знания математики далеко за пределами школьного курса. Так что на экзамене я не получил проходного балла. Пришлось пересидеть в колледже, получая среднее образование. Второй раз я немного снизил для себя требования и отправился на инженерную специальность — работа инженером не слишком меня привлекала, но всё-таки оттуда было ближе к работе с компьютерами. Только было уже поздно — люди распробовали выгоду технических специальностей и рвались туда толпами. На бюджетные места прошли только медалисты.
Поэтому теперь у меня гуманитарный диплом. Он красный, но не технический. И именно здесь грустная история взросления начинает пересекаться с грустной историей поиска работы.
Скрипач не нужен
...но не обязательно выживу...
Существует очень широко распространённый миф о том, что «у программиста диплом не спрашивают». У этого мифа есть несколько причин, я попробую перечислить основные.
Во-первых, в ранних девяностых — и немного в девяностых поздних — знание компьютерных технологий в принципе было редкостью. Если человек знал, где включается компьютер и мог запустить программу — он делал то, что требовалось бизнесу. А общий бардак на рынке труда заставлял работодателя быстро находить любого человека, который способен делать нужную работу — неважно, чему он там когда-то учился, важно что он сейчас умеет делать. Поэтому значительное число самоучек спокойно показывали на собеседовании навыки и получали работу.
Во-вторых, в те же самые года очень бурно развивался бизнес, но всё ещё не было такого современного понятия, как HR. Кадровики оставались советскими кадровиками, оформляющими трудовые книжки и трудовые договора, а собеседования проводили специалисты или руководители лично. Поскольку большинство из них было заинтересовано в результате, то формальные критерии вроде образования действительно рассматривались в последнюю очередь.
Это привело к чудовищному перекосу в массовом сознании. Люди, получившие работу в тех условиях, могут совершенно искренне рассказывать, что программисту диплом не нужен, и приводить в пример себя. Вы узнаёте этот типаж, конечно же. Если человек говорит вам «достаточно показать, что умеешь, и тебя возьмут» — это как раз такой программист, из тех времён, его так и взяли, а он поверил в незыблемость мира. Примерно таким же образом советские старики говорят что-то вроде «да ты же на компьютере работаешь и на английском можешь читать, я бы с такими навыками ух!». Они уже не понимают, что с такими навыками «ух» было только в советские времена, а сейчас такое каждый второй умеет.
Потом ровно то же самое произошло в ранних нулевых, когда нефть начала расти, экономика развиваться, и толпы новоявленных бизнесменов ринулись на рынок труда в поисках любого, кто умеет хотя бы включать компьютер.
Но заодно поток нефтяных денег породил непроизводительные кадры — HR-департаменты. Там оказались те же старые советские кадровики, но на них совершенно неожиданно возложили задачу по определению качества любого работника. Они, конечно, не могли принимать решения такого уровня. Поэтому выработали собственные критерии оценки, довольно далёкие от реальности, основанные на переводных книгах с благословенного запада и формальных критериях вроде образования. Так свершился великий поворот: от реальных навыков — к формальным критериям.
Миф остался жить, только чуть-чуть видоизменился.
Экономика всё ещё росла, людей хватали отовсюду, переманивали из других компаний, но кадровики уже наложили свои цепкие лапки на процесс отбора. И самым важным стало не «покажи, что умеешь» — всё равно кадровик не поймёт, что ему показывают — а «опыт работы». Так люди, которых когда-то взяли куда-то без образования программиста за умение нажимать кнопки — переманивались в другую компанию уже просто потому, что они ранее работали на должности «инженер-программист». И снова никто не спрашивал диплома, потому что было не до того — есть «опыт»? Ну скорее садись и работай!
Наконец, последняя, третья причина — бурное развитие интернета и частных проектов. Люди создавали пет-проекты, эти проекты можно было показать кому угодно и тем самым доказать свои навыки. Отправляешь письмо, прикладываешь ссылку на свой сайт — и вот ты уже как бы доказал свои умения.
Что сейчас?
Нефтяные цены, как мы знаем, рухнули, но миф всё ещё живёт. Ведь на должностях «инженеров-программистов» сидит немало людей, которые на эти должности действительно попали без профильного образования. Однако сейчас уже ни одна из этих причин не работает в полной мере, и сейчас мало кто из них смог бы повторить этот трюк с трудоустройством.
- Знание компьютерных технологий стало повсеместным. Работа с компьютером просто уже не указывается в резюме, как не указывается там умение читать и писать (это, кстати, не повредило бы — я начал часто встречать грамматические ошибки даже в официальных СМИ, а уж в статьях на хабре они появляются с завидной регулярностью).
- Появились HR-департаменты и HR-специалисты, которые не несут никакой ответственности за свои решения и могут использовать любые критерии выбора. Естественно, предпочтение отдаётся формальным — смотрят на возраст, образование, пол и время на предыдущем месте работы. Навыки и умения идут по остаточному принципу.
- Нехватки программистов давно уже нет. Есть нехватка хороших программистов, но это верно вообще для любой специальности. А обычным программистом работает каждый школьник в интернете, на фрилансерских сайтах люди буквально сражаются за право бесплатно сделать что-нибудь для портфолио.
- Пет-проекты тоже стали обыденностью. Интернет завален персональными сайтами и клонами тетриса, да и этот проект уже становится едва ли не обязательным, то есть пройдя сито кадрового отбора ты попадаешь в сито отбора специалистов, а они говорят «покажите-ка ваш гитхаб».
Люди, у которых образование есть — или люди, у которых есть опыт, заменяющий образование в глазах HR-департаментов — видят только вторую часть. Они говорят обычно примерно так: «для работы диплом программисту не нужен, а вот проекты на гитхабе были бы полезны».
Но поскольку HR-департаменты никуда не делись, то совсем уж правдиво это формулируется так: «для работы программисту нужен диплом (чтобы пройти HR), но ещё и проекты на гитхабе (чтобы пройти техническое собеседование)». И я, с моим гуманитарным образованием, в полной мере это ощущаю — потому что о гитхабе я знаю только из жалоб программистов с техническим образованием, меня же строгое кадровое сито отсеивает на первом этапе.
Люди не видят воздух, рыбы не видят воду, а люди с техническим образованием или опытом работы в «ООО КОДТЕХНОСОФТ» не видят, что у них не спрашивают диплом, потому что он уже и так подразумевается. Особенно смешно звучат оправдания людей типа «я сколько лет работаю, ни разу диплом не показывал». Спрашиваешь — а в резюме-то ты его указывал? Ну да, конечно указывал. Так ты мне предлагаешь указать в резюме ненастоящее образование что ли, раз всё равно не попросят подтверждения? Молчат, ничего не отвечают.
Кстати говоря, на той специальности, где все бюджетные места были заняты медалистами, бюджетной была только половина группы. А другой половиной были студенты платного обучения — ну вы знаете, покупка корочки в рассрочку за деньги родителей. Мой друг поступил туда, получил диплом. В результате стал полноправным «инженером-программистом» и никаких проблем с работой программистом с тех пор вообще не испытывал. Потому что в дипломе не пишут, платно ты учился или бесплатно. А вот специальность, «техническую» — пишут.
Из зоны комфорта
Это я уверенно поднимаюсь по карьерной лестнице
Когда я приехал в Москву и начал искать работу, я всего этого не знал. Я ещё верил в миф про то, будто программисту достаточно показать результат труда. Я реально возил с собой на флешке образцы своих программ — забегая вперёд скажу, что никто ни единого раза на них не взглянул. Впрочем, приглашений вообще было крайне мало.
Тогда я ещё помнил Delphi и пытался попасть в какую-нибудь техническую компанию хотя бы на стажерскую должность. Рассылал по десятку писем в день, объяснял, что я с детства интересуюсь компьютерами и хочу учиться дальше. Мне несколько раз вполне честно отвечали, что у меня должна быть техническая специальность — HR-менеджеры именно для того и обороняют рубежи крупных компаний, чтобы отсеивать всяких там гуманитарных недобитков. Но по большей части просто приходили стандартизированные отказы. В конечном счёте я не смог больше продолжать поиски и вышел на обыкновенную офисную работу, где нужно было просто использовать Excel.
Через пару лет к Excel добавились Access и SQL, потому что я вспомнил молодость и начал активно писать VBA-скрипты. Но это всё равно не было «настоящим программированием». Я предпринял ещё одну попытку, скачав современный Visual Studio и погрузившись в изучение C#. Я изучил его в первом приближении, написал небольшую программку и попытался ещё раз попасть куда-нибудь — не пренебрегая ни полноценными вакансиями, ни предложениями о стажировке.
На этот раз на сотню своих писем я не получил вообще ни одного ответа. Ни одного. Потому что, как я теперь понимаю, мой возраст приближался к тридцати — и вместе с гуманитарной специальностью в резюме это становилось чёрной меткой для любых HR-отделов. Это сильно подкосило и мою веру в себя, и мою веру в мифы программистов о рынке труда. Я полностью забросил «настоящее программирование» и сосредоточился на обычной офисной работе. Время от времени я ещё откликался на разные вакансии, но в ответ по-прежнему получал молчание.
Где-то на этом этапе я начал понимать, насколько ценным является для человека то, что он не замечает, или то, что он считает по умолчанию имеющимся у всех. Люди, к которым обращаешься за советом или просто жалуешься на жизнь, в такие тонкости не вникают. Они начитались популярных книжек по психологии и рассказывают тебе о том, что нужно выходить из зоны комфорта. Хотя давно уже существует известная шутка о том, что в зону комфорта сначала нужно войти. С возрастом цена этого входа или выхода растёт — например сейчас я уже просто не могу позволить себе уволиться и пойти работать на стажёрскую должность. Можно только осторожно менять деятельность, параллельно оставаясь на текущей работе, пока не сравняются доходы.
Встречаются советчики разумные, и они дают рекомендации, которые дал бы и я сам. Это самостоятельное обучение и удалённая работа или создание собственного проекта. Но здесь есть свои подводные камни.
Дело в том, что удалённая работа — это привилегия исключительно имеющих «опыт работы». На неё попасть новичку, которому нужна помощь и обучение, совершенно нереально. С тобой и так-то никто возиться не хочет, а тут ещё и удалённо нужно.
Самостоятельное обучение жутко неэффективно. То, чему тебя научат, например, за полгода, ты будешь самостоятельно разбирать года два. Соотношение примерно такое. Всякие мелочи, типовые приёмы и известные подводные камни ты вынужден будешь находить самостоятельно, постоянно изобретать велосипед. Конечно, это в какой-то мере может сделать тебя более знающим, ведь ты сам всё это нашёл и преодолел. Но это заберёт у тебя в четыре раза больше времени, а реального опыта на реальных производственных проектах у тебя по-прежнему не будет.
При этом я хорошо знаю, что реальный, полезный опыт возникает только при решении реальных производственных задач. В этом смысле действия вроде «написать крестики-нолики» помогут тебе на начальном этапе просто разобраться в языке. Но написав даже крестики-нолики, морской бой и змейку ты всё равно не сможешь делать то, что требуется бизнесу на практике.
Тут самые нетерпеливые снова захотят дать совет — бери, мол, реальное ТЗ с каких-нибудь фриланс-сайтов и пиши по нему, так и научишься, и самостоятельно, и даже портфолио будет.
Что ж, рассмотрим наконец метод «пет-проект». Нужно написать полезную людям программу, после чего с этой программой идти на работу куда-то, где делают схожие программы. В теории звучит прекрасно, на самом деле это ловушка. Вместо того, чтобы изначально работать над реальным проектом — ты тратишь время на заведомо бессмысленные задачи, чтобы потом выполнять точно такие же задачи, но уже осмысленные.
Стой! — крикнут мне читатели. — Подожди! Это же тренировка! Она везде и всегда так выглядит! И я бы согласился, если бы эта тренировка давала бы шанс на результат. Но нет. Мы возвращаемся к тому, что у меня уже есть опыт подобных попыток, подобных тренировок.
Есть ли в мире хоть одна компания, которая говорит — вот наша компания делает мессенджеры, давайте вот вы нам напишете мессенджер на таком-то языке, с такими-то и такими-то параметрами и мы тогда вас возьмём на работу? Нет. Это всегда вероятность, причём для человека с неподходящим возрастом и образованием — вероятность очень низкая. Жизнь мне всё это очень хорошо объяснила. Вот например, в разные периоды своей жизни я знал и использовал VB и VBA, Pascal и Delphi, SQL, R, JS, C# и даже (сам удивляюсь!) Genesis32. Реально — находил и проходил курсы, делал пресловутые проекты, мог показать на собеседовании и отвечать на вопросы по ним. И что?
Во-первых, никто просто не заинтересовался и не попросил ничего показать, я тупо не попадал на эти собеседования. Во-вторых, из всего этого я реально сейчас помню только VBA+SQL, потому что постоянно ими пользуюсь — остальное не пригодилось и забыто. Причём ситуация выглядела реально жёстко: не то чтобы мои проекты смотрели и говорили «слушай, да тут всё плохо, ты ж не умеешь код писать, вот здесь и здесь не работает». Нет, меня просто игнорировали. Гуманитарное образование, понимаете? «Это потому что я чёрный».
Итоги
Когда даже под гнётом обстоятельств ты сохраняешь внутренний покой
Несмотря на пессимистичный характер текста, я не оставляю попыток. Просто теперь пространство возможностей для меня резко сузилось, я вижу только один реалистичный путь — это упомянутый выше «пет-проект», но нацеленный не столько на «поиск работы», сколько на «попытку создать бизнес». Нужно найти нерешенную задачу, решить её и найти хотя бы несколько десятков человек, которые будут пользоваться твоим решением. Другой вопрос, что звучит это просто, а по факту трудно найти задачу, которая ещё не была решена кем-то из миллионов программистов и стремящихся — и притом достаточно проста для начинающего.
Сейчас я добрался до Питона, по примеру многих предшественников пропарсил Хабр и готовлю статью о результатах. Я надеялся опубликовать именно её в качестве моей первой хабрастатьи, но там ещё нужно дописать немного текста. А тут прямо подряд посыпались публикации на тему «Как я стал программистом, просто приложив немного усилий», почти каждый день, а то и по две в день.
Так что я не удержался и рассказал, почему я приложил много усилий, но программистом так и не стал.
Если кратко подводить итоги, то я хотел сказать следующее:
- Желания и усилия действительно могут многое, но решающее значение всё-таки имеет материальная база. У кого она есть — тем желания и усилия помогают добиться большего. У кого её нет — тем желания и усилия не помогут добиться и обычного результата. Увлечение компьютером с детства может помочь стать программистом, но это не такая уж и большая помощь. Намного больше шансов стать программистом у того, кто даже компьютером никогда не интересовался, но кого обеспеченные родители отправили учиться на модную техническую специальность. Но и самого увлечения мало, если — как в одной из недавних публикаций — тебе не покупают в детстве программируемые калькуляторы
- Пора уже наконец расстаться с мифом о том, что для работы программистом достаточно уметь программировать. В лучшем случае достаточно уметь хорошо программировать, например «писать код на доске» — таких да, оторвут с руками. Разговоры о том, что джунов берут с улицы, лишь бы знали, с какой стороны у компьютера клавиатура — это очень сильное преувеличение, в таких разговорах мы наблюдаем типичную ошибку выжившего. Вокруг каждой вакансии программиста стоит «стеклянная стена» HR-департамента — люди с техническим образованием её просто не видят, а остальные могут только бессмысленно биться об неё головой. Или — как в ещё одной из недавних публикаций — устраиваться «по знакомству».
- Чтобы «стать» программистом в зрелом возрасте нужно иметь тот же удачный набор обстоятельств, что и для юного возраста. Конечно, взрослый человек многое может делать лучше (он видит цель к которой идёт, имеет опыт обучения и развития, знает реальные потребности рынка), но многого он и лишён (он должен сам себя содержать, тратить время на быт, да и здоровье уже не то). И если — как в очередной недавней публикации — есть материальная поддержка со стороны семьи и стабильность жизни в виде собственного жилья, то сменить деятельность действительно намного проще
Как стать программистом? 12 интервью с российскими экспертами.
Как стать веб-разработчиком? Как научиться программированию? Как программисту найти работу? Нужно ли ему для этого высшее образование? Как долго нужно учиться, чтобы начать зарабатывать на разработке?
Думаю, почти каждый, кто задумывается о карьере программиста, задается вопросом. Опираясь на собственный опыт, я постарался ответить на большую часть этих вопросов и написал Самообразование для веб-разработчиков.Но мое мнение о самообучении и способах обучения — это мнение одного конкретного человека (хотя, конечно, я уверен в его правоте :)).
Вот почему мне пришла в голову идея: взять 12 программистов, в профессионализме которых я не сомневаюсь, и спросить их, как они начинали, как они узнали все, что знают сейчас, и как они получили хорошо оплачиваемую работу. Вот 12 историй о становлении профессионалов, людей, опыт работы которых превышает количество пальцев на одной руке (с некоторыми оговорками).Надеюсь, вы сделаете хорошие выводы из этих рассказов (спойлер: камни для самостоятельного изучения) и найдете парочку удобных для вас советов.
Программисты
- Максим Кремнев, Aviasales
- Павел Хрулев, Ruby on Rails разработчик, фрилансер на odesk, elance.
- Варвара, разработчик Ruby и node.js, Social Quantum
- Даниил, программист, Social Quantum
- Михаил, руководитель группы, Social Quantum
- Роман Колеснев, разработчик Fullstack Rails; Социальный квант
- Сергей Резванов, ruby-разработчик, IkitLab
- Константин, технический руководитель одного из стартапов Санкт-Петербурга
- Корнеев Евгений, руководитель группы, SmartSpace
- Антон Черепанов, веб-разработчик в Evrone, наставник в mdkev.мне
- Кирилл Ширинкин, консультант по DevOps и облаку, ментор mkdev.me
- Василец Дмитрий, консультант
Максим Кремнев, разработчик программного обеспечения, Aviasales
Как давно вы работаете в веб-разработке?
На 5-6 лет.
Почему вы выбрали программирование и веб-разработку?
Это возможность зарабатывать деньги, занимаясь любимым делом.
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
18-19-20 лет.В то время я работал системным администратором, и в то же время меня очень интересовали некоторые любопытные вещи, такие как gentoo, bash, django (первое, что пришло мне в голову). Однажды я наткнулся на вакансию рубинового программиста от @ipronix на какой-то местной доске объявлений и решил попробовать, подумал, может, им тоже нужны программисты на python. Как оказалось, нет, но нужны были рубиновые программисты, даже юниоры (я тогда этого слова не знал). Ну … они предложили мне деньги, к тому же это было больше, чем я получал как системный администратор, и я решил совмещать офлайн и онлайн работу.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Через 1 мес. Это все @ipronix
С чего начать новичку?
Как сделать или начать работу
Чего вам не хватало в начале пути?
Время
Можете посоветовать книги, сайты?
google.com
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
голанг, питон, повар, разные дб
Павел Хрулев, Ruby on Rails разработчик, фрилансер на odesk, elance.
Как давно вы работаете в веб-разработке?
На 6 лет.
Почему вы выбрали программирование и веб-разработку?
Это сложный вопрос. Я выбрал программирование, потому что мне это было интересно, мне это было интересно. Веб-разработка — ну, так и вышло. Я начал свою карьеру во времена, когда веб-разработка стала набирать популярность и спрос на веб-разработчиков стал огромным. Спрос рождает предложение, представленное мной 🙂
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
Когда я начал заниматься программированием, я написал небольшую игру.Возникла необходимость сделать для него сайт. Так я сделал свой первый сайт на html. Потом меня попросили сделать еще один сайт за деньги, и потом я устроился веб-разработчиком. Это было в конце 2007 — начале 2008 года.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Первые деньги я получил примерно через 4 месяца после того, как сделал первый веб-сайт на html для своих целей.Заказ получил легко — мои таланты разошлись, и покупатель нашел меня первым.
С чего начать новичку?
Страсть и жажда знаний. Исследуй что-то, развивай что-то для себя, для удовольствия, используя полученные знания.
Чего вам не хватало в начале пути?
Информация стала проще. На русском было не так много хороших сайтов и книг, да и английский я не так хорошо владел. То есть мне тоже не хватало знания английского.
Можете посоветовать книги, сайты?
Это зависит от интересующей вас темы. Книг по каждой теме очень много. Скажу только, что нужно для общего развития программиста.
- Для изучения и совершенствования английского — книги «Английский для русских» и сайт lingualeo.com
- О новых технологиях и трендах можно узнать на habrahabr.ru
- Решение проблем — stackoverflow.com
- Практические навыки программирования с использованием новых технологий можно получить в развлекательной форме в школе кодов.com
Как сейчас продвигается самообучение, какие новые направления вы изучаете?
Сейчас изучаю фреймворк Cordova and Rhodes, то есть мобильную разработку в сочетании с веб-технологиями.
Я узнаю обо всех новостях и тенденциях на habrahabr. Если меня что-то заинтересует, я начинаю копать дальше, читаю книги на эту тему, статьи на сайтах.
Я узнаю о некоторых методах, инженерных приемах из блогов разработчиков, на которые подписан.Обычно эти разработчики — не худшие люди в популярных open-source проектах.
Я постоянно работаю над улучшением своей грамматики английского языка, расширением словарного запаса, избавлением от акцента. Как я уже писал, в этом мне помогают книги «Английский для русских», сайт lingualeo.com и опыт общения с клиентами.
Варвара, разработчик Ruby и node.js, Social Quantum
Как давно вы работаете в веб-разработке?
Я не так хорошо знаком с сетью, но в целом — около 6 лет.
Почему вы выбрали программирование и веб-разработку?
Я учился в профильном вузе, он работал и мне было интересно.
Каким образом вы это узнали?
Вуз, самостоятельная работа.
Расскажите немного подробнее, как вы начали: как, когда, что?
Сразу после окончания университета я устроился на работу в офис, выигравший тендер на проект по информатизации Санкт-Петербурга — киоск госуслуг.Я проработал там почти пол года, писал интерфейсы и поиск адресов в БД для этих кабинок и т. Д.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как я получил свой первый заказ?
Я никогда не занимался фрилансом, всегда работал в офисе.
С чего начать новичку?
Выбор хорошей компании и команды, которая за полгода научит новичка не наступать на грабли, свойственные новичкам), привит хороший codestyle и еще кое-что полезное в духе тестирования и профилирования кода.
Чего вам не хватало в начале пути?
Именно такая хорошая команда. Я сидел, уткнувшись в книги, и наступил на обычные грабли. Хотя с точки зрения самодисциплины это хорошо.
Можете посоветовать книги, сайты?
Если нужно что-то узнать, я гулю. Но прежде всего, конечно, почитайте документацию.
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
рубин и хакс.
Даниил, программист, Social Quantum
Как давно вы работаете в веб-разработке?
На 3 года
Почему вы выбрали программирование и веб-разработку?
Насчет программирования — вот так вышло, перед компьютером с 7, начиная со спектра.Круто быть волшебником и архитектором одновременно 🙂
Я не выбрал веб-разработку — я всегда хотел посвятить себя играм, чем и занимаюсь сейчас. Но до этого я работал с вебом, сколько времени не помню, поэтому писал 3 года 🙂
Каким образом вы это узнали?
Вуз, самостоятельная работа.
Расскажите немного подробнее, как вы начали: как, когда, что?
7 лет, ZX Spectrum в день рождения, БЕЙСИК.В подростковом возрасте — ФИДОНЕТ, Си, немного Паскаля.
Подростковый возраст — Linux, Python.
Молодежь — веб-разработка, Python, JS, Pylons, Zope, немного Django.
Последние годы — Python, JavaScript, AS3, C #, Haxe, node.js, Flash, Unity3D.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Когда мне было около 20, я только что выложил свое резюме в Интернет и начал работать в офисе веб-разработчиком на Python.
С чего начать новичку?
Понимание принципа — «пиши меньше кода, но не меньше, чем нужно»
Чего вам не хватало в начале пути?
Общение с гиками.
Можете посоветовать книги, сайты?
О, я не знаю. В свое время я прочитал довольно много интересных книг, так или иначе связанных с программированием, но я не берусь давать советы в целом.
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Компиляторы, OCaml.
Михаил, руководитель группы, Social Quantum
Как давно вы работаете в веб-разработке?
Web в частности — на 5 лет.
Почему вы выбрали программирование и веб-разработку?
Программирование — потому что я интересовался им с детства.
Интернет — низкие барьеры для входа: на знаниях (много руководств), на практике (вам нужен только веб-браузер и блокнот, ну и раскраски, вам не нужно тянуть какой-либо тяжеловесный ide по dialup и т. Д.) И на работа (free-lance.ru, вдруг появляются люди, готовые платить за то, чему я научился просто из интереса).
Каким образом вы это узнали?
Вуз, самостоятельная работа.
Расскажите немного подробнее, как вы начали: как, когда, что?
Средняя школа, каникулы, i486, мама принесла диск с видеоуроками по visual basic, где объяснялось, как делать настоящие программы с windows и т.д. На диске не было компилятора. У меня уже неделю текла слюна. Потом я получил компилятор и начал все исследовать.
Позже я где-то позаимствовал книгу об основах html, начал экспериментировать и делать домашнюю страницу с помощью конструктора сайтов — тогда это было очень популярно.
Также — группа по изучению логотипа, паскаль-курсы, php-курсы, паскаль и c на уроках IT в старших классах, чтение xakep.ru, интерес к вирусам и ассемблер, flash.
Если честно, я не помню, когда именно это началось.
Однажды мой отец рассказал мне такую историю о моем дошкольном детстве: он удалил окна с моего компьютера и оставил мне чистую DOS. Итак, он возвращается с работы вечером и видит, как я играю в компьютерные игры. Он спрашивает меня «как это возможно» и получает ответ, что я набрал контролируемые команды «cd nc», «nc», а затем «синяя штука открылась», то есть norton commander, с которым я уже был знаком (:
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Я нашел свой первый заказ на фрилансе когда-то, когда учился в старшей школе.Точно не помню, что это было — возможно, флэш-баннер, возможно, переделка макета. Тогда, конечно, я не был так уверен в себе, и поэтому большую часть времени просто слонялся по каким-то соревнованиям и работал в основном не ради денег, а ради портфолио. По совету Лебедева, который я прочитал в его руководстве, я делал работы для воображаемых клиентов, чтобы заполнить свое портфолио и показать, что я могу.
С чего начать новичку?
Простой способ:
- узнать, как использовать Google
- Google учебник типа «Введение в html»
Жесткий путь:
- школьный курс физики
- электротехника
- цифровая схема
- Основы информационных технологий
- Программирование микроконтроллеров
- Монтажник
- структурное программирование, C, массивы, указатели, динамические структуры данных, сети и т. Д.
- объектно-ориентированное программирование, C ++
- операционные системы
- как хочешь
Чего вам не хватало в начале пути?
Скорость дозвона
Можете посоветовать книги, сайты?
htmlbook.ru
stackoverflow.com
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Самое смешное, что я практически не читаю полных книг по технологиям. Потому что:
- устаревшие знания
- вид с одной стороны
- сомнительная авторская дееспособность
- много букв
Вместо этого, когда я сталкиваюсь с какой-то технологией, в первую очередь ищу официальный сайт, какое-то руководство по началу работы, документацию по API, примеры.Если все идет медленно, то я задаю Google конкретные вопросы (в большинстве случаев это приводит меня к stackoverflow), а если все идет очень медленно — я обращаюсь к тематическому сообществу, чтобы задать вопрос (но это крайность , так как ждать ответа очень утомительно).
Сейчас, в частности, я экспериментирую с common node (оболочка node.js, которая реализует стандарты CommonJS и использует волокна) и mongodb. И мне нужно изучить Rails для работы.
Роман Колеснев, разработчик Fullstack Rails; Социальный квант
Как давно вы работаете в веб-разработке?
На 3 года
Почему вы выбрали программирование и веб-разработку?
Я написал программу, отладил ее, сделал несколько тестов, все тесты пройдены, а потом ты встаешь в полный рост, теребишь ее пальцем и говорю: «Теперь я твой Бог!»
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
Я немного пробовал программировать, когда учился в начальной школе, поэтому информация о том, как я начинал, не помогала другим.Я еще не совсем понял, во что ввязываюсь, дурак. Но в суме я могу сказать следующее: самообучение здесь — это все, но на первых этапах очень полезны хорошая книга или видеоурок и старший товарищ по команде, который направит ваше мышление в правильное русло.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Освоение сети было нерегулярным и непостоянным, но через полгода после того, как я сконцентрировался на рельсах, я начал зарабатывать 500 $ по гибкому графику и совмещал работу с учебой на 3-м курсе МФТИ.До того, как сосредоточиться на рельсах, у нас был довольно большой опыт программирования, базовое понимание JS, CSS, HTML и немного PHP (в общей сложности я написал на PHP что-то около 40-50 человеко-часов, не более)
С чего начать новичку?
codechool.com
Чего вам не хватало в начале пути?
Наставник
Можете посоветовать книги, сайты?
codechool.com
stackoverflow.com
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Scala, Play framework, Unity 3D, в ближайшее время Swift
Сергей Резванов, ruby-разработчик, IkitLab
Как давно вы работаете в веб-разработке?
На 4 года.
Почему вы выбрали программирование и веб-разработку?
Компьютерными технологиями я заинтересовался еще в школе, почувствовал что-то необъяснимое и манящее, что-то вроде симбиоза человека и машины. Сейчас компьютер без человека — просто кусок железа, но и человек уже не может жить без компьютера. Но вместе они составляют тандем, в котором каждый находится на своем месте. Для меня разработка и программирование в целом такие же, как, например, искусство, т.е.е. Художник с мольбертом, музыкант со своим инструментом — это такие же фигуры творческой личности, как и разработчик со своими умениями и знаниями.
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
Для меня путь программирования начался, когда я нашел себя оракулом-разработчиком в компании CompassPlus в моем городе (эта работа не была связана с Интернетом), где я провел 5 лет своей жизни и карьеры.
В последний год работы заинтересовался веб-разработкой и последующими технологиями. Все это сыграло злую шутку — я терпеть не мог работать в CompassPlus, где стек технологий был из 90-х. Именно тогда я решил найти распределенную команду, с которой я мог бы развивать свои навыки веб-разработчика. Так я устроился на работу в Secoint, это была компания в Твери, которая делала интернет-магазины на Spee. Какое-то время я работал на двух работах — в CompassPlus, в офисе, днем и в Secoint, удаленно, по вечерам.
Через несколько месяцев совместить две работы стало очень сложно (у меня тогда уже была семья), я зарегистрировался как IE и ушел из CompassPlus. Я полностью погрузился в веб-разработку и изучение технологий, еще работая в Secoint.
С тех пор я сменил несколько компаний, но по-прежнему верен веб-разработке и работаю только удаленно.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
После двух месяцев обучения.Я обратился в компанию ruby web-разработчиков и предложил свои услуги в качестве уволенного работника. Они показали мне большой палец вверх.
С чего начать новичку?
Подумайте дважды, если вам все это нужно. Если да, то пишите код, читайте smb. другой код и напишите его снова.
Чего вам не хватало в начале пути?
Общение с теми же людьми, что и я … К сожалению, я до сих пор не знаю разработчиков ruby / rails из моего города. Все профессионалы, которых я знаю, виртуальные, я не встречал их в жизни.
Можете посоветовать книги, сайты?
Мой любимый книжный магазин — PragProg. Здесь я часто покупаю книги, связанные с веб-разработкой (в основном электронные книги). Ничего особенного, меня все интересует.
Я часто нахожу ответы на свои вопросы на StackOverflow и подобных ресурсах. Но чаще всего я все же смотрю источники каких-то крупных проектов, потому что иногда там можно найти больше полезной информации, чем в книгах и статьях.
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Последние пару месяцев я работал над одним очень большим проектом по мобильной аналитике — http: // inside.ly И я могу сказать только одно: данные правят миром, и будущее за теми, кто сможет собирать эти данные и анализировать их. Вот почему наука о данных — это для нас все.
Константин, руководитель технической группы одного из стартапов Санкт-Петербурга
Как давно вы работаете в веб-разработке?
На 5-7 лет.
Почему вы выбрали программирование и веб-разработку?
Меня всегда интересовали компьютеры и Интернет.
Каким образом вы это узнали?
Университет, самостоятельная работа, работа с наставником
Расскажите немного подробнее, как вы начали: как, когда, что?
Я начал с самообучения и программирования на Delphi, Pascal, C ++.Затем я заинтересовался системами Unix и программированием на Perl. Потом постепенно перешел к веб-разработке и остановился на Ruby (ну и JavaScript, конечно). Я пробовал Python (Django), но мое сердце было не в этом.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Получил свой первый полноценный заказ на фрилансе. Я сделал небольшой сайт на Perl. Сложно сказать, сколько времени я потратил на учебу в то время.Полагаю, это было для меня «началом».
С чего начать новичку?
Основы и алгоритмы. Книги, скринкасты, больше практики.
Чего вам не хватало в начале пути?
Компетентный наставник, который подскажет, как и что мне делать. И тоже не должно.
Можете посоветовать книги, сайты?
Чем больше читаешь, тем лучше. Мне лично очень понравились книги «Паттерны проектирования в Ruby» (для ruby-разработчиков) и «Искусство оптимизации» (простые, но популярные алгоритмы, упрощенные).
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Немного кое-где. Планирую более серьезно изучить Clojure и немного поэкспериментировать со Swift 🙂
Корнеев Евгений, руководитель группы, SmartSpace
Как давно вы работаете в веб-разработке?
На 5 лет
Почему вы выбрали программирование и веб-разработку?
Потому что мне нравится создавать что-то, что другие будут использовать позже.
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
Программированием я заинтересовался еще в 12 лет, к тому же у меня даже не было компьютера. Когда мне было около 14 лет, я уже активно делал простые программы для Windows на C ++ и Delphi, а когда мне было 16 — я делал компьютерные игры.
Потом был год застоя в университете, когда я развлекался только Warcraft и делал курсовые работы для старшеклассников.Но когда я понял, что никакой полезной информации здесь не получил, я бросил университет и нашел работу. Когда мне было 17-18 лет, меня не хотели брать на работу программистом, поэтому я начал продавать диски в магазине компьютерных игр. Спустя полгода я уже настраивал и настраивал 1С в материнской компании. Еще через год, когда мой мозг начал высыхать от 1С, я обратился к фрилансеру и начал делать сайты. Сначала — интернет-магазины на php-движках, а потом, через некоторое время, я заинтересовался крутыми фреймворками и выбрал ruby и rails.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Если говорить о ранних стадиях, когда я делал сайты «под ключ» на таких вещах, как Wordpess, то не помню. Наверное, кто-то из моих знакомых попросил меня что-то сделать и заплатил, как это обычно бывает.
Если говорить о Rails, то в основном все получилось так же. Я предложил за небольшую плату сделать хороший сайт танцевальной студии, в которой я работал.Свою первую постоянную работу я получил также благодаря друзьям — один из моих знакомых разработчиков поделился со мной клиентом одного из своих проектов.
С чего начать новичку?
В первую очередь учим английский 🙂
Во-вторых, некоторые базовые вещи вроде HTML, CSS. Вы можете попробовать другой прием и сначала просто изучить программирование — изучить паскаль, базовый язык или что-то еще. Хороший программист отличается алгоритмическим мышлением. Это долгий, но правильный путь.
Чего вам не хватало в начале пути?
Наверное, наставник.
Можете посоветовать книги, сайты?
Самая крутая вещь о веб-разработке, которую я видел: http://www.railstutorial.org/book. Из вещей общего назначения — «Код завершен» МакКоннелла
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Сейчас изучаю разные вещи: от ios-разработки до игровых движков.
Если говорить о сети: я постоянно ищу и при необходимости изучаю разные направления и технологии, но ничего особенного.
В общем, я стараюсь не зацикливаться на сети, но и исследую разные области.
Антон Черепанов, веб-разработчик в Evrone, ментор mkdev.me.
Как давно вы работаете в веб-разработке?
На 3 года
Почему вы выбрали программирование и веб-разработку?
Раньше я играл в wow, а потом захотелось иметь собственный веб-сервер и, конечно же, веб-сайт.
Каким образом вы это узнали?
Самостоятельная работа, работа с наставником
Расскажите немного подробнее, как вы начали: как, когда, что?
Когда я был молод, мне нравилось играть в WoW, но потом мне стало скучно, и я подумал: а что, если я сделаю свой собственный сервер?
И все начало взлетать, сначала я скачивал сайты и устанавливал их, потом начал копировать html с одного сайта на другой, потом css.
Затем я познакомился с mangos и trinity — это вау движки с открытым исходным кодом, написанные на C ++. Их было очень сложно исследовать, не понимая, что и как нужно делать, но я точно научился компилировать и патчить 🙂 Потом я обнаружил, что на этом можно неплохо заработать и продолжил учиться, но только веб-разработка , потому что мне это было приятнее, чем возиться с C ++.
Затем я поступил в колледж по специальности «Программная инженерия для компьютеров и компьютерных систем», и это дало хорошую основу для алгоритмов и баз данных.Затем год с php, а затем прекрасный мир рубина.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Не очень скоро, долгое время я даже не знал, что на этом можно заработать, так может через 2 года)
С чего начать новичку?
Поиск наставника и чтение документов.
Чего вам не хватало в начале пути?
У меня было все необходимое.
Можете посоветовать книги, сайты?
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Мы активно геймифицируем процесс своей работы с помощью Track2Win.
Сотрудники отслеживают некоторые из своих действий: смотрели конференцию, читали книгу, выступали на встрече, внесли свой вклад и т. Д. И, чтобы не отставать, вы идете в ногу со всеми и пытаетесь выделиться.
Технологии: AngularJS, Go
Кирилл Ширинкин, консультант по DevOps и облаку
Как давно вы работаете?
На 7 лет
Почему вы выбрали программирование и веб-разработку?
Непреодолимое желание создавать веб-приложения.Был вдохновлен 37signals и другими.
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
В какой-то момент между 13 и 14 годами отец предложил мне создать веб-сайты. Я попробовал Dreamweaver, посмотрел на CSS и на какое-то время отказался от него. А потом, в 15 лет, я внезапно решил, что в конце концов я хочу создавать веб-сайты. Я начал изучать HTML, CSS, немного JS.Через некоторое время формулировка изменилась на «Я хочу делать крутые сайты». Я слышал о Rails, новом и популярном в то время, на habrahabr. Я решил не слушать знакомых мне программистов, порекомендовавших мне изучить PHP и Java. Я начал изучать Rails и написал на нем пару приложений специально для себя. Один из них я до сих пор использую каждый день. Примерно через год после того, как я начал изучать Rails, судьба свела меня с Дмитрием Василцем, @pronix, который стал моим наставником и работодателем на следующие полтора года.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Точное время не помню, могу сказать, что мне было 16, так что не больше года проблем с html и css. Мне нужно было с нуля сделать макет для http://digitalshop.ru. Тогда веб-сайт был построен в виде таблицы, и один парень, который работал там программистом, предложил мне снова создать его блоками. Потом я испытал страдания от того, чтобы наверстать IE6, счастья, которого лишены современные разработчики 🙂
С чего начать новичку?
Самообразование для веб-разработчиков.Это бесплатное руководство для тех, кто не знает, с чего начать и в каком направлении следовать, написанное мной. Вкратце, это 60-страничный ответ на вопрос «С чего начать новичку» 😉
Самое главное: найдите свою мотивацию и не теряйте ее. И сконцентрируйтесь на своей цели. Это универсальный совет, который подходит для любой ситуации, его легче дать, чем следовать 🙂
Чего вам не хватало в начале пути?
Никогда не устану повторять, что для достижения успеха в области веб-разработки необходимы две вещи: желание постоянно учиться и крутой наставник.Мне невероятно повезло: на протяжении всей карьеры у меня были прекрасные наставники, которым я всегда буду благодарен. Один из них, Евгений Янусов, помог мне получить первые знания в области веб-разработки (html, css и т. Д.). Другой, Дмитрий Василец, не только научил меня работать, но и сыграл решающую роль в моем переезде в Берлин 🙂
Можете посоветовать книги, сайты?
Это будет выглядеть как безжалостное самовосхваление, но в моей бесплатной книге) я собрал все ссылки на все необходимые книги и сайты, которые могу с уверенностью рекомендовать.
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
DevOps и облако. Не совсем новый, но я всегда стараюсь там углубить свои знания. Также я стараюсь писать более правильно. Например, по какой-то причине мне иногда нелегко написать «советовать» вместо «совет».
Василец Дмитрий, консультант
Как давно вы работаете в веб-разработке?
На 9 лет
Почему вы выбрали программирование и веб-разработку?
Я никогда не был сосредоточен на сети.Просто выполняю задачи максимально просто и быстро.
Каким образом вы это узнали?
Самостоятельная работа
Расскажите немного подробнее, как вы начали: как, когда, что?
Я учился в университете в 2007 году.
Была банда мошенников, которая обеспечивала других интернетом и зарабатывала на этом деньги в общежитии.
Проект был очень успешным — более 100 клиентов и стабильный доход.
Я написал рабочую панель, чтобы не общаться с клиентами сразу в Rails.И все передал устойчивому человеку. Он еще лучше организовал работу, и доход стал предсказуемым.
В результате проект работал без моего участия, и каждый месяц у меня был надежный источник денег.
Жалко, что все это счастье длилось всего год.
До этого я писал системные скрипты и тесты оборудования на Ruby.
Через какое время после начала обучения вы заработали первые деньги на веб-разработке? Как вы получили свой первый заказ?
Сразу.Стыдно работать бесплатно. Я взял задание на доске фрилансеров и честно сказал, что буду делать это долго, но дешево. А потом мой аппетит начал расти пропорционально нагрузке на задание.
С чего начать новичку?
Что-то делать. Закрыть билеты. Разбирать файлы. Часы на js. Если задают вопросы, но ничего не сделали — пора сдаваться.
Чего вам не хватало в начале пути?
У меня было все необходимое.Жизнь всегда прекрасна.
Можете посоветовать книги, сайты?
Библия, Литвак, Булгаков, Золотой теленок.
Как сейчас продвигается самообучение, какие новые направления вы исследуете?
Наука о данных, менеджмент, финансы, математика, химия.
На этом пока все. Внимательный читатель заметит одну и ту же закономерность во всех интервью:
- Каждый начинал с энтузиазмом к чему-то, будь то игры или веб-приложения.Таким образом, чаще всего программирование — это не самоцель, а навык, который необходимо приобрести для достижения своей цели. Но это не значит, что вы не можете любить программирование. 🙂
- Каждый был активен в самообучении, и для большинства это был единственный способ учиться.
- Наличие наставника — большое преимущество, которое помогло многим людям (если не большинству из них) добиться успеха.
Профессионалы, прочитавшие эту статью — делитесь с нами своими историями в комментариях ниже, вдохновляйте тех, кто только что встал на путь, пройденный вами, и помогайте им не сбиться с пути.
Новичков, которые уже пошли по этому пути — расскажите нам, какие методы, источники, люди помогут вам и сделают ваше обучение более продуктивным.
.
7 известных компьютерных программистов, которые начали программировать в раннем возрасте
Программирование становится важным навыком. Помимо огромного спроса на программистов во всем мире, есть много недооцененных преимуществ обучения программированию. Кодирование учит силе настойчивости, структурированного и творческого мышления и играет жизненно важную роль в нашей повседневной жизни. Стив Джобс сказал об этом лучше всего, когда заявил: «Каждый в этой стране должен научиться программировать компьютер … потому что он учит вас думать.«Если вы хотите писать код, то, вероятно, сейчас самое подходящее время для начала.
Существует бесчисленное множество ресурсов, которые помогут людям всех возрастов немедленно приступить к работе. На самом деле, если ваши дети хотят окунуться в мир программирования или Если вы хотите показать им силу программирования, в настоящее время есть много способов сделать это из дома. Освоение такого важного навыка, как программирование, имеет множество преимуществ в раннем возрасте, что позволяет правильно подготовить ребенка к нашим все более широким технологиям. -зависимый мир Некоторые из самых больших проблем сейчас и в ближайшем будущем будут решены с помощью нескольких строк кода.
Сегодня мы собираемся изучить некоторых из самых молодых талантливых программистов по всему миру и известных программистов, которые изменили наше общество. Если вы хотите заниматься программированием или заинтересовать своих детей, вот вам небольшая мотивация. Но сначала сделаем небольшой обзор.
Что такое компьютерное программирование?
Все технологии, которые вы используете прямо сейчас, от игр, в которые вы играете, до компьютера, который вы используете, обращаются к некоторой форме программирования для управления его функциями.Короче говоря, компьютерное программирование — это способ дать компьютеру инструкции о том, что им делать дальше.
Эти инструкции известны как код, и компьютерные программисты пишут код для решения проблем или выполнения задачи. Компьютерные языки различаются, служат для разных целей, но оптимизированы для конкретных проектов. Несколько строк кода могут указать программному обеспечению на вашем компьютере, как управлять искусственным интеллектом и даже управлять космическим кораблем.
Зачем начинать программировать в молодом возрасте?
Источник: Эндрю Шецвхук / iStock
Цель не обязательно состоит в том, чтобы маленький инженер-программист парил по дому.Как и у взрослых, интересующихся программированием, обучение программированию дает множество практических, реальных преимуществ. Прежде всего, компьютерное программирование учит детей, как решать проблемы с течением времени, а это общая черта, которая применима ко всем аспектам жизни. Более того, дети, которые учатся программировать, развивают устойчивость, расширяют свои творческие навыки и настраиваются на отрасль, в которой нужны таланты. Такие технологии, как искусственный интеллект, Интернет вещей и робототехника, требуют участия программиста.Не говоря уже о том, что есть много творческих вещей, которые вы можете сделать с помощью программирования в мире искусства и дизайна.
Некоторые из следующих известных программистов начали учиться в раннем возрасте, применяя свои навыки для улучшения жизни окружающих их людей, создавая некоторые из продуктов, которые вы используете сегодня. Другие участники в этом списке — просто нынешние вундеркинды программирования, которые хотят сделать то же самое. Возможно, следующий Билл Гейтс?
1. Билл Гейтс
Источник: Joi Ito / Wikimedia
Цитата: «Обучение написанию программ расширяет ваш разум и помогает лучше думать, создает образ мышления о вещах, который, как я считаю, полезен во всех областях.
Кодирование Факт: В 1968 году Гейтс и его друзья часами играли с компьютером и изучали его язык программирования: BASIC, или универсальный символьный код для начинающих.
Большинство из вас знают историю Билла Гейтса. Филантроп, миллиардер и соучредитель Microsoft оказали огромное влияние на вашу жизнь, помогая открыть новую эру в компьютерной сфере. Однако многие люди не знают, что Билл Гейтс начал программировать в раннем возрасте, будучи очарован тем, как работают компьютеры.
Гейтс большую часть своего детства пропускал уроки, чтобы заняться созданием своей первой программы — игры в крестики-нолики, в которой пользователи играют против компьютера. Он даже использовал бы эти компьютеры, чтобы иметь больше компьютерного времени. Спустя годы, став взрослым, Билл Гейтс стал одним из самых ярых сторонников обучения программированию, вычислениям и новым технологиям.
2. Мухаммад Хамза Шахзад
Источник: Medium / William Greenwood
Возраст : 9
Цитата: «Я хочу быть Биллом Гейтсом.”
Кодирование Факт: Мухаммад Хамза Шахзад в настоящее время является самым молодым программистом в мире.
Сколько вам было лет, когда вы начали учиться программировать? Или нашла свою страсть? Девятилетний британский пакистанец из Бирмингема, Великобритания, Мухаммад Хамза Шахзад обнаружил свою страсть в раннем возрасте, став одним из самых молодых опытных программистов в мире. Начиная с шести лет, Мухаммед вырос вокруг компьютеров, развивая в себе любовь к программированию, и поставил перед собой цель стать следующим Билом Гейтсом.Он не только талантлив, но и сертифицирован. Мухаммед недавно получил сертификат программирования Microsoft после шести месяцев обучения. Его оценка? 757, что на 57 баллов выше требуемого проходного балла.
3. Дафна Коллер
Источник: Всемирный экономический форум
Цитата : «Университеты осознали, что онлайн — это не прихоть. Вопрос не в том, заниматься ли в этой сфере, а в том, как это сделать ».
Кодирование Факт: Дафна Коллер — основательница платформы онлайн-обучения Coursera.
Дафна Коллер заинтересовалась программированием в раннем возрасте, а позже использовала свою любовь к информатике для защиты программирования и онлайн-образования. Израильско-американский профессор информатики в Стэнфордском университете и стипендиат программы MacArthur Fellowship создали Coursera, онлайн-сеть курсов, созданных ведущими учреждениями. Здесь вы можете узнать все, что вам нужно знать о программировании, а также другие навыки построения в других предметах.
4. Танмай Бакши
Источник: Youtube / TED Institute
Возраст : 15
Цитата: «Прежде чем вы сможете программировать, вы должны быть увлечены программированием.
Кодирование Факт: Танмай Бакши рассказал на TedTalk о своей любви к программированию.
Другой молодой и известный программист, Танмай Бакши, привлек внимание всего мира и не зря. Танмей не только разработчик программного обеспечения, но и автор, спикер, Youtuber и самый молодой в мире разработчик IBM Watson. Молодой талантливый программист начал свою карьеру в возрасте пяти лет, а в восемь лет разработал свое первое приложение. Тэмми описала волнение для программирования в молодом возрасте, заявив в интервью Factor Daily: «Во-первых, мне было почти нечего делать, когда мне было пять лет.
«Мой отец был программистом, и, поскольку он много программировал, меня заинтриговало, как компьютеры могут отображать такие вещи, как« привет, мир »и даже мое имя. В пятилетнем возрасте я думал, что это волшебство, и я хотел знать, как это делается, и разобраться в деталях ».
Дублированное TTables, приложение для iPhone помогает детям научиться составлять свои таблицы умножения. Наконец, Танмей стал разработчиком IBM Watson в возрасте 12 лет. В настоящее время Танмей работает над проектом с IBM, цель которого — помочь женщине с параличом нижних конечностей научиться общаться с помощью искусственного интеллекта.
5. Марк Цукерберг
Источник: kobbydagan / iStock
Цитата : «Все мои друзья, у которых есть младшие братья и сестры, которые учатся в колледже или старшей школе — мой совет номер один: вы должны научиться программа. »
Coding Fact : Марк Цукерберг в детстве был не только талантливым кодером, но и прекрасным фехтовальщиком.
Люби его или ненавидь; Вы, вероятно, нажали на эту статью, потому что видели ее на Facebook. Как и все остальные в этом списке, Цукерберг был ярым сторонником образования и явного программирования.Соучредитель проявил интерес в раннем возрасте после того, как его отец обучил молодого Цукерберга языку программирования Atari BASIC в 90-х годах, в конечном итоге заставив разработчика программного обеспечения Дэвида Ньюмана наставлять своего сына в частном порядке. Соучредитель Facebook в конечном итоге отточил свое мастерство до такой степени, что он мог создавать свои собственные компьютерные игры и, в конечном итоге, ZuckNet, предшественник AOL Instant Messenger, которые позволяют различным компьютерам общаться друг с другом в его семейной сети.
6.Изабель Сие
Источник: Everipedia
Возраст: 14
Цитата: «Когда вы живете в обществе, учиться легче».
Кодирование Факт: Изабель Сие — основательница «Girls Will Code».
Филиппинско-американская девочка-подросток начала свое путешествие по программированию в возрасте 10 лет. Эта любовь к программированию началась, когда она быстро обнаружила, насколько сильно она любит математику. Получив направление от своего учителя на веб-сайт кодирования, математики и науки Codeacadmey, Изабель освоила HTML, CSS и JavaScript и в настоящее время занимается Python.Недавно она основала компанию Girls Will Code, чтобы помочь другим молодым девушкам, которые хотят научиться программировать, найти свой путь.
7. Джек Дорси
Источник: Joi Ito / Wikimedia
Цитата: «Сделайте каждую деталь идеальной и ограничьте количество деталей до совершенства».
Кодирование Факт: Чтобы вдохновить сотрудников, Джек Дорси водит их на мост Золотые Ворота.
Генеральный директор Twitter использовал свое раннее увлечение поездами, городами и картами, чтобы разжечь страсть к программированию.Дорси влюбился в компьютерную технику, когда его родители купили ему компьютер Macintosh в возрасте восьми лет, и в конечном итоге он строил карты на своем ноутбуке с помощью программного обеспечения. В подростковом возрасте он работал в диспетчерской маршрутизации. Во время учебы в Нью-Йоркском университете талантливый программист в конце концов придумал идею, которая в конечном итоге привела к созданию Твиттера.
Как мне стать программистом?
Если вы хотите заняться программированием или знаете молодого человека, который хотел бы попробовать кодирование.В сети есть множество ресурсов. Хотя они не превратят вас в разработчика программного обеспечения в одночасье, они являются отличным местом для начала. Такие инструменты, как Minecraft for Education, Kodable и Tynker, идеально подходят для детей, а Udacity Codecademy может помочь взрослым начать работу.
Когда вы начали учиться программировать и как, по вашему мнению, это повлияло на вашу жизнь?
.
Страница не найдена · GitHub Pages
Страница не найдена · GitHub Pages
Файл не найден
Сайт, настроенный по этому адресу, не
содержать запрошенный файл.
Если это ваш сайт, убедитесь, что регистр имени файла соответствует URL-адресу.
Для корневых URL (например, http://example.com/
) вы должны предоставить
index.html
файл.
Прочтите полную документацию
для получения дополнительной информации об использовании GitHub Pages .
.