Разработчик Бреон Найт уверен, что умение написать приложение и понимание того, как оно работает, глубоко отличаются. После перехода на должность главного инженера по надёжности он переосмыслил свой программистский опыт и описал важные моменты, на которые разработчику нужно обращать внимание с самого начала карьеры.
Программируя, лишь немногие думают о том, как будет работать ПО. Лично я был озабочен только добавлением новых функций и скорейшем завершением проекта. Работая над сайтами, я долгое время не понимал, как хранить статические изображения, настраивать сервер и совершенно не думал о написании тестов. Ниже — несколько вещей, на которые я хотел бы обращать больше внимания во время работы программистом:
Написание подробного описания коммитов и чёткой документации
Убедитесь, что ваш код эффективен и снабжён комментариями, прежде чем выложить его на GitHub. Я пишу описание для каждого файла в коммите — это помогает другим людям понять ход мысли и помогает в процессе отладки. Раньше я стремился сделать всё быстрее, но теперь понял, что чёткая своевременная работа с комментариями экономит время, а не тратит его.
Написание конкретных тестов
Мне нравится выражение «ваша любимая компания находится в 30 минутах от полного краха». Это значит, что гиганты не так нерушимы, как кажется. Сейчас, работая на инфраструктурном уровне, я начинаю понимать, насколько большие проблемы могут возникнуть. Один из способов избежать их — написание хороших тестов. Они должны быть чёткими и легко читаемыми.
Обеспечение безопасности кода
Знания в области безопасности помогли мне лучше понять жизненный цикл кода. Каждый раз, когда вы загружаете что-то в интернет, целостность кода становится очень важной. В противном случае вы можете подвергнуть риску не только клиентов, но и важную информацию компании. Когда люди пользуются вашим приложением, они верят в конфиденциальность личных данных, которые попадают в него.
После истории с Equifax (из-за взлома были скопрометированы данные 143 млн американцев, — dev.by) я понял, насколько важно акцентировать внимание на безопасности при работе с масштабными базами.
В любом хорошем проекте это учитывается, будь то архитектура устойчивого к землетрясениям дома или создание качественного программного обеспечения. Хорошее проектирование подразумевает приоритетное значение безопасности во всех частях кода.
Управление временем
Необходимость всегда быть на связи заставила меня улучшить свои навыки управления временем, а заодно и всю жизнь. Мне всегда хочется делать много вещей сразу, но когда я отвечаю за проект (находясь на дежурстве), всё моё внимание должно быть направлено на бесперебойную работу сайта.
Я использую готовые инструменты, такие как Evernote, для организации своих мыслей и составляю списки задач на неделю. В течение всего дня я вычёркиваю сделанное и переношу незавершённые дела на следующий день. Так я стал более организован и могу следить за полным выполнением всех текущих задач.
Быть внимательным
Я осознал важность сохранения ясного внимания во время дежурств, когда я всегда нахожусь на связи. В такой ситуации я всегда должен быть сосредоточен и готов в действиям. Я не могу позволить себе отвлекаться на сторонние вещи, если моей задачей является инфраструктура и безопасность продукта. Если что-то пойдёт не так, ответственность лежит на мне.
Когда получается «купировать» проблему, это позволяет коллегам уровнем повыше продолжить делать свою работу, не отвлекаясь на «разруливание» непредвиденных обстоятельств, с которыми я не смог справиться. Я использую успешное завершение небольших задач для самомотивации в решении более крупных проблем.
Теперь я думаю как архитектор: раньше в моей голове не появлялись мысли наподобие «Как масштабировать это?». Должность главного инженера по надёжности позволила мне понять работу распределённых систем и лучше прогнозиовать результаты собственных решений.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.