Сам собі програміст. Кому це треба?


Програмування як нова англійська, або чому програмування не тільки для розробників.

 

Програмування можна поділити на дві великі категорії: програмування для когось, коли ви пишете програму, якою користуватимуться люди, і програмування для себе.

 

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

 

 

Опитування професійних програмістів цього року показало, що 81% з них програмують як хобі. Це означає, що програмування приносить задоволення, що це не просто робота, а й розвага. Ви можете користуватися готовими програмами, і в 95% випадків ви будете це робити, навіть якщо ви професійний програміст. Але в будь-якій галузі є завдання, які ніхто до вас не вирішував, і вміння програмувати дає змогу вирішувати їх набагато ефективніше. 

 

Одного разу я був у call-центрі, і мене попросили об'єднати дві таблиці. Людина, яка доручила мені це завдання, очікувала, що я почну по одній копіювати комірки з першої таблиці в другу. Я переніс пару записів, мені набридло, і я написав короткий скрипт, який брав дані з однієї таблиці і замість мене заповнював гугл-форму, що не дуже складно. Мені це сподобалося, але найбільше мені сподобалося те, що колеги дивилися на мене так, ніби я володію якоюсь магією.

 

Писати код цікаво, але, з іншого боку, це випробування. Ти взаємодієш з комп'ютером, і дуже часто ця взаємодія, особливо якщо ти опановуєш нову технологію, нову мову, виглядає так. Ти пишеш код, вважаєш, що написав його правильно, а комп'ютер каже, що в тебе помилка синтаксису. Дійсно, забув крапку з комою, виправив, запустив заново. А комп'ютер каже: «Закрий дужку». Через кілька таких ітерацій програма починає працювати, і стає зрозуміло, хто в домі господар. Річ у тім, що і в навички програмування, і в процесу навчання її є деякі побічні (в тому числі позитивні) ефекти.

 

1. екстремальний досвід керівництва

 

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

 

2. Новий підхід до інформації

 

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

 

3. Професійна комунікація

 

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

 

4. відповідальність

 

Чому вміти програмувати може бути небезпечним? Перша причина - «тижпрограміст». Якщо раптом хтось дізнається, що ви вмієте програмувати, на вас починають сипатися запити: «Перевстанови мені операційну систему, будь ласка, ти ж програміст», “Полагодь чайник, ти ж програміст” тощо. Це не найстрашніша проблема, є страшніші. Наприклад, 2001 року на першому курсі, коли інтернет ще був повільним, я вирішив, що потрібно зробити якусь штуку, щоб швидше обмінюватися інформацією з друзями. Я подумав: є пошта, і вона працює. Тоді я завів окрему поштову скриньку для нашої тусовки і написав скрипт. Робот заходив у цю скриньку, брав листи, які туди прийшли, і пересилав їх усім, хто був підписаний на цю штуку. Так зараз працюють гугл-групи. Якщо я хотів написати всім, я надсилав лист на цю загальну скриньку; якщо хтось хотів відповісти, він відповідав на нього ж, лист потрапляв до всіх, і можна було щось обговорювати.

 

Але в когось переповнилася скринька, а коли скринька переповнюється, поштовий сервер у відповідь на будь-який лист надсилає відлуп, який теж є листом. Він теж потрапив у загальну скриньку, мій скрипт розіслав його за всіма адресами, зокрема й за тією, яка переповнилася. Поштовий сервер згенерував новий відлуп і так далі. У результаті в неділю вранці мене розбудив дзвінок мого друга, який акуратно сказав: «Можливо, там якась проблема, тому що в мене в поштовій скриньці 6 тисяч листів, і їхня кількість збільшується». Нічого особливо страшного не сталося, але це була проблема. Тоді я зрозумів, що код легко може вийти з-під контролю і накоїти лиха, тому треба діяти акуратно.

 

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

 

Як навчитися?

 

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

 

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

 

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

 

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

 

Перша мова програмування - це складно, бо потрібно перебудовувати те, як ви взаємодієте з комп'ютерами й аналізуєте процеси. Універсальних відповідей немає, все дуже індивідуально. Комусь достатньо почитати документацію, подивитися приклади коду, і все зрозуміло. В іншій ситуації добре мати наставника, який відповів би на базові запитання. Ось кілька порад, які здаються мені важливими.

 

1. Підганяйте код під свої завдання.

 

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

 

2. Постарайтеся зрозуміти, чому і як це працює.

 

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

 

3. Не турбуйтеся з приводу математики. 

 

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

 

4. Не бійтеся. 

 

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

 

Є думка, що на тлі розвитку штучного інтелекту і машинного навчання програмісти скоро будуть не потрібні: комп'ютери самі навчаться себе програмувати. Але мені здається, що це не так. Доти, доки є завдання і доти, доки потрібно пояснювати, як їх розв'язувати, програмування існуватиме. Безумовно, програмування сильно еволюціонує, за останні 20 років воно змінилося дуже сильно. Але від того, що комп'ютери стали розумнішими, розробників менше не стало - навпаки, їх стало набагато більше. І мені здається, що далі відбуватиметься те саме.

 

 

Ілля Щуров.