Бэ. тл; др. ПОМОЩЬ. В мире, где наши мысли сократились до 140 символов или меньше, мы завалены аббревиатурами и аббревиатурами, призванными сделать общение более эффективным. Трудно понять, какие из них действительно стоит включить в свой личный лексикон. YOLO действительно здесь, чтобы остаться? Кто-нибудь вообще помнит, что означает BOGOF (ответ: купи один, получи второй бесплатно)? К счастью, я здесь, чтобы дать вам халяву. Это сторож, ребята. Входите, ОИС.

OICE — это систематический метод решения проблем. Буквы в OICE обозначают выходные данные, входные данные, сложность иограничения (относительно пространства и времени), а также пограничные случаи и примеры, соответственно. Хотя его основная цель — помочь разработчикам убедиться, что они понимают все важные детали проблемы, прежде чем углубляться в нее, OICE, на мой взгляд, имеет гораздо более широкое применение. Начнем с изучения его использования в традиционном контексте.

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

O:целое число
I: массив положительных и/или отрицательных целых чисел
C: проблема может быть решена с временной сложностью O(n), но давайте отдадим предпочтение любому рабочему решению, а не слишком долго мучаемся с решением O(n). Нет ограничений по пространству.
E: никаких пограничных случаев. примеры: самый большой продукт из трех ([2,5,3,1,9]) //135 или самый большой продукт из трех ([-2,0,-4,5,7]) //56

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

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

Но как мы можем применить OICE к другим сферам жизни? Возьмем, к примеру, проблему выбора типа собаки. Использование OICE может помочь конкретизировать важные детали.

O: порода собак
I: сумма $$$, которую вы готовы потратить
C: доступно 2 часа в день гулять/играть; однокомнатная квартира без двора
E: примеры: чихуахуа, ньюфаундленд, помесь терьера и питта

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

O: должность CXO
I: дополнительное образование, тяжелая работа, налаживание связей и т. д.
C: я хочу попасть на эту должность в течение 2 лет; моя компания не будет создавать новых руководящих должностей в ближайшем будущем — мне придется ждать, пока кто-то уйдет на пенсию/уйдет или посмотрит за пределы компании
E: примеры: Джо, технический директор, раньше занимала мою должность. Она получила степень MBA, возглавила программу взаимного наставничества в компании и завела блог, чтобы продемонстрировать опыт в своей области.

В этом случае нам пришлось бы разбить некоторые из наших входных данных на более мелкие фрагменты. Мы могли бы сделать OICE для получения степени последипломного образования или создания надежной сети. Что касается Джо, у нее есть карьерный путь, которому мы могли бы подражать. Приняв все это во внимание, мы могли бы «псевдокодировать» стратегию для достижения нашей цели в течение двух лет. Следующим шагом будет конкретная реализация нашего плана.

Действительно ли OICE применим для ВСЕХ жизненных проблем? Возможно нет. Но поможет ли это убрать эмоции из уравнения и поставить на их место логику? Абсолютно. Итак, в следующий раз, когда у вас возникнет загадка, попробуйте OICE для размера. Вы можете просто придумать идеальный алгоритм успеха.