Информационный портал по безопасности. Не стоит расплываться, но и сплываться тоже не стоит

Всем своим читателям большой привет!

Прошел почти год с момента моей в блоге. Я думал за это время блог загнется. Но нет он жив. Количество посетителей стабильно растет. Поэтому я решил продолжить работать над блогом. Возможно не так интенсивно, как это было вначале.

Ну а сегодня я расскажу, что со мной происходило все эти 11 месяцев. И я думаю, что это пост будет полезен тем, кто хочет стать программистом. Потому что я взял и переквалифицировался в программиста.

Итак, как я стал программистом в 34 года.

Первое знакомство с компьютером и программированием

Эта история началась почти 20 лет назад. В 15 лет я поступил в Компьютерный Лицей и познакомился с компьютером. Там же я увлекся программированием и был одним из лучших в лицее. Мне очень нравилось программировать, и я был уверен, что после окончания лицея я буду поступать в технический ВУЗ и стану программистом.

Тогда в конце 90-х в Ташкенте программирование не было таким модным занятием как сейчас. Большинство программистов еще не зарабатывали больших денег. Тогда было круто стать юристом или экономистом. И поэтому мои преподаватели убеждали меня, что программированием много не заработаешь.

Они говорили, что лишь единицы добиваются успеха. Для этого надо быть настоящим гением и тогда возможно сможешь уехать в США и работать в условном Microsoft. Как же они ошибались. Ведь сегодня программирование одна из самых перспективных и востребованных профессий. Программисты зарабатывают выше среднего в какой бы стране они не находились.

Но вернемся в конец 90-х. Мои преподы меня убедили, и я пошел учиться на экономиста. То есть я сознательно бросил то, что мне нравилось и погнался за перспективой.

Погоня за перспективой и разочарование

В итоге я стал маркетологом и специалистом по продажам, начал работать в иностранных компаниях, добился некоторых успехов и мог продолжать двигаться и расти в этом направлении. Но не было удовлетворения от своей работы. Я понимал, что это не мое. Что я не чувствую кайфа.

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

Поэтому я уволился с работы, завел блог и начал приводить мысли в порядок и разбираться в себе. Через какое-то время окончательно понял, что хочу стать программистом и заниматься тем, от чего я получаю удовольствие.

Однако сказать легче, чем сделать. Когда я увлекался программированием, то дальше учебных языков я не заходил. Не успел. Поэтому по сути я был полным нулем в современных технологиях. Я лишь понимал логику программирования. Знал базовые общие языковые конструкции. И имел опыт написания программ на учебных языках программирования.

Кроме этого передо мной лежал огромный мир, в котором было столько направлений, что я не знал в какую сторону податься. Стать программистом, который пишет системные драйвера или пишет приложения для смартфонов? А может программировать игры?

Другой вопрос, как обучаться? Пойти на курсы или учиться самому? А может онлайн курсы или вообще найти настоящего программиста, заплатить ему, чтобы он меня научил? Или пойти в ВУЗ?

В общем, как стать программистом, это тема отдельной статьи. А здесь я расскажу, что сделал именно я.

Я начал изучать верстку и мониторить интернет на предмет работы, который был бы близок к программированию. Довольно-таки быстро я нашел, то, что мне подходило. Это был известный интернет-проект в сфере поиска работы типа hh.ru . И в этот проект нужен был человек, помогающий формировать дальнейшую стратегию проекта и быть связующим звеном между руководством и программистами.

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

Поэтому параллельно работе я продолжал изучать верстку и javascript, что-то уже верстал, писал какие-то javascript слайдеры. И одновременно начал искать работу верстальщика. Долго искать не пришлось. По факту менеджером проекта я не успел даже полный месяц отработать.

Меня взяла к себе веб-студия, которая делала сайты. Там мне дали несколько проектов на wordpress. Нужно было готовые темы менять и дорабатывать для клиентов. Скажу сразу, что и в веб-студии я долго не задержался. Работал я там чуть меньше месяца.

Дело в том, что я все это время интенсивно учился. Вечера и выходные у меня не проходили зря. Я штудировал HTML, CSS, Javascript, Jquery, PHP и устройство WordPress. И уже к концу месяца мог сделать готовую несложную тему для WordPress с исходного psd макета.

Но как я понял студии это не было нужно. Они были заточены на нетребовательных клиентов, которым нужно было быстро и дешево. Соответственно это путь покупки готовых тем и их правка. Меня такой вариант не устраивал, и я решил попробовать фриланс.

