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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 Выполнение

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

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

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

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

5 Подумайте

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

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

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

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

Вывод

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

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

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

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

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024