6:28 am

Звонит первый будильник. Вздремнуть.

6:30 am

Звонит второй будильник. Вздремнуть.

6:34 am

Звонит последний будильник, и я знаю, что он последний, поэтому выскакиваю из постели и сразу включаю музыку. Музыка действительно может меня разбудить, и я обычно включаю радио Софи Туккер или Руфус Дю Соль на Spotify. Я начинаю собираться в спортзал на утреннюю тренировку. Я не жаворонок, но люблю утренние тренировки. Я люблю потренироваться перед работой, потому что я приезжаю очень бодрым и готовым взять на себя рабочий день!

7:40 am

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

Когда я закончу, я буду готов к 20-минутной прогулке до офиса. В это время я люблю слушать подкасты. Мои любимые - On Purpose с Джеем Шетти и Armchair Expert с Даксом Шепардом.

9:30 am

Наконец-то я в офисе. Обычно я не первый в офисе, поэтому меня встречают множеством слов «доброе утро!» От моей замечательной команды. Затем я иду на кухню, наполняю свою большую столовую водой и беру завтрак. Вернувшись к своему столу с завтраком в руке, я начинаю просматривать непрочитанные сообщения Slack. Обычно они представляют собой смесь корпоративных объявлений, сообщений для команды и юмора не по теме. Некоторые из сообщений поступают из Календаря Google, сообщая мне, что у меня в календаре на день: командная встреча, несколько 1: 1 с моими товарищами по команде и послеобеденное собрание для обсуждения нашего перехода на TypeScript.

10:00 am

Я готовил нашу кодовую базу внешнего интерфейса для широкого внедрения Typescript, и одна из задач, над которыми я работаю, - это настраиваемое преобразование для веб-пакета, которое генерирует определения PropType для компонентов React, написанных на Typescript. Вы спросите, что такое трансформация? Это то, что преобразует код из одного состояния в другое с помощью абстрактного синтаксического дерева (AST). Почему мы это делаем? Мы хотим преодолеть разрыв между компонентами React, написанными на Typescript (в которых отсутствуют определения PropType), и React PropTypes для существующих компонентов, которые есть в нашей кодовой базе.

Нам нужна согласованная проверка типов свойств при переносе нашего Javascript на Typescript, поэтому наличие этого преобразования в конфигурации нашего веб-пакета позволит устранить разрыв между проверкой свойств во время компиляции и выполнения. Пока я сижу за своим столом и работаю над этим, я смотрю на AST Typescript и узлы, которые представляют структуру нашего кода Typescript, включая узел, который представляет способ, которым мы обеспечиваем определение типа для свойств компонента React. Это тот узел, который меня интересует, потому что я буду использовать его для генерации соответствующего определения PropType. Каждый раз, когда я проверяю AST, я восхищаюсь. Не каждый день вы обнаруживаете, что просматриваете дерево, представляющее читаемый вами код.

Узел, на который я смотрю, представляет собой объект с парами "ключ-значение". Что вызывает недоумение, это все числа. Некоторые совпадают, а некоторые нет. Что они могли представлять? Хммм ... Я посмотрю на это после обеда. А пока мне нужно отправиться на стендап моей команды.

11:35 am

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

Полдень

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

12:45 pm

Хорошо, я снова за свой стол. Я открываю VSCode, чтобы начать исследовать, что могут означать эти числа в моем TypeScript AST. Я прошу своего товарища по команде Эндрю пообщаться со мной по этому поводу, и он рекомендует мне взглянуть на пакет npm Typescript, чтобы увидеть, существуют ли эти числа внутри пакета. После быстрого выполнения команды grep я нахожу словарь, содержащий сопоставления чисел, которые я видел в узле AST! Это победа, потому что я больше не озадачен. Я ясно вижу, что они представляют собой разные «символы», которые составляют синтаксис языка. Ключи в словаре представляют как примитивные, так и непримитивные типы в Typescript. Значения в узле относятся к типам. Исходя из этого, мы можем построить новый объект, который позже станет нашим React PropType.

2:00 pm

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

3:00 pm

Я встречаюсь с разными коллегами: двумя техническими менеджерами, одним внутренним инженером и двумя внешними инженерами (включая меня). Мы здесь, чтобы поговорить о недавней миграции, через которую прошла наша бэкэнд-команда, чтобы перейти с PHP на Hack. Нам любопытно услышать их мнение, поскольку этот переход аналогичен предпринимаемым в настоящее время усилиям по внедрению TypeScript в нашу кодовую базу внешнего интерфейса. Цель этой встречи - собрать у нас, фронтенд-инженеров, информацию, полученную при переходе с PHP на Hack, и, надеюсь, избежать некоторых из тех же ошибок. Как известно многим инженерам, единственная константа - это изменение. В этом случае мы меняем кодовую базу внешнего интерфейса, чтобы сделать работу с ней более безопасной, самодокументированной и более легкой для тестирования благодаря статическим типам. Мы поддерживаем внедрение TypeScript в нашей монолитной кодовой базе и с нетерпением ждем возможности пропагандировать его внедрение в ближайшие месяцы.

5:30 pm

Я сворачиваю вещи на работе и отправляюсь домой. Сейчас худшее время, чтобы покинуть наше здание: я застряну в маршрутке в час пик в Соме. Я доберусь домой за 45 минут, хотя я живу недалеко от офиса. Вернувшись домой, я распаковываю спортивную сумку и начинаю готовить ужин. При всем моем интересе к кулинарии и кулинарным занятиям я редко готовлю для себя что-нибудь интересное на ужин. Обычно это яйца и тосты, остатки еды или вообще ничего (если я только что пришел домой после еженедельной работы в «счастливый час» по четвергам). Пока я наслаждаюсь ужином, я посмотрю любое шоу «Настоящих домохозяек» на Bravo или отправлюсь на YouTube и найду видео от команды Bon Appetit. В это время я также буду звонить и писать сообщения членам моей семьи или бесцельно бродить по Instagram.

О Натали

Натали - старший фронтенд-инженер в Slack. Когда Натали присоединилась к Slack, она работала над функциями для новых пользователей и создателей новых команд вместе с командой New User Experience. Совсем недавно она присоединилась к команде Foundations и работает над фронтенд-инфраструктурой, так что другие фронтенд-инженеры в Slack работают настолько продуктивно, насколько это возможно. В настоящее время она внедряет Typescript в кодовую базу внешнего интерфейса Slack.

Спикер конференции, Натали совсем недавно выступала на GraphQL Summit в Сан-Франциско и O’Reilly Fluent в Сан-Хосе. Вы можете найти ссылки на ее выступления в Twitter @natqab.

До Slack Натали работала инженером полного цикла в Zillow Group в Сан-Франциско, используя React, Typescript, Node и GraphQL для развертывания веб-приложений с использованием инфраструктуры AWS (я знаю, много модных словечек). До переезда в Сан-Франциско она училась в Калифорнийском университете в Дэвисе, где получила степень бакалавра компьютерных наук.