Фриланс

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

Это придало мне уверенность, и я ушел со студии. Фриланс стал настоящей школой. Различные задания, нет того однообразия, что было в студии. Я действительно сильно вырос пока работал во фрилансе. Очень быстро у меня появились 3 постоянных заказчика. Задачи становились все серьезнее. Я стал увереннее. Все это происходило буквально в течении 3-4 месяцев.

Я стал программистом!

Как-то я вышел на одного заказчика, который предложил поработать на него. В отличие от других моих клиентов этот заказчик делал сайты для иностранных проектов. Поэтому мне стало интересно. Это была тоже веб студия. Но очень серьезная, у которой был портфель хороших иностранных заказчиков.

Мне дали тестовое оплачиваемое задание написать плагин для wordpress. Я сделал. Плагин успешно внедрили в проект, а меня стали привлекать к проектам в данной студии. А через месяц работы в таком режиме, мне уже предложили работать в штате.

Так я стал удаленным штатным сотрудником этой компании и официально стал программистом. Все это время я не переставал учиться и продолжаю делать это и сейчас. Поэтому времени на ведение блога практически нет, и я его забросил почти на год.

Теперь буду стараться исправляться и хоть изредка писать статьи. Они теперь будут больше посвящены разработке. Соответственно постепенно будет меняться тематика блога и наверняка аудитория. Такие вот новости.

Напоследок как всегда интересное видео.

Ну а в ближайших планах написать статью о том, как стать программистом. Думаю, у меня есть несколько советов тем, кто в начале этого пути.

Так что скоро еще увидимся!

Всем привет! Меня зовут Андрей, я работаю в отделе разработки продуктов 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 в Праге. Мне предложили переехать, я подумал (да-да, я не сразу стал паковать чемоданы) и согласился. Теперь вместе с другими девелоперами команды (и матерыми программерами, и новичками) планируем переезд, освоение новой локации, познание чешского пива, ну и, самое главное, новых интересных задач!

Только зарегистрированные пользователи могут участвовать в опросе.

Несколько лет я хотел стать программистом и каждый раз отказывался от этой идеи. Гуманитарию, который уже пошёл по другой дороге, не силен в математике, в 24 года менять направление развития казалось опасным начинанием, лишённым смысла. Ведь кто-то взялся за программирование ещё до школы!

С такими мыслями я просматривал ленту новостей, и моё внимание привлекла статья «Как сотрудник банка с гуманитарным образованием стал разработчиком мобильных игр» . К заголовку я бы еще добавил «и спал по 3-5 часов, продолжая работать в банке, а, возвращаясь домой, сидел с ребёнком».

Если раньше моими кумирами были Шерлок Холмс и Тирион Ланистер из «Игры престолов», то теперь я решил равняться на этого супермена с гуманитарным образованием. Шутки шутками, но статья произвела на меня сильное впечатление, и я решил попробовать.

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

Чтобы дать представление о том, что я считаю «крайними мерами», приведу пример одного небольшого лайфхака. Начал я с того, что объединил два дела в одно: спорт и дорогу от метро до дома. Какой смысл ходить пешком, а потом бегать на беговой дорожке? Я перестал заниматься спортом, а вместо этого надевал на работу кроссовки… Ведь многие современные офисные работники уже пересели на велосипеды и самокаты - наверное, в будущем люди будут чаще возвращаться с работы бегом.

Я согласен, что такой лайфхак - это скорее лёгкое проявление фанатизма, чем приём, который легко может взять на вооружение каждый. Но браться за новое дело нужно именно с фанатизмом, иначе, наверное, лучше не браться вообще.

Под конец второй недели я заболел и заметил, что дома, с температурой, я изучил раза в три больше материала, чем за тот же час в метро.

Как я сфокусировался на месяц

Я принял решение уйти с работы и начал изучать программирование с утра до вечера. То, что я успел за первые две недели до увольнения, можно пройти за два дня, если тебя ничего не отвлекает. А меня теперь ничего не отвлекало: я отказывался от всех предложений, которые получал (написать рецензию, сходить в кино, встретиться обсудить новый проект, занять кому-то денег) и старался проводить за занятиями всё свободное время. То есть абсолютно все (ну ладно, часок в день я всё-таки занимался какой-нибудь ерундой, но не больше).

