программное обеспечение - это единственное, что вам нравится

Есть масса причудливых программных вакансий и море учебных пособий, блогов и сообщений на LinkedIn о том, как попасть в FANG и технологическую индустрию, но нет ясности в том, какой будет ваша настоящая работа. Вы изучали Geeks4Geeks и старательно решали вопросы Leetcode, и, наконец, получили большую техническую работу, Поздравляем! Это сбывшаяся мечта. Но что дальше? Вы когда-нибудь задумывались, над чем вы на самом деле собираетесь работать? Какие роли программного обеспечения существуют в компании и как именно вы можете их использовать?

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

Вкратце существует 11 широких типов программных ролей:

  1. Инженер по продукту / Инженер полного цикла / SDE
  2. Backend / Platform / Системный инженер
  3. Фронтенд-инженер
  4. SRE / Devops Engineer
  5. Инженер по машинному обучению
  6. Специалист по данным
  7. Инженер по данным / аналитик данных
  8. Инженер по приложениям / Инженер службы поддержки
  9. Android / iOS инженер
  10. Исследователь безопасности / Этичный хакер
  11. Инженер по обеспечению качества / SDE in Test

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

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

Существует несколько общих команд в масштабах компании, которые будут создавать платформы, которые могут использоваться другими командами в компании. Например, в Amazon Push-уведомления, электронные письма, SMS, идентификация и аутентификация, ведение журнала, хранилище данных, отчетность и т. Д. - это сервисы, которые будут использоваться всеми продуктами Amazon (электронная коммерция, премьер-видео, музыка, Kindle, звуковой , AWS и тому подобное). Поэтому вместо того, чтобы создавать новую услугу с нуля для каждого нового продукта, они используют общую услугу, чтобы справиться с этим. Это помогает создать центральную экспертную систему и команду, имеющую очень глубокое и конкретное понимание этой платформы. Эти инженеры работают над крупномасштабными распределенными системами и работают над сложнейшими проблемами миллионов пользователей.

Например, будет группа инженеров платформы под названием email-platform, которая позаботится о создании платформы для роуминга электронной почты, на которой разные команды / клиенты / продукты могут отправлять электронные письма, используя свой API, так что конкретный продукт команды (инженеры Amazon Pay Full Stack) могут сосредоточиться на своих основных функциях продукта.

Front-End Web Engineer отвечает за реализацию визуальных и интерактивных элементов, с которыми пользователи взаимодействуют через свой веб-браузер при использовании веб-приложения. В основном они работают с библиотеками HTML / CSS, JavaScript и JS, такими как React.js, AngularJs и т.д. приложение. В Amazon Pay они должны будут интегрировать шрифты, типографику, изображения, значки, кнопки с призывом к действию, структуру и дизайн веб-страницы, а также ее общий вид.

Команда Site Reliability Engineering (SRE) / Dev Ops team заботится об управлении инфраструктурой, т. Е. Следит за тем, чтобы код, разработанный инженерами по продукту, был развернут и бесперебойно работал на машинах или в любом облаке (AWS, Microsoft AZURE или Google Cloud). Они управляют реальными реальными машинами в облаке или центре обработки данных и управляют сетью, проектированием и архитектурой системы, а также безопасностью. Команда SRE для Amazon Pay отвечает за доступность, задержку, производительность, эффективность, управление изменениями, мониторинг, реагирование на чрезвычайные ситуации и планирование емкости компьютеров.

Инженеры по машинному обучению (ML) разрабатывают алгоритмы, которые могут получать входные данные и использовать статистические модели для прогнозирования выходных данных с помощью динамических точек данных. Работа специалиста по данным очень похожа на работу инженера машинного обучения в том смысле, что обе роли включают работу с огромными объемами данных. Следовательно, и инженеры по машинному обучению, и специалисты по данным должны обладать отличными навыками управления данными. Специалисты по обработке данных в основном озабочены получением ценной информации для стимулирования роста бизнеса посредством принятия решений, ориентированных на данные. Напротив, инженеры по машинному обучению сосредотачиваются на разработке самоуправляемого программного обеспечения для автоматизации прогнозных моделей.

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

Инженер данных отвечает за архитектуру, построение, тестирование и поддержку платформы данных в целом. Они обрабатывают хранилища данных, конвейеры данных и ETL ( извлечение, преобразование и загрузка ). Извлечение данных из различных исходных систем, а затем преобразование данных (например, применение вычислений, конкатенации и т. д.) и, наконец, загрузка данных в систему хранилища данных. Они работают над проектами больших данных над петабайтами данных, используя Hadoop, Data Lakes, Snow Flakes, Spark, Scala и т. Д.

Каждое действие и транзакция, выполняемые в Amazon Pay, изначально помещаются в очередь или на потоковую платформу, такую ​​как Apache Kafka, после чего данные извлекаются, трансформируются, очищаются и помещаются в постоянное хранилище, подобное озеру данных, так что ML / DS инженеры могут эффективно запускать на нем алгоритмы. Весь этот процесс - от извлечения, преобразования и управления огромными конвейерами данных - выполняется инженером по данным.

Если вы дожили до этого места, у меня для вас есть бонусный мем.

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

Как мобильный разработчик, вы будете сотрудничать с внутренними командами при разработке интерфейсов для приложений для Android и iOS. В нашем примере они будут разрабатывать интерфейсы и экраны для мобильных устройств и обеспечивать их совместимость со всеми типами мобильных телефонов (с экранами разных размеров) и различными версиями Android. Подобно фронтенд-инженеру, они используют ту же базу данных API / Backend, разработанную командой разработчиков продукта.

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

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

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

Это мой первый пост в блоге, дайте мне знать, что вы об этом думаете!