Скопировано с habr.com
Оригинальная статья: Monica Lent
Date: 2019-09-08
Скоро наступит десятый год, как я профессионально занимаюсь программированием. Десять лет! И кроме формальной работы, почти две трети своей жизни я что-то создавала в интернете. С трудом вспоминаю годы, когда я не знала HTML: даже странно, если подумать об этом. Некоторые дети учатся музыке или балету, а я вместо этого создавала волшебные миры, кодируя в своей детской. Размышляя об этом первом десятилетии регулярного получения денег за ввод странных символов в терминал, хотелось бы поделиться некоторыми наблюдениями, как изменилось моё мышление за годы работы Возможно, нынешние джуниоры найдут здесь кое-что из своих убеждений и посмотрят на них с другой стороны. Или осознают, что они уже избавились от этого, поэтому зашли гораздо дальше, чем я была на вашем этапе.
Нынешние сеньоры, возможно, захотят тоже поделиться забавными (и немного унизительными) историями о том, какие уроки извлекли из своего джуниорского опыта.
Для ясности подчеркну, что джуниоры потрясающие: простое появляться на работе, чтобы учиться новому, — это уже требует тонны мужества. Это статья о моём собственном опыте и обучении. Я вовсе не обобщаю, что все младшие разработчики так думают или ведут себя. Надеюсь, пост вам понравится и напомнит что-то из прошлого или настоящего.
Когда я впервые попыталась устроиться на работу, мне было 19 лет. Вакансия называлась «студент веб-мастер». Это довольно удивительное название работы, потому что вы считаетесь и «студентом», и «мастером» одновременно. В наши дни все хотят быть «инженерами», потому что это звучит более модно, но по мне «мастер» — более подходящее слово для этого ремесла. В любом случае, моя работа состояла в том, чтобы писать PHP и MySQL и поддерживать наш сайт на Drupal, а также создавать некоторые внутренние инструменты. Поскольку перед этим я несколько лет кодировала в своей спальне, то была уверена, что эти годы считаются за «годы опыта». Поэтому, когда меня спросили о том, сколько у меня опыта написания на PHP, я уверенно ответила: «3 или 4 года!» Я думала, что много знаю о SQL, потому что умею делать outer join’ы (внешние объединения). А когда я погуглила, то выяснила, что три-четыре года опыта означают большую кучу денег. Перейдём к моей последней работе, которую я получила после пяти лет «комбинированного» студенческого и профессионального опыта (который я считала обычным опытом). В то время мой код практически никогда не проходил код-ревью. Я запускала ssh на сервере и делала git pull. Уверен, что никогда не видела ни одного пулл-реквеста. Не поймите меня неправильно, на первых двух работах я узнала массу потрясающих вещей, просто никогда не работала с другими разработчиками в той же кодовой базе. И всё же я подала заявку на должность «старшего инженера фронтенда», получила предложение и приняла его. Так я стала старшим разработчиком в зрелом возрасте 24 лет.
Ведь они не дали бы мне эту должность, если бы я действительно не была старшим разработчиком, верно?! Конечно, мой впечатляющий опыт привёл меня к этой вершине, так что люди должны меня слушать!!! Я на пике своей технической карьеры, при этом самая молодая в офисе.
Прямо как босс.
Что я в итоге поняла: Не весь опыт одинаков. Мой опыт кодирования в спальне, работа студентом-программистом отличается от научных исследований в информатике и работы в растущем стартапе. Это разный опыт. За год работы в техподдержке в начале своей карьеры вы можете узнать в десять раз больше, чем за пять лет в индивидуальных проектах (или с минимальной обратной связью). Если ваш код никогда не просматривают коллеги, обучение идёт намного медленнее. Вот почему так важны наставники, а ваша команда гораздо важнее, чем разница в пару долларов в зарплате. Не соглашайтесь на должность джуниора, где вы будете работать в одиночку! И не выбирайте первую работу (или, честно говоря, любую работу) только на основе зарплаты. Команда — вот где настоящая ценность.Я также узнала, что названия должностей ничего не означают сами по себе. Позиция CTO может быть в команде из 5 человек, 50 или 500 человек. Это совершенно разная работа, хотя название идентично. Так что мой титул «сеньора» вовсе не делал меня ведущим программистом. Кроме того, иерархические титулы по своей сути ущербны и их трудно сравнивать между собой. Я поняла, что важно не зацикливаться на названиях и не стоит использовать их в качестве какой-то внешней проверки.
Первую половину карьеры я работала в исследовательской сфере. В частности, три с половиной года над одним проектом с государственным финансированием, а затем полтора года в университете на кафедре обработки естественного языка. Могу сказать одно:
программирование в научной среде полностью отличается от программирования в коммерческой индустрии
По большей части, вы не создаёте приложения. Вы работаете над алгоритмами или анализируете наборы данных. В качестве альтернативы, если вы создаете приложение, скорее всего, работа финансируется государством. Это означает, что она бесплатна для других и обычно с открытым исходным кодом. А когда что-то бесплатно, это означает, что обычно вы не несёте ответственности за то, чтобы оно всегда было доступно. Потому что… ну, это же бесплатно. Вы также не несёте ответственности за финансовый доход или конкретные результаты. Впрочем, работа программистом в научном учреждении — это тема для совершенно другой статьи.
Короче говоря, я ушла из института с большими ожиданиями.
Ожиданиями относительно того, как работает индустрия. Автоматические деплои. Пулл-реквесты и код-ревью. Это будет великолепно! Наконец-то качество кода, о котором я мечтала! Но кроме качественного кода с надлежащими стандартами и лучшими практиками , я твёрдо верила, что в софтверной индустрии все пишут тесты.
Хм… Так что представьте моё удивление, когда в первый рабочий день в стартапе я не нашла никаких тестов. Никаких тестов в интерфейсе. Никаких тестов в бэкенде. Вообще никаких тестов. Нда. Ничего. Ноль. NaN. Тесты отсутствуют как явление. Не только не было тестов, но, казалось, никто не испытывал из-за этого проблем! С некоторой наивностью я предположила, что причина в том, что люди просто не знали, как писать тесты для AngularJS. Если я их научу, всё наладится — и мы начнём проводить тесты. Ошибка! В общем, только спустя несколько лет мы внедрили в код автоматические тесты, и это было не так просто, как я думала. Но не потому, что люди не умеют их писать.