Чтобы сидеть целый месяц и изучать код с утра до вечера, не нужна сила воли. Вообще. Вспомните все статьи, книги, фильмы, лекции о борьбе с ленью и прокрастинацией, которые вам представлялось услышать, увидеть, прочесть. Всё это ерунда! Потому что вопрос поставлен неправильно.

Если вы делаете то, что нужно вам, никакой лени, прокрастинации и прочего возникать не должно. Лень мне кажется отказом мозга выделить вам ресурсы, когда вы занимаетесь фигнёй.

Мне попадалось сообщение на форуме от студента, который ходил на курсы по программированию, в духе: «программистам приходится много работать, они должны работать ещё и дома… очень тяжелая профессия…» Сейчас я могу сказать, что этому человеку вряд ли нужно идти в разработчикиии. Потому что программист не ДОЛЖЕН, и ему не ТЯЖЕЛО - он ХОЧЕТ и ему ИНТЕРЕСНО. Конечно, я не могу назвать себя программистом, но рискну сказать, что если программист ДОЛЖЕН и ему НЕ ИНТЕРЕСНО, то либо он не в том проекте, либо не в той профессии. Когда я писал свои первые приложения, я как будто играл в игру - постоянно возникают новые задачи, и я должен их решать. Решения могут быть разными, простор для фантазии безграничен. Это поинтереснее Skyrim или GTA.

Как я обучался: шкатулка с инструментами

Как человек, который последние 2 года занимался вопросами памяти и запоминания, я знаю о некоторых минусах интенсивного обучения. Мной же написанные статьи (Горячее время в обучении: , ) почти полностью противоречат тому, что я сделал.

Чтобы нивелировать отрицательные эффекты интенсивного обучения, я вдвойне сосредоточился на сохранении опыта. По старой привычке, которую поддерживаю уже второй год, я начал заносить новую информацию в программу Anki , которая позволяет повторять материал через увеличивающиеся промежутки времени (если вы не знакомы с принципами интервального повторения, можете посмотреть статьи Интервальное повторение на Википедии , Помнить все , ).

Но всё пошло не так гладко, как раньше! Если обычно на повторение 50 карточек у меня уходило минут 5, то теперь на 5 карточек могло уйти минут 10. Первое время я мучился, стараясь запоминать всё чуть ли не дословно, но потом понял, что это бессмысленно. Программисту важно уметь быстро находить решения, а не помнить их буквально. Поэтому я начал делать карточки более объёмными и перестал запоминать их дословно. То есть я знаю, какие записи у меня есть, и быстро могу найти нужное по ключевым словам.

Приведу пример типичной карточки средних размеров:

Есть и другой тип - на понимание принципов. Здесь я отвечаю, не подглядывая в ответ.

Это намного удобнее обычного конспекта, потому что с программой для интервального повторения вроде Anki вы следите, чтобы ничего не потерялось. Если мне попадётся вопрос, который я почти забыл или не уверен в ответе, я просто отправлю его на небольшой интервал (через 3 дня в примере ниже).

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

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

Например, я начал книгу Android Development и очень легко прошёл 200 страниц, а потом вообще перестал что-либо понимать. Тогда я отложил книгу и взял обычный учебник по программированию на Java, там застрял на 300-й странице. Затем перешёл на онлайн-курс по разработке под Android и проработал все уроки, кроме последнего - с ним я не справился. Когда вернулся к первой книге, прежние проблемы показались мне пустяком. Помимо этого я параллельно читал бумажный учебник по Java перед сном, а во время еды смотрел видеоуроки на телефоне.

Вообще я заметил, что все курсы по программированию построены так. Сперва тебе часами объясняют простейшие вещи:

А затем за несколько минут пытаются дать остальное:

Хорошо, с = a + b, но зачем вам писать это каждый раз? Если вы перенесёте это в метод, то избавите себя от лишней работы. А вообще, вы могли бы реализовать абстрактный класс или интерфейс и через них уже решать подобные задачи. Попробуйте.
- Что?! Какой ещё абстрактный класс? Зачем использовать функцию? Зачем нужны интерфейсы и абстрактные классы?.. Похоже, программирование не для меня…

Я, конечно, преувеличиваю, но совсем немного. Сначала создаётся впечатление, что это невероятно легко, а потом ты чувствуешь себя идиотом. Дело не в вас, а в программе обучения. Просто надо отложить её на время, и приниматься за другие материалы.

Начинайте решать практические задачи как можно раньше

