Рубріки: ДосвідДумка

Забудьте про алгоритми — спочатку навчіться вирішувати проблеми: 5 кроків, які у цьому допоможуть

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

«Яку мову мені вивчити першою?» — це питання я дуже часто чую від знайомих. Раз на пару тижнів у приватних повідомленнях на LinkedIn незнайомці просять порадити найкращу мову для сина, який хоче навчатись програмуванню. І такі питання ставлять не лише новачки, а й люди, що вже мають кілька років досвіду. 

Про це пише докторка наук з фізики елементарних частинок Ері Джурі. Також вона розробляє алгоритми штучного інтелекту, щоб краще ці частинки досліджувати.

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


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

Звісно, кожен хотів би працювати з найкращими інструментами та стати професіоналом якомога швидше.

Ви дивитеся, наскільки різні стеки використовують розробники, і намагаєтесь зрозуміти, який з них найкращий.

Але жодна технологія не є хорошою чи поганою; просто певні технології не підходять для вирішення конкретної проблеми. 

Тому, якщо ви хочете почати програмувати чи вдосконалити свої навички у цій сфері, не ставте питання: «Що мені використовувати, Python чи Julia?». Вам потрібно зрозуміти, яку мову доцільно використовувати саме для вашої проблеми. 

Як вирішувати проблеми

Зізнаюсь, що я не маю освіти за спеціальністю. Я фізик елементарних частинок, який використовує концепції програмування та Data Science, оскільки я маю справу з величезною кількістю даних на роботі.

І це причина, чому фізики затребувані так само, як і програмісти. Ми цікавимо ринок не тому, що знаємо багато про нейтриноСтабільна, електрично нейтральна елементарна частинка, з масою, значно меншою, ніж в інших відомих елементарних частинок чи чорні діри, а тому, що вміємо вирішувати проблеми.

Пам’ятаєте цитату Авраама Лінкольна? «Дайте мені шість годин, щоб зрубати дерево, і перші чотири я проведу, гострячи сокиру». Але ми говоримо про сферу програмування: це означає, що не треба одразу братись до кодингу. Потрібно зрозуміти проблему та обдумати її рішення. 

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

1Розуміння проблеми

Ніколи не пропускайте цей крок!

Чи розумієте ви проблему? Спробуйте пояснити її сторонній людині, яка про неї вперше чує. Спробуйте описати її простою англійською або рідною мовою; намалювати невелику схему. 

Ви розповіли другу і він не зовсім зрозумів, про що саме йдеться? Це означає, що вам потрібно переформулювати проблему і спробувати ще, поки ви не зможете пояснити її так, що вас зрозуміють. 

Ось питання, які вам допоможуть: 

  • Що ви маєте на початку і яким має бути результат? Наприклад, у вас є масив даних; потрібно отримати лінійну регресію даних.
  • Які припущення лежать в основі проблеми? Наприклад, ви можете припустити, що у ваших даних (майже) немає похибок вимірювання.
  • Що ускладнює цю проблему? Наприклад, дані, які ви маєте, можуть бути неповними або набір даних може бути замалим, щоб зробити чіткі висновки.

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

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

Можна розділити її так: 

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

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

3Почніть з прикладу

Диявол завжди ховається в деталях.

Замість того, щоб працювати з проєктом повністю, спробуйте почати з якоїсь невеликої частини. Перевірте, чи працює ваш план, чи, можливо, виникнуть якісь труднощі, і початкове рішення треба адаптувати.

Це допоможе вам розібратися, на що потрібно звернути максимум уваги. Багато проблем здаються простими, але лише до того моменту, коли ви починаєте працювати з ними.

У нашому прикладі можна не використовувати відразу всі відповідні змінні, а виконати лінійну регресію для кількох. Це не надто наблизить до завершення проєкту, але дозволить побачити помилки у сценаріях: а це заощадить вам дуже багато часу. 

Спочатку проведіть невеликі тести та переконайтеся, що ваше рішення працює так, як ви його замислили.

4Виконання

Основна частина. Тепер ви можете створити рішення для вашої великої проблеми.

 Додайте всі свої дані до коду та робіть все, що хочете.

Якщо ви спочатку виконали три попередні етапи, то все має пройти чудово.

Якщо щось йде не так, то раджу ще раз переглянути кроки 1-3 і переконатись, чи все було зроблене правильно.

5Поміркуйте

Те, що ви знайшли одне вдале рішення, не означає, що воно найкраще. Не поспішайте: подумайте, як ви могли б оптимізувати це рішення, як можна вирішити цю проблему по-іншому.

Спробуйте запитати колег, як вони б вчинили на вашому місці. Чи відрізнявся б їхній підхід?

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

І останнє: подумайте про те, як ваше рішення може розвиватися у майбутньому. Чи покращать ваше рішення нові фреймворки чи використання ШІ? Як ваше рішення може сприяти вирішенню інших, навіть більш складних проблем?

Висновок

Люди часто намагаються знайти найефективнішу мову програмування чи найновіший фреймворк, вважаючи це своєрідною «чарівною пігулкою».

Але варто усвідомити, що не це робить вас професійним програмістом. Надзвичайно важливо, наскільки добре ви можете вирішувати проблеми. Звісно, ви не навчитесь цьому за одну ніч. Але якщо ви будете постійно вдосконалювати свої навички у цій сфері, ставити собі правильні питання та витрачати достатньо часу на аналіз проблеми, то ви швидко покращите свій рівень. 

Автор: Ері Джурі

Текст адаптувала Євгенія Козловська

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

У Росії націоналізували одну з найбільших геймдев-компаній. Звинуватили в підтримці ЗСУ

Таганський суд Москви ухвалив рішення про передачу у власність держави 100% уставного капіталу IT-компанії «Леста…

04.06.2025

Adobe випустила бета-версію Photoshop для Android

Компанія Adobe оголосила про випуск бета-версії мобільного додатку Photoshop для платформи Android. Реліз стався через…

03.06.2025

Користувачам Windows дозволять видалили Microsoft Store і перестануть нав’язувати Edge — але не всім

Microsoft оголосила, що внесе у Windows деякі зміни щодо роботи сторонніх додатків та сервісів. Компанія…

03.06.2025

Salesforce скорочує найм програмістів. Причина в штучному інтелекті

Завдяки інструментам на базі штучного інтелекту американський IT-гігант Salesforce скоротив найм технічних працівників, у тому…

03.06.2025

OpenAI переписує інструмент кодування Codex CLI з TypeScript на Rust

OpenAI переписала свій інструмент кодування Codex CLI з TypeScript на Rust. Причиною названо підвищення продуктивності…

03.06.2025

В Microsoft Bing інтегрували безкоштовний генератор відео від Sora

Microsoft додала відеогенератор Sora від OpenAI у свій мобільний застосунок Bing. Це перший випадок, коли…

03.06.2025