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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4Виконання

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

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

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

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

5Поміркуйте

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

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

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

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

Висновок

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

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

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

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

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

Більше 50% Go i Ruby розробників з досвідом 3+ роки найняли на $5000. PHP — на самому дні

Більше половини Go i Ruby розробників з досвідом 3+ роки найняли на $5000 або більше.…

26.04.2024

Програмісти намагалися втекти з України в Молдову, щоб влаштуватись на роботу

Прикордонники недалеко від с. Кучурган Одеської області затримали двох програмістів, які намагалися втекти з України…

26.04.2024

В Україні запускають безплатне навчання блокчейн-розробці на Solana

Українське Solana-комʼюніті Kumeka Team з 7 травня запускає безплатне навчання блокчейн-розробці — Solana BootCamp. Про…

26.04.2024

Не гаяли часу. Туреччина створила спеціальні візи для «цифрових кочівників» з України

Туреччина створила спеціальні візи для диджитал-номадів або «цифрових кочівників». Скористатися ними зможуть і українці. Про…

26.04.2024

Росіяни, вірогідно, вкрали для гри про ПВК «Вагнер» створені українцями ассети бійців СБУ

Російська студія NoName Company, вірогідно, вкрала для розробки тактичного шутеру Best in Hell про ПВК…

26.04.2024

11 травня відбудеться хакатон студентських інновацій University Software Bootcamp

11 та 12 травня в NAU HUB відбудеться хакатон студенських новацій University Software Bootcamp. Про…

25.04.2024