Этот принцип заслуживает заголовка. Если вы решаете реальные проблемы, вам будет интересно. Вы научитесь именно тому, что нужно вам. На четвертый или пятый день, когда я ещё занимался в метро, я начал писать программу, которая считала интервалы для Anki. Меня интересовало, сколько карточек нужно будет повторять в день через полгода, если всего ты решишь выучить 500 штук.

Графические интерфейсы я делать не умел, но смог ответить на интересовавший меня вопрос. Это было и интересно, и полезно, и вообще круто! Если вы программируете неделю, вы уже можете решать практические задачи!

Другой пример: позавчера я зашёл на КиноПоиск и обнаружил совсем другой сайт. Но мне нужен старый КиноПоиск. Вы видите тут возможность для обучения? Я увидел ии написал приложение Kinopoisk vote . Потому что проходить уроки и выполнять задания - скучно. Интересно делать проект. Пусть приложение получилось так себе, скачает его человек 20 и денег я с него не получу. Сейчас главное, что я многому научился, пока его писал, а писать его было интересно.

Основной проект, над которым я работал - это галерея с фактами . Я хотел пройти весь путь от начала до конца и написать полноценное приложение. Чтобы не повторяться, я решил пойти от обратного - если обычно пользователям нужно что-то «лайкнуть», то здесь им нужно определить, насколько им тот или иной факт не нравится. И если вдруг у меня заведутся пользователи, то будет забавно посмотреть на ТОП-список фактов, которые ненавидят. Сразу скажу, что я не рассчитывал сделать что-то серьёзное - я хотел просто научиться программировать.

Ресурсы, которыми я пользовался

Новичкам я бы посоветовал что-то очень простое и удобное. Такими мне показались книги серии Head first . Написаны они так, чтобы реализовать все возможные принципы эффективного обучения: постоянное повторение, использование эмоций, объяснение сложных концепций через обыденные примеры, инфографика и тому подобное.

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

На мобильном прошел до середины: Изучаем java , Learn java . Ежедневно заходил повторять пройденное в Anki.

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

Итоги марафона

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

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

Если бы можно было вернуться на месяц назад, я бы сделал всё точно так же: нет идеального пути, придётся наступать на грабли, допускать ошибки и на них учиться. Поэтому мне было бы интересно пофантазировать над другим вопросом - что если вернуться на два или три месяца назад? А если на год?

Почему мы не можем решиться на важный шаг сразу? Зачем нам ждать по несколько лет, прежде чем что-то предпринять? Именно поэтому хочу пожелать всем, кто рискнёт заняться новым в следующем месяце или в следующем году: ребят, начинайте сегодня.

Меня регулярно спрашивают, как стать программистом. Ответить на этот вопрос мне одновременно и просто и сложно. Просто – так как я сам работал программистом и до сих пор изредка пишу какой-то код лично, и так как я постоянно с программистами работаю. Сложно – так как первые свои программы я писал ещё при Горбачёве, и все сложности тех лет успели уже выветриться как следует из моей памяти.

Сейчас однако мне прислал письмо начинающий программист, который впервые начал осваивать искусство выдачи ценных указаний твердолобым компьютерам. В письме изложена история его успеха – автор письма в довольно короткий срок переквалифицировался из аниматоров в программисты, и зарабатывает сейчас деньги написанием достаточно продвинутых программ.

Отмечу также важный момент – как вы увидите из письма, автор весьма неплохо владеет русским языком, а также рассказывает о своих навыках в понимании английской речи. Мой опыт показывает, что владение языками хоть и не обязательно для программиста, но всё же оно сильно помогает в работе: разница между человеческими и компьютерными языками не так велика, как кажется на первый взгляд.

Собственно, вот письмо:

Бэкграунд

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

Я получила обычное гуманитарное образование и ни дня не работала по профессии. В школе я получала ачивки районного масштаба, связанные, в основном, с гуманитарными дисциплинами. Кажется, я заняла какое-то место на районной олимпиаде по математике, когда мне светило 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 запускает скрипты прямо у вас в браузере, именно благодаря ему (и некоторым специальным технологиям) вы можете закрыть всплывающее окно или отправить форму, не перезагружая web-страницу.

** HTML - это язык разметки, программ на нём не напишешь, но именно на нём в подавляющем большинстве случаев программист или верстальщик указывает браузеру, как разместить элементы на странице сайта и что это за элементы. Вы можете нажать Cntrl + U, находясь на сайте, и вы увидите, скорее всего, HTML-разметку; кстати, HTML-тэги в ЖЖ именно так и работают. CSS определяет стили HTML-элементов, например, высоту или цвет.

Документацию и курсы по перечисленным языкам программирования и разметки можно найти вот здесь:

HTML:
https://webref.ru/
– и ещё в десятке мест, информации очень много.

*** jQuery - это библиотека (набор готовых скриптов, которые загружаются отдельно) для JavaScript.

Как показывает опыт, тут мне ещё раз стоит напомнить, что текст не мой: я просто опубликовал присланное мне моей читательницей письмо. Вместе с тем, если вы какие-нибудь вопросы по обучению начинающих программистов лично мне, я также попробую на них ответить.

Как стать веб-разработчиком? Как научиться программировать? Как найти работу программистом? Нужно ли для этого высшее образование? Долго ли нужно учиться, чтобы начать зарабатывать на разработке?

Этими вопросами задаётся, наверное, каждый, кто думает о карьере программиста. Основываясь на собственном опыте, я сделал всё возможное, чтобы ответить на большую часть этих вопросов, написав . Но моё мнение касательно самообразования и способов обучения – это лишь мнение одного человека (хотя я, безусловно, не сомневаюсь в его правильности:)).

Поэтому мне пришла в голову идея: взять 12 программистов, в профессионализме которых нет повода сомневаться и спросить у них, как они начали свой путь, как они научились тому, что знают сейчас, и как дошли до оплачиваемой работы. Ниже вас ждут 12 историй становления профи, людей, с опытом работы превышающим количество пальцев на одной руке (с некоторыми оговорками). Надеюсь, вы сможете извлечь из этих историй правильные выводы (спойлер: самообразование рулит) и найти пару-тройку подходящих вам советов.

Программисты

Максим Кремнев, Software Developer,

Сколько лет в веб-деве?

Возможность зарабатывать деньги, делая то что тебе нравится

Самообразование

18-19-20 лет. Работал в это время системным администратором, паралелльно увлекался всякими интересными вещами вроде gentoo, bash, python, django (первое что вспомнил). Как-то на одном локальном джоб борде наткнулся на вакансию руби программиста от , решил, стоит попробовать и может им питонисты тоже нужны. Но оказалось не нужны, а вот рубисты, даже джуниоры (я тогда этого слова не знал), да, нужны. Ну а что... предложили деньги, причем больше чем я получал системным администратором и решил совмещать офлайн и онлайн работу.

С How To или Get started

golang, python, chef, различные db

Павел Хрулёв, Ruby on Rails разработчик, фрилансер на odesk, elance.

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Сложный вопрос. Программирование – потому что есть к этому страсть, это интересно для меня. Веб-разработку – просто как-то так сложилось. Я начал свою карьеру, когда веб-разработка начала становиться популярной, появился большой спрос на веб-разработчиков. Спрос родил предложение в виде меня:)

Какими путями учился этому мастерству?

Самообразование

Расскажи подробнее о начале своего пути: как, когда, что?

Когда начал увлекаться программированием - написал небольшую игру. Возникла необходимость сделать для неё сайт. Так я сделал первый сайт на html. Потом меня попросили сделать сайт за деньги другие люди, а впоследствии я устроился на работу веб-разработчиком. Было это где-то в конце 2007, начале 2008.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Первые деньги - месяца через 4 после того, как сделал первый сайт на html для своих нужд. Заказ получил просто – о моих талантах рассказали, и заказчик сам меня нашёл.

С чего стоит начинать новичку?

Со страсти и жажды новых знаний и умений. Изучать что-то, разрабатывать что-то для себя, для удовольствия, используя полученные знания.

Чего тебе не хватало в начале твоего пути?

По полочкам изложенной информации. Нормальных сайтов и книг на русском было мало, а английским я еще настолько не владел. Т.е. знания английского не хватало тоже.

Все зависит от интересующей темы. На каждую тему есть не по одной книге. Могу рассказать то, что нужно для общего развития, как разработчика:

  • Для изучения и улучшения английского - книги "English for Russians" и сайт
  • О новых технологиях, тенденциях и т.д можно узнать с
  • Решения проблем -
  • Практические навыки кодинга по современным технологиям и в веселом формате можно получить на
Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Сейчас изучаю Cordova и Rhodes framework, т.е. мобильную разработку, совмещенную с веб-технологиями.

О новинках и тенденциях узнаю на хабре. Если что-то заинтересовало, начинаю копать глубже, читать книги на эту тему, статьи на сайтах.

О каких-то подходах, практиках разработки узнаю из блогов разработчиков, на которых я подписывался. Как правило, это какие-то не последние люди в популярных open-source проектах.

И постоянно работаю над улучшением грамматики английского, увеличением словарного запаса, избавлением от акцента. Помогает в этом, как я уже писал, книги "English for Russians", сайт и практика общения с заказчиками.

Варвара, Ruby и node.js разработчик,

Сколько лет в веб-деве?

С вебом как таковым не очень близко знакома, вообще – лет 6.

Почему выбрала программирование и веб-разработку?

Училась в профильном ВУЗе, получалось и было интересно.

Какими путями училась этому мастерству?

Университет, самообразование

Расскажи подробнее о начале своего пути: как, когда, что?

Сразу после института попала в контору, которая выиграла тендер на проект по информатизации Санкт-Петербурга – кабинки госуслуг. Проработала там года полтора, на flex интерфейсы к этим кабинкам писала, поиск по БД адресов и все такое.

Спустя какое время после начала изучения получила первые деньги за веб-разработку? Как получила первый заказ?

Я не фрилансила никогда, все время в офисе.

С чего стоит начинать новичку?

С выбора хорошей компании и коллектива, который за полгода научит новичка не наступать на стандартные для новичков грабли) Привьет хороший кодстайл и прочие полезные штуки в духе тестирования и профайлинга своего кода.

Чего тебе не хватало в начале твоего пути?

Как раз вот хорошего коллектива, сидела, зарывшись в книжки и наступая на общеизвестные грабли. Зато хорошо в плане самодисциплины.

Надо что-то узнать – гуглю. В первую очередь, конечно, доки читать.

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Даниил, программист,

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Программирование - так уж вышло, с 7 лет за компом, начиная еще со спектрума. Круто быть волшебником и архитектором одновременно:)

Веб разработку я не выбирал – всегда мечтал заниматься играми, чем сейчас и занимаюсь. Но до этого работал в вебе, уже не помню сколько, поэтому написал 3:)

Какими путями учился этому мастерству?

Университет, самообразование

Расскажи подробнее о начале своего пути: как, когда, что?

7 лет ZX Spectrum на день рождения, BASIC. Подростком - FIDONET, Си, немного паскаля. Юность – Linux, Python. Молодость – веб-девелопмент, Python, JS, Pylons, Zope, чуть-чуть Django. Ближайшие годы – Python, JavaScript, AS3, C#, Haxe, node.js, Flash, Unity3D.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Около 20 лет просто выложил резюме и начал работать, в офисе, веб-разработчиком на Python.

С чего стоит начинать новичку?

С постигания прицнипа – "пиши как можно меньше кода, но не меньше чем необходимо”

Чего тебе не хватало в начале твоего пути?

Общения с гиками.

Даже не знаю. В своё время прочитал довольно много интересных книг так или иначе связанных с программированием, но советовать в общем случае не возьмусь.

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Компиляторы, OCaml.

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Из интересных моментов – практически не читаю цельных книжек по технологиям. Ибо:

  1. устаревшие знания
  2. однобокий взгляд
  3. сомнительная компетенция автора
  4. много букв

Вместо этого, когда сталкиваюсь с какой-то технологией, первым делом ищу офсайт, какой-нибудь getting started guide, доки по апи, примеры. Если идет туго, то в гугл по конкретным вопросам (чаще всего попадаю на stackoverflow), если совсем туго – то в тематическое сообщество, чтобы задать вопрос (это крайняя мера, т.к. очень напрягает дожидаться пока тебе ответят).

Конкретно сейчас эксперементирую с common node (обертка вокруг node.js, которая реализует соглашения CommonJS и работает через fibers) и mongodb. Ну и по работе приходится изучать рельсы.

Роман Колеснев, Fullstack Rails developer;

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Написал программу, отдебажил, тесты наваял, все прошло и потом встаешь во весь рост и тычешь в нее пальцем со словами "теперь я твой бог!”.

Какими путями учился этому мастерству?

Самообразование

Расскажи подробнее о начале своего пути: как, когда, что?

Программировать по мелочи я начал еще в начальной школе, поэтому информация о том, как я начинал не поможет начать другим. Я вообще не до конца понимал во что ввязываюсь, глупец. Но, in suma, могу сказать следующее: самообразование здесь все, но на первых этапах очень полезны хорошая книга или видеоуроки да старший товарищ по цеху, который в правильное русло мысль направит.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Освоение веба было прерывистым и непостоянным, но после того, как сконцентрировался на rails прошло полгода до получения зарплаты в 30к со свободным графиком и совмещением с учебой на 3-м курсе МФТИ. До концентрации на rails был довольно большой опыт в программировании, базовое понимание JS, CSS, HTML и немного PHP (на PHP в сумме писал 40-50 человекочасов где-то, не больше)

С чего стоит начинать новичку?
Чего тебе не хватало в начале твоего пути?
Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Scala, Play framework, Unity 3D, в скором будущем Swift

Сергей Резванов, ruby-разработчик,

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Компьютерными технологиями начал интересоваться еще в школе, чувствовал во всем этом что-то необъяснимое и притягивающее, такой своеобразный симбиоз машины и человека. В наше время компьютер без человека – простая железка, но и человек не в силах уже прожить без компьютера. А вместе, образуют тандем, где каждый занимает нужное ему место. Для меня разработка и вообще программирование ничем не отличаются, например, от исскуства, т.е. художник с мольбертом, музыкант с инструментом – это равносильные образы креативной личности, точно такой же как и разработчик с его знаниями и умениями.

Какими путями учился этому мастерству?

Самообразование

Расскажи подробнее о начале своего пути: как, когда, что?

Путь программиста начался у меня, когда я устроился oracle-разработчиком в компанию CompassPlus в моем городе (с вебом эта работа не была связана), где оставил 5 лет моей жизни и профессиональной деятельности.

В последний год работы я заинтересовался веб-разработкой и сопуствующими технологиями. Все это сыграло злую шутку – уже невыносимо было работать в ComplassPlus, где технологический стэк был родом из 90-ых. Тогда я решил найти параллельно удаленную команду, с которой смогу развивать свои скиллы как веб-разработчик. Так попал в Secoint, тверская компания, разрабатывающая интернет-магазины на Spee. Какое-то время я работал на двух работах – днем в CompassPlus, сидя в офисе, а вечером удаленно в Secoint.

Через несколько месяцев стало чертовски трудно совмещать две работы (у меня тогда уже была семья), тогда я оформился как ИП и уволился из CompassPlus. И полностью погрузился в веб-разработку и изучение технологий, продолжая сотрудничать с компанией Secoint.

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

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

После пары месяцев изучения. Обратился в компанию веб-разрботчиков на ruby и предложил свои услуги удаленно. C той стороны пришел ответ "Да".

С чего стоит начинать новичку?

Хорошенько подумать, нужно ли тебе это все. Если да, то писать код, читать чужой и снова писать код.

Чего тебе не хватало в начале твоего пути?

Общения с такими же как я... К сожалению, я до сих пор не знаю ниодного ruby/rails разработчика из моего города. Все профессионалы, которых я знаю, виртуальные, я не встречался с ними лично.

Мой любимый книжный магазин – PragProg. Я частенько покупаю там книги связанные с веб-разработкой (чаще электронные версии). Чего-то конкретного нет, все интересно.

Ответы на вопросы иногда нахожу на StackOverflow или подобных ресурсах. Но чаще всего, все же смотрю исходники крупных проектов, порой там находишь больше нужной тебе информации, чем в книгах и статьях.

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Последние месяцы я работаю над очень крупным проектом мобильной аналитики - . И могу сказать только одно: данные правят миром, а за теми, кто умеет эти данные собирать и анализировать – будущее. Поэтому data science это наше все…

Константин, тех. лид в одном из стартапов Санкт-Петербурга

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Всегда увлекали компьютеры и интернет.

Какими путями учился этому мастерству?

Университет, самообразование, работа с ментором

Расскажи подробнее о начале своего пути: как, когда, что?

Начал с самообучения и программирования на Delphi, Pascal, C++. Потом увлекся Unix системами и программированием на Perl. Из него постепенно перешел в вэб-разработку и остановился на Ruby (ну и JavaScript, разумеется). Пробовал Python (Django), но душа к нему не легла.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Первый полноценный заказ получил на фрилансе. Делал небольший сайтик на Perl. Сложно сказать, сколько времени я на том момент я потратил на обучение. Пожалуй, это было самое начало "пути”.

С чего стоит начинать новичку?

С азов и алгоритмов. Книжки, скринкасты, побольше практики.

Чего тебе не хватало в начале твоего пути?

Грамотного наставника, который бы рассказывал мне как и чего надо делать. Ну и как не надо делать тоже:)

Чем больше читаешь – тем лучше. Мне лично очень понравилась "Design Patterns in Ruby" (для рубистов) и "Искусство алгоритмизации" (простым языком показаны несложные, но популярные алгоритмы).

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Везде по чуть-чуть. Планирую серьезней заняться Clojure и побаловаться со Swift:)

Корнеев Евгений, тимлид, SmartSpace

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Потому что мне нравится создавать вещи, которые потом будут использовать люди.

Какими путями учился этому мастерству?

Самообразование.

Расскажи подробнее о начале своего пути: как, когда, что?

Я увлекся программированием еще лет в 12, причем тогда у меня даже компьютера не было. Лет в 14 я уже вовсю кодил простые программы под винду на C++ и Delphi, лет в 16 – компьютерные игры:)

Потом был год застоя в университете, где я развлекал себя только лишь варкрафтом и написанием курсовых для старших ребят. Поняв, что ничего полезного в вузе я не получаю, ушел оттуда и пошел работать. В 17-18 лет меня не хотели брать программистом, поэтому я пошел продавать диски в магазин компьютерных игр. Через полгода директора посадили меня настраивать и конфигурировать 1С в головной фирме. Еще через год, когда мой мозг начал засыхать от 1С, я ушел во фриланс и занялся разработкой сайтов. Сначала интернет-магазины на php-движках, а потом, через некоторое время, заинтересовался крутыми фреймворками и выбрал руби и рельсы.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Если говорить про ранние этапы, когда я делал сайты под ключ на свяких вордпрессах, то я уже не помню. Скорее всего кто-то из знакомых попросил сделать что-то и заплатил, как оно обычно и бывает. Если говорить про рельсы, то вышло почти также. Я предложил танцевальной студии, в которой я преподавал, сделать нормальный сайт за небольшое вознаграждение. Первую свою фултайм-работу я получил тоже благодаря дружеским связям – один из знакомых разработчиков передал мне заказчика одного из своих проектов.

С чего стоит начинать новичку?

Во-первых, с изучения английского:) Во-вторых, с каких-то базовых вещей – HTML, CSS. Можно попробовать зайти с другой стороны и сначала просто научиться программировать – выучить паскаль, бэйсик или что-нибудь еще. Хорошего программиста отличает умение мыслить алгоритмами. Это путь долгий, но качественный.

Чего тебе не хватало в начале твоего пути?

Наверное, наставника.

Cамое крутое, что я видел про веб-разработку: . Из общеразвивающих – "Совершенный код” Макконнелла.

Как сейчас проходит твоё самообразование, какие новые направления изучаешь?

Сейчас пробую разное: от разработки под ios до игровых движков. Если про веб: постоянно смотрю и, по мере надобности, изучаю новые веяния и технологии, но ничего конкретного.

В целом стараюсь не зацикливаться на вебе, но и щупать новые сферы.

Антон Черепанов, web-разработчик в , ментор сайт

Сколько лет в веб-деве?
Почему выбрал программирование и веб-разработку?

Исторически сложилось, играл в wow, а потом захотел свой сервер ну и естественно сайт.

Какими путями учился этому мастерству?

Самообразование, работа с ментором.

Расскажи подробнее о начале своего пути: как, когда, что?

По молодости, очень любил играть в WoW, потом мне стало скучно и я подумал, а что если создать свой сервер? Тут то и закрутилось всё, сначало просто скачивал сайтики и ставил, потом начал из одного в другой html копировать, потом css.

Далее, я познакомился с mangos и trinity - это open source движки wow, написанные на C++. Было очень тяжко в них копаться, не понимая особо что и как, но компилировать и накатывать патчи, я научился определённо:) Далее, я узнал что за это можно получать деньги и продолжил обучаться, но только веб разработке, потому что это показалось более приятным для души, нежели возиться с C++.

Потом поступил в колледж по профессии "Программное обеспечение вычислительной техники и автоматизированных систем”, он дал хорошую базу в алгоритмизации и базах. Год на php и затем прекрасный мир ruby.

Спустя какое время после начала изучения получил первые деньги за веб-разработку? Как получил первый заказ?

Не скоро, долго не знал что за это можно получать деньги вообще, может спустя года два)