Рубріки: МнениеОпыт

Забудьте об алгоритмах — сначала научитесь решать проблемы: 5 шагов, которые в этом помогут

Оленка Пилипчак

«Какой язык мне выучить первым?» — этот вопрос я очень часто слышу от знакомых. Раз в пару недель в личной переписке на LinkedIn незнакомцы просят посоветовать лучший язык для сына, который хочет учиться программированию. И такие вопросы задают не только новички, но и люди с несколькими годами опыта. 

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

Передаем ей слово.


Не подумайте, что я жалуюсь. Половину средств на жизнь я получаю, исследуя плюсы и минусы разных языков программирования, фреймворков и моделей ИИ на Medium. И мне очень выгодно, когда люди этим интересуются.

Конечно, каждый хотел бы работать с лучшими инструментами и стать профессионалом как можно скорее.

Вы смотрите, какими стеками пользуются разработчики, и пытаетесь понять, какой из них самый лучший.

Но ни одна технология не хорошая или плохая; просто определенные технологии не подходят для решения конкретной проблемы. 

Поэтому, если вы хотите начать программировать или усовершенствовать свои навыки в этой сфере, не задавайте вопрос: «Что мне использовать, Python или Julia?». Вам нужно понять, какой язык целесообразно использовать именно для вашей проблемы. 

Как решать проблемы

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

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

Помните цитату Авраама Линкольна? «Дайте мне шесть часов, чтобы срубить дерево, и первые четыре я буду точить топор». Но мы говорим о сфере программирования: это значит, что не нужно сразу приступать к кодингу. Нужно понять проблему и обдумать ее решение. 

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

1 Понимание проблемы

Никогда не упускайте этот шаг!

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

Вы рассказали другу и он не совсем понял, о чем именно идет речь? Это значит, что вам нужно переформулировать проблему и попробовать снова, пока вы не сможете объяснить ее так, что вас поймут. 

Вот вопросы, которые вам помогут: 

  • Что дано изначально и каков должен быть результат? К примеру, у вас есть массив данных; нужно получить линейную регрессию.
  • Какие предположения лежат в основе проблемы? К примеру, вы можете предположить, что у ваших данных (почти) нет погрешностей измерения.
  • Что усложняет эту проблему? Например, данные, которые у вас есть, могут быть неполными, или набор данных может быть слишком малым, чтобы сделать четкие выводы.

2 Разделите проблему на части

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

Можно разделить ее так: 

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

Такой анализ проблемы помогает составить правильный план работы. А еще он будет мотивировать вас: не будет ощущения, что работа не двигается. Вы будете видеть свои достижения на каждом отрезке пути. 

3 Начните с примера

Дьявол всегда прячется в деталях.

Вместо того, чтобы работать со всем проектом, попробуйте начать с какой-нибудь небольшой части. Проверьте, работает ли ваш план или, возможно, возникнут какие-то трудности, и первоначальное решение нужно адаптировать.

Это поможет вам разобраться, на что нужно обратить максимум внимания. Многие проблемы кажутся простыми, но только до того момента, когда вы начинаете с ними работать.

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

Сначала проведите небольшие тесты и убедитесь, что ваше решение работает так, как вы его задумали.

4 Выполнение

Основная часть. Теперь вы можете создать решение для большой проблемы.

 Добавьте все свои данные в код и делайте все, что хотите.

Если вы сначала выполнили три предварительных этапа, то все должно пройти отлично.

Если что-то идет не так, то советую еще раз пересмотреть шаги 1-3 и убедиться, что все было сделано правильно.

5 Подумайте

То, что вы нашли одно удачное решение, не означает, что оно самое лучшее. Не торопитесь: подумайте, как бы вы могли оптимизировать это решение, как можно решить эту проблему по-другому.

Попытайтесь спросить коллег, как они бы поступили на вашем месте. Отличался бы их подход?

Вы также можете попытаться определить «узкое место» в своем решении, то есть те части, на которые требуется больше времени и ресурсов для выполнения. 

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

Вывод

Люди часто пытаются найти самый эффективный язык программирования или новый фреймворк, считая это своеобразной «волшебной таблеткой».

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

Автор: Эри Джури

Текст адаптировала Евгения Козловская

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023