Забудьте про алгоритми — спочатку навчіться вирішувати проблеми: 5 кроків, які у цьому допоможуть
«Яку мову мені вивчити першою?» — це питання я дуже часто чую від знайомих. Раз на пару тижнів у приватних повідомленнях на LinkedIn незнайомці просять порадити найкращу мову для сина, який хоче навчатись програмуванню. І такі питання ставлять не лише новачки, а й люди, що вже мають кілька років досвіду.
Про це пише докторка наук з фізики елементарних частинок Ері Джурі. Також вона розробляє алгоритми штучного інтелекту, щоб краще ці частинки досліджувати.
Передаємо їй слово.
Не подумайте, що я скаржусь. Половину коштів на життя я отримую, досліджуючи плюси та мінуси різних мов програмування, фреймворків і моделей ШІ на Medium. І мені дуже вигідно, коли люди цим цікавляться.
Звісно, кожен хотів би працювати з найкращими інструментами та стати професіоналом якомога швидше.
Ви дивитеся, наскільки різні стеки використовують розробники, і намагаєтесь зрозуміти, який з них найкращий.
Але жодна технологія не є хорошою чи поганою; просто певні технології не підходять для вирішення конкретної проблеми.
Тому, якщо ви хочете почати програмувати чи вдосконалити свої навички у цій сфері, не ставте питання: «Що мені використовувати, Python чи Julia?». Вам потрібно зрозуміти, яку мову доцільно використовувати саме для вашої проблеми.
Як вирішувати проблеми
Зізнаюсь, що я не маю освіти за спеціальністю. Я фізик елементарних частинок, який використовує концепції програмування та Data Science, оскільки я маю справу з величезною кількістю даних на роботі.
І це причина, чому фізики затребувані так само, як і програмісти. Ми цікавимо ринок не тому, що знаємо багато про нейтриноСтабільна, електрично нейтральна елементарна частинка, з масою, значно меншою, ніж в інших відомих елементарних частинок чи чорні діри, а тому, що вміємо вирішувати проблеми.
Пам’ятаєте цитату Авраама Лінкольна? «Дайте мені шість годин, щоб зрубати дерево, і перші чотири я проведу, гострячи сокиру». Але ми говоримо про сферу програмування: це означає, що не треба одразу братись до кодингу. Потрібно зрозуміти проблему та обдумати її рішення.
На співбесідах зазвичай очікують, що кандидати уважно розглянуть проблему, а на написання коду у них піде менше половини від відведеного часу.
1Розуміння проблеми
Ніколи не пропускайте цей крок!
Чи розумієте ви проблему? Спробуйте пояснити її сторонній людині, яка про неї вперше чує. Спробуйте описати її простою англійською або рідною мовою; намалювати невелику схему.
Ви розповіли другу і він не зовсім зрозумів, про що саме йдеться? Це означає, що вам потрібно переформулювати проблему і спробувати ще, поки ви не зможете пояснити її так, що вас зрозуміють.
Ось питання, які вам допоможуть:
- Що ви маєте на початку і яким має бути результат? Наприклад, у вас є масив даних; потрібно отримати лінійну регресію даних.
- Які припущення лежать в основі проблеми? Наприклад, ви можете припустити, що у ваших даних (майже) немає похибок вимірювання.
- Що ускладнює цю проблему? Наприклад, дані, які ви маєте, можуть бути неповними або набір даних може бути замалим, щоб зробити чіткі висновки.
2Розділіть проблему на частини
Кожна велика проблема складається з безлічі менших. Наприклад, вище ми згадували лінійну регресію.
Можна розділити її так:
- очищення даних;
- з’ясування того, які змінні в даних є значущими для регресії, а якими можна безпечно знехтувати;
- пошук потрібного інструменту для виконання регресії (тут на сцені з’являється питання про мови програмування та фреймворки);
- оцінка результатів і перевірка помилок.
Такий аналіз проблеми допомагає скласти правильний план роботи. А ще він мотивуватиме вас: не буде відчуття, що робота не рухається. Ви бачитимете свої досягнення на кожному відрізку шляху.
3Почніть з прикладу
Диявол завжди ховається в деталях.
Замість того, щоб працювати з проєктом повністю, спробуйте почати з якоїсь невеликої частини. Перевірте, чи працює ваш план, чи, можливо, виникнуть якісь труднощі, і початкове рішення треба адаптувати.
Це допоможе вам розібратися, на що потрібно звернути максимум уваги. Багато проблем здаються простими, але лише до того моменту, коли ви починаєте працювати з ними.
У нашому прикладі можна не використовувати відразу всі відповідні змінні, а виконати лінійну регресію для кількох. Це не надто наблизить до завершення проєкту, але дозволить побачити помилки у сценаріях: а це заощадить вам дуже багато часу.
Спочатку проведіть невеликі тести та переконайтеся, що ваше рішення працює так, як ви його замислили.
4Виконання
Основна частина. Тепер ви можете створити рішення для вашої великої проблеми.
Додайте всі свої дані до коду та робіть все, що хочете.
Якщо ви спочатку виконали три попередні етапи, то все має пройти чудово.
Якщо щось йде не так, то раджу ще раз переглянути кроки 1-3 і переконатись, чи все було зроблене правильно.
5Поміркуйте
Те, що ви знайшли одне вдале рішення, не означає, що воно найкраще. Не поспішайте: подумайте, як ви могли б оптимізувати це рішення, як можна вирішити цю проблему по-іншому.
Спробуйте запитати колег, як вони б вчинили на вашому місці. Чи відрізнявся б їхній підхід?
Ви також можете спробувати визначити «вузьке місце» у своєму рішенні, тобто ті частини, на які потрібно найбільше часу та ресурсів для виконання.
І останнє: подумайте про те, як ваше рішення може розвиватися у майбутньому. Чи покращать ваше рішення нові фреймворки чи використання ШІ? Як ваше рішення може сприяти вирішенню інших, навіть більш складних проблем?
Висновок
Люди часто намагаються знайти найефективнішу мову програмування чи найновіший фреймворк, вважаючи це своєрідною «чарівною пігулкою».
Але варто усвідомити, що не це робить вас професійним програмістом. Надзвичайно важливо, наскільки добре ви можете вирішувати проблеми. Звісно, ви не навчитесь цьому за одну ніч. Але якщо ви будете постійно вдосконалювати свої навички у цій сфері, ставити собі правильні питання та витрачати достатньо часу на аналіз проблеми, то ви швидко покращите свій рівень.
Автор: Ері Джурі
Текст адаптувала Євгенія Козловська
Favbet Tech – це ІТ-компанія зі 100% українською ДНК, що створює досконалі сервіси для iGaming і Betting з використанням передових технологій та надає доступ до них. Favbet Tech розробляє інноваційне програмне забезпечення через складну багатокомпонентну платформу, яка здатна витримувати величезні навантаження та створювати унікальний досвід для гравців.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: