Интервью в журнале Нож: ссылка
Елена Большакова – разработчица в Яндексе
Q. Сколько нужно времени, чтобы стать программистом?
A. А сколько нужно времени, чтобы научиться играть в го или в шахматы? Правила можно понять за полчаса и всю оставшуюся жизнь совершенствоваться. С программированием – так же. Нет универсальной учебной процедуры, когда на входе – неразработчик, а на выходе спустя N времени – разработчик. У каждого свой путь и свое время. Впрочем, начинающий шахматист вряд ли сможет зарабатывать на игре, а для начинающих разработчиков есть много вакансий.
Q. Работа программиста нудная?
A. Скучная работа – та, в которой нет смысла или смысла которой не понимаешь. Смысл программирования в том, чтобы создавать продукты, которые делают что-нибудь полезное. Если понимаешь, какую пользу принесет код, который пишешь, – будет интересно.
Еще смысл программирования – перевод с человеческого языка на машинный. К разработчику приходит описание на человеческом языке: надо, чтобы вот тут была новая страница и чтобы там можно было что-то создавать. А разработчик транслирует: окей, понадобится такая-то таблица в базе данных, такие-то новые методы, так-то исправить старые, нужно проверить, не сломались ли вот такие соседние страницы. Потом он всё это делает, новая программа начинает работать, появляется новая страница, люди могут ею пользоваться, как задумано. Так что разработчик – посредник между миром людей и миром машин. По-моему, это классно и совсем не скучно – быть посредником.
Q. Если я безнадежный гуманитарий, могу ли стать разработчиком?
A. Чтобы программировать, не надо брать интегралы и решать дифуры. Даже перемножать в уме двузначные числа не надо.
На мой взгляд, самое важное в программировании – терпимое отношение к неудачам. Программировать – это постоянно иметь дело с ошибками. Обычный цикл разработки: не компилируется, не запускается, не работает, работает неправильно, опять работает неправильно, падают тесты, появился небольшой баг, и еще один, совсем последний, заработало. Переходим к следующей задаче, и всё по новой.
Программист должен быть большим оптимистом, чтобы нормально переживать такую концентрацию ошибок. А еще нужно быть дотошным: программы выполняются ровно так, как в них написано.
Это может быть непривычно и неожиданно по сравнению с тем, как выполняют просьбы люди. Например, человеку можно сказать: «Сделай мне чаю» – и он сделает. Или скажет: «Чая в доме не осталось, давай лучше кофе».
Если бы человека надо было программировать, пришлось бы говорить: «Пойди на кухню, налей в чайник воды, поставь чайник на плиту, включи плиту, подожди пока закипит чайник, возьми коробку чая с полки, положи в заварочный чайник четыре ложки заварки, залей кипятком, подожди две минуты». Через десять минут человек вернется без ничего, а вы пойдете на кухню разбираться и выясните, что чайник электрический и он расплавился на плите. А чтобы получить понятный рассказ о том, что произошло, вам пришлось бы давать отдельные инструкции: «Если через десять минут не дождался закипания, сделай фотографию кухни, вернись и скажи, что дождаться закипания не удалось».
Вот это всё – про программирование. А что у тебя в дипломе написано и есть ли вообще этот диплом – менее важно. Так что главное – это оптимизм и дотошность.
Q. Как разработчики находят свою первую работу?
A. Выглядит в целом так. Разослать резюме в несколько компаний, где есть позиции для начинающих, ходить на все собеседования, повторять до достижения успеха. Вакансии можно искать на сайтах типа HeadHunter.
Если интересует конкретная компания, стоит на их сайте посмотреть раздел с вакансиями. Еще в крупную компанию можно попасть на стажировку. Это хороший вариант и опыт получить, и с конкретным направлением в IT познакомиться. Во время поиска важно не забывать о смежных с разработкой областях. Могут быть интересные вакансии, например, в автоматическом тестировании.
К собеседованию нужно подготовиться: просмотреть корпоративный блог компании и разобраться, чем компания занимается, какие технологии, фреймворки и решения использует в разработке. После собеседования стоит проанализировать, что прошло хорошо, а что не очень. Какие вопросы задавали? С какими были сложности? Что можно сделать, чтобы в следующий раз справиться лучше? Каждое собеседование – возможность научиться новому.
Q. Все разработчики правда получают кучу денег?
A. Если монетами, то чистая правда! А если серьезно, то размер кучи зависит от уровня разработчика. За ориентирами лучше сходить на HeadHunter.