Як правильно вчитися?

brain-trainingВибачте, якщо розчарую, але насправді я не знаю як правильно вчитися. Однак є люди, які проводять наукові дослідження у цій сфері та володіють науковими фактами щодо процесу навчання. Вони склали пречудовий курс, який стисло викладає основні здобутки у вивченні процесів навчання, і абсолютно безкоштовно доступний на Coursera. Оскільки навчання – це невід’ємна частина роботи програміста, і оскільки зовсім скоро я знову викладатиму курс з APL програмування для SimCorp (до речі, приходьте на навчання, кому цікаво), то я вирішив цей курс пройти. Дуже рекомендую його усім, хто знає англійську і кому доводиться часто навчатися. Для тих, кому бракує часу і для себе у майбутньому, хочу викласти тут основні ідеї, які мені здаються цікавими. Ще раз підкреслюю, що ці ідеї є науково підтвердженими фактами, а не емпіричними порадами, а посилання на результати досліджень можна знайти в матеріалах курсу.

Мозок працює у двох різних режимах – фокусованому і розслабленому. І цей розслаблений режим, у якому людина ні на чому не зосереджується, відіграє важливу роль у процесі навчання і розв’язування задач. Тому для того, щоб краще навчатися, необхідно міняти режими. Фокусований режим найкраще підходить для механічної роботи, роботи з тим, з чим ми так чи інакше раніше стикались. А от розслаблений режим, під час якого нейронні зв’язки випадково формуються, найкраще підходить для розв’язання творчих завдань. Практична тут порада така: якщо відчуваєш що товчешся на одному місці й не можеш чогось зрозуміти чи придумати розв’язання якоїсь задачі чи проблеми (наприклад щось чомусь не так працює як ти очікуєш), варто замінити фокусований режим на розслаблений. Вийти пройтися, випити кави, прийняти душ. Мені важко пояснити як це відбувається, але раптом виникають нові ідеї. Ось на днях, пів години мучився над куском коду, покинув і пішов штангу потягати. Поки йшов – на думку спало два рішення, одне з яких, прийшовши після заняття, я і реалізував.

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

Зволікання (procrastination) – природна реакція людини, яка не дуже хоче приступати до якоїсь неприємної для себе роботи. Вона починає ходити за чаєм, перевіряти пошту, проглядати Facebook, обговорювати з приятелем останні політичні події й таке інше. Однак щойно людина починає цю роботу робити, ментальний дискомфорт зменшується або зникає. І навпаки тривале зволікання призводить до ментального невдоволення собою: “день минув, а я нічого не зробив!”. Практична порада: активно борися зі зволіканням. Для цього є чудова техніка Pomodoro про яку я писав у іншому пості і яку сам активно використовую.

Науково доведено що нові нейронні зв’язки людський мозок може встановлювати навіть у похилому віці. А отже кожен, хто хоче стати кращим у чомусь, може це зробити. Практична порада: не дозволяй собі звалитися у статичне мислення, тобто переконати себе у тому, що щось тобі не дано. Ти можеш стати кращим у будь-якій галузі у якій ти хочеш стати кращим ніж є сьогодні, навіть якщо тобі за 60, навіть якщо у тебе був крововилив у мозок. Ти можеш розвиватися як програміст, для цього лише потрібна наполеглива праця над собою. Це називають гнучким мисленням, (agile mindset) і про нього Linda Rising робить дуже цікаві презентації.

Практика створює міцні нейронні зв’язки. Банально, кожен знає, але я попри своє знання наробив купу помилок. Я надто багато усього вивчав просто читаючи книги й навіть не витрачаючи час на вправи, мені здавалося, що вони мене лише затримують. Результат – нейронні зв’язки дуже слабкі й вивчене забуто майже відразу. Практична порада: у навчанні більше покладайся на практику та активну участь. Чим більш абстрактний предмет вивчення (наприклад математика), тим важливіша практика для зміцнення нейронних зв’язків. Іншими словами learn by doing!

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

Експерименти зі щурами показали, що щур при взаємодії з іншими щурами створює більше міцних нейронних зв’язків ніж щур, що сидить сам у клітці. Тому практична порада: намагайся працювати й навчатися у різноманітному і яскравому оточені. Ой, а я працюю з дому. Я як раз той самотній щур у клітці… Але на щастя для мене, дослідження довели, що заняття спортом може компенсувати усамітнення (звісно не в соціальному аспекті, а в аспекті розвитку мозку). Таким чином, щоб бути кращим програмістом і учнем, взаємодій з іншими яскравими людьми, а також відривай якомога частіше свій зад від крісла і займайся спортом.

Ха! З’явилася стаття на DOU такої ж тематики і більш повна. Згортаюся, продовження не буде :-).

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Як я підтримую свою продуктивність

pomodoro time mac iconУ нашому сьогоденні, коли життя вирує навколо нас, багатьом дуже важко зосередитися на тому, щоб виконувати свою роботу. А особливо тоді, коли робота не сама цікава (будь яка робота такою стає з часом, приїдається).

Навколо нас постійно люди, що потребують нашої уваги. Електронна пошта, яку завжди кортить перевірити. Facebook, на який хочеться зайти і перевірити, чи хтось лайкнув нашу останню фотку котика. YouTube відео останнього приколу у виконанні наших туповатих політиків. Новинні сайти, які постійно публікують інформацію де і що відбувається.. Кава. Чай. Курілка… Погані новини – якщо ми самі не подбаємо про свою власну продуктивність, про неї не подбає ніхто.

У цьому дописі, хочу поділитися враженнями про техніку, яку я відкрив для себе кілька місяців тому і дотепер її використовую. Надзвичайно проста, цікава і не без прикола. Називається техніка помідора. Суть її полягає у тому, щоб виконувати помідори. Помідор – це 25 хвилин зосередження виключно на одному завданні під рукою. Нічого з того, ще перелічено вище, під час помідора робити не можна. Не можна навіть природні потреби справляти, бо вони також відволікають. Після кожного помідора – перерва 3-5 хв. Після кожного четвертого помідора – перерва 15 хвилин. От і все :-).

Цілком припускаю, що не кожному така техніка підійде. Хтось і без неї достатньо дисциплінований/мотивований і гарує по 10 годин на добу, а комусь усі ці практики продуктивності здаються дитячою забавою. Але якщо мені техніка помідора допомогла підвищити власну продуктивність (абсолютно суб’єктивно, я не проводив ніяких вимірювань), то, напевно, може допомогти й іншим. Варто спробувати. Поділюся своїми враженнями, може когось замотивує.

  • Якщо розбити робочий час, 8 годин, на помідори, то вийде близько 15 помідорів на день. Але зробити 15 помідорів щодня протягом тижня (75 помідорів) і зберегти психічне здоров’я дуже важко. Відверто кажучи, за 4 місяці використання цієї практики я не спромігся видати бодай один тиждень з 55 помідорами. Коли мені вдається день з 12 помідорами – я почуваюся вкрай виснаженим;
  • В офісі з помідорами важкувато, але тим не менше, якщо колегам пояснити цю систему, цілком можна видавати по 10 помідорів на день. У мене виходило. Але майже ніколи не виходило 50 помідорів на тиждень. Завжди трапляються дні, коли забагато часу витрачаєш на наради. Зараз я працюю з дому і 50 помідорів на тиждень – запросто. Тож якщо міряти цією метрикою, то можна стверджувати, що програміст ефективніший в ізоляції ніж в офісі (згоден, не таке велике відкриття :-));
  • П’ятихвилинна перерва може дратувати, якщо саме заглибився у процес кодування. Я в таких випадках її майже пропускаю. Але скоріш за все пропускати більше ніж дві перерви не вийде, концентрації не вистачить. Зате які переваги дають ці перервочки! Я, наприклад, завжди їх використовую для виконання вправ, у тому числі й для очей. Виявляється за 5 хвилин можна їх чимало зробити. Можна просто підвестися і подивитися на дальню точку – уже розвантаження для очного м’язу. Спостерігав також цікавий ефект. Часом зациклюєшся на завданні, б’єшся над ним, але намарно. І тут спрацьовує таймер. Встаєш, розминаєшся, дивишся на ліс вдалечині, і раптом… клік, і приходить в голову ідея як розв’язати проблему. Тобто техніка помідора дозволяє не зациклюватися, а відступити трохи назад і подивитися на проблему під іншим кутом;
  • Спостерігав я і цікавий психологічний ефект. Трапляються дні, коли перекидаєшся постійно з одного завдання на інше, а ввечері відчуваєш втому і незадоволеність днем. Поставлені завдання ніби з місця не зрушали. Починаєш нервувати й думати, що треба перепрацювати кілька годин. Такі відчуття ніколи не з’являються коли виконано 10-12 помідорів. Навпаки, після 10-12 помідорів є відчуття завершеності, відчуття досягнення, приємної виснаженості. І, так би мовити, із почуттям виконаного обов’язку можна йти відпочивати та розважатися.

Кілька слів про інструменти. Техніка помідора так називається тому, що її автор використовував кухонний годинник у вигляді помідора для відстежування 25-хвилинних проміжків часу. Тобто звичайного таймера цілком достатньо. Я все ж пішов далі й використовував ось цей таймер помідорів. Але зрештою зупинився на kanbanflow, де я записую свої завдання і приєдную виконані помідори до певних завдань. Тож за бажання техніку помідора можна також використовувати як техніку відстежування часу та оцінювання трудомісткості завдань.

 

 

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Вчителювання у кар’єрі програміста

Я дозволю собі розділити фахівців-програмістів на дві великі категорії: 1) фахівці, що відчувають дискомфорт і неприємні емоції від викладання чогось іншим; 2) фахівці, які залюбки діляться своїми знаннями або, принаймні, не відчувають дискомфорту, коли справа доходить до викладання. Мислення фахівців з першої групи, анти-вчителів, приблизно таке: “Чому я маю ділитися важко здобутими знаннями?” та “Замість того, щоб ділитися тим, що я знаю, краще я дізнаюся ще щось і напишу реального коду для клієнта”. Я не маю нічого проти такого мислення. Так налаштовані багато дуже кваліфікованих і ефективних фахівців, які творять чудеса проводячи руками по клавіатурі. І хоча я думаю, що відмовою від вчителювання вони шкодять своїй кар’єрі, яка за інших умов була б ще блискучіша, їм краще не викладати. Просто тому, що це їх дратує і змушує почуватися кепсько, а здоров’я важливіше за усе. Гарна новина у тому, що більшість програмістів усе ж таки належить до іншої категорії, категорії вчителів, або потенційних вчителів. Адже людина все ж любить говорити й ділитися тим, що їй по-справжньому цікаво. А програміст особливо. Спробуйте у самого запеклого інтроверта розпитати (краще за пивом, аби він розслабився) про його хобі-проект і самі в цьому переконаєтесь.

Однак мало хто наважується з’явитися перед аудиторією і навчати. Що ж зупиняє? Сором’язливість та брак мотивації. Про сором’язливість. Програмісти страшенно сором’язливі люди (ну нехай не всі, але більшість), а все тому, що професія вимагає постійного навчання. А ми знаємо, що чим більше вчишся, тим більше розумієш, що нічого не знаєш. Тому з’являється цілком зрозуміле небажання вчити тому, що розумієш, що сам знаєш не достатньо. Але згадайте скільки разів в університеті на лабораторних роботах ви задавали питання саме своїм колегам студентам, які так само, як і ви, навчалися і не були експертами. Психологічно легше запитати людину, яка разом з тобою проходить шлях навчання, а не експерта. Тому варто проковтнути скромність і якщо хочеться навчати – слід йти і робити це. Ніхто не знає всього. Потрібно лише трішечки знати більше ніж аудиторія, і цього достатньо. Так, можуть задати запитання, відповіді на яке ви можете не знати. Але хто знає все? Гадаєте експертам не задають таких запитань? Просто не претендуйте на експертизу, а визнайте, що вам треба вивчити глибше це питання, справді вивчіть його і дайте відповідь пізніше (наприклад, електронним листом або дописом у блозі).

Мотивація. Навіщо вчителювати програмісту? І так завдання виконує і платню отримує. Я б стисло сформулював причину так: для більш повного і цікавого професійного життя та розвитку кар’єри. А розлого розгляну такі причини/стимули:

Стати кращим програмістом. Програмування – це не просто інженерна діяльність. Це, якщо можна так висловитися, педагогічно-інженерна діяльність. Фундаментально ми формалізуємо процедурні (імперативні) знання так, щоб машини могли користуючись цими знаннями виконувати поставлені завдання. Тобто у певному сенсі ми навчаємо машину. Але важливіше викласти ці процедурні знання так, щоб інша людина максимально точно і швидко їх зрозуміла. У цьому є прямий економічний зиск: менше часу на читання коду -> більше часу на нову функціональність, що має цінність для клієнта. Тож щойно ви сіли вранці за клавіатуру, ви уже вчителюєте, і наскільки ви це добре робите залежить від того, як часто ви вчителюєте перед людською аудиторією. Хочу зауважити тут, що я маю на увазі не лише класичне вчителювання, типу викладач і група студентів. Вчителюванням може бути й скрінкаст, і подкаст, і допис у блозі, і вебінар, і коучінг джуна (junior developer :-)). Зараз існує дуже багато можливостей і форм вчителювання.

Гарно опанувати технологію/практику програмування. Кажуть, ніби щоб по-справжньому опанувати якусь тему, слід на цю тему написати книгу. А що таке книга для автора, як не спосіб поділитися знаннями? Програмісти мусять постійно навчатися, щоб залишатися потрібними на ринку праці й викладання мало не єдиний спосіб закріпити отримані знання. Можна заперечити, що багато практики закріпить знання. Так, це правда, вчителювання – то марнування часу, якщо крім нього ви не практикуєте як професійний програміст. Але якщо ви маєте гарну практику за плечима, вчителювання дозволить краще зрозуміти і запам’ятати тему, систематизувати знання, зрозуміти глибинні залежності та структуру понять і концепцій. Наприклад, ви можете мати багато досвіду в JavaScript та C#. Тепер спробуйте комусь пояснити чому JavaScript в першу чергу об’єктно-орієнтована, а не функціональна мова програмування. Спробуйте пояснити чим фундаментально відрізняються об’єкти від замикань у C#, що спільного між делегатами та інтерфейсами, що це взагалі таке, і ви відчуєте, як ваш рівень і глибина розуміння предмету росте. Інший приклад. Я працював уже два роки на APL коли почав викладати цю мову програмування іншим, і все ж мав важкі часи, коли готувався до лекцій. А після закінчення курсу по APL я став відчувати, що краще розумію мову, краще можу впоратися з конструюванням ідіоматичного коду на ній.

Зробити наступний крок у кар’єрі. У кар’єрі програміста дуже ймовірно може статися… глухий кут? Вивчення нових технологій заради нових технологій? Уже не цікаво, адже кожна нова – це по суті добре забута стара + кілька плюшок. Стати архітектором і сидіти у вежі зі слонової кістки, малювати діаграми та днями сидіти на мітингах? Не те, адже хочеться писати код. Менеджмент? Хай Бог милує! Чим же тоді зайнятися, куди розвиватися? Вчителювання може стати відповіддю. Тут людина може знайти вихід накопиченій за багато років енергії, мотивацію і сенс у поглибленні своїх знань. Адже людина – соціальна істота і може віднайти сенс своєї діяльності у вчителюванні та допомозі іншим опанувати цей непростий фах. Тепер, будемо відверті, вчителювання не надто високооплачувана діяльність. Але зовсім не обов’язково покидати роботу програмістом. Можна викладати й на робочому місці, після роботи, можна стати консультантом. Зрештою, можна погодитись і на постійне вчителювання, адже за роки роботи програмістом ви надбали достатньо і вам не потрібні уже високі доходи, чи не так?

Емоційно відпочити. Існує три типи навантаження: фізичне, емоційне та інтелектуальне. Людина відпочиває, коли отримує навантаження іншого типу, ніж те, що вона отримує під час роботи. Програміст отримує надмірне інтелектуальне навантаження і шкідливий фізичний стрес. Тож відпочинок має бути фізичним і емоційним. Якщо з фізичним зрозуміло, то як отримати емоційний відпочинок? Хто заперечуватиме, що робота програміста монотонна? Тобто щодня те саме місце і той самий комп’ютер, і мало що відбувається. А надто якщо програміст працює сам, віддалено. Змінити обстановку і відпочити емоційно можна вчителюванням. У цьому випадку вчителювання має бути не віртуальним. Потрібно обрати аудиторію, до якої треба поїхати. Це може бути конференція, тренінг, семінар або курси. Таким чином ви знайомитеся з новими людьми, буваєте в нових місцях і переживаєте такі потрібні нові емоції.

Поділитися знаннями та розширити мережу соціальних контактів. Не кожному хочеться ділитися знаннями, але багато хто отримує від цього величезне задоволення, бо як я вже казав: людина – соціальна істота. Багатьом з нас також важливо мати широку мережу соціальних контактів для спілкування, в тому числі й на професійні теми. Часто хочеться просто поділитися тим, що вивчив, чи тим, яку проблему розв’язав, або тим, яка цікава ідея спала на думку. Одним словом, тут немає раціональної причини, крім біологічної. Просто хочеться, просто тому, що соціалізація і взаємодія дала нам процвітання як біологічному виду. Тут є і цікавий побічний ефект. Ваші студенти з часом стають фахівцями, що приймають рішення. Це може дуже посприяти вашому наступному працевлаштуванню чи під час пошуку наступного клієнта.

Прорекламувати себе. Вчителювання – це чудовий інструмент маркетингу. Мало того, що ваша аудиторія дізнається про ваше існування, про ваші фахові та комунікативні здібності, так вона ще й дізнається у чому ваші інтереси, які технології ви опанували та на якому рівні. Зрештою, потенційні роботодавці та замовники розуміють, що ви не просто робите роботу за гроші й викидаєте з голови усе, щойно настає шоста вечора, а захоплюєтесь тим, чим займаєтесь, маєте так би мовити пристрасть (passion). Роботодавці дуже таке люблять, адже вони хочуть найняти людину з високою внутрішньою мотивацією, яка окрім основної роботи ще й буде сприяти поширенню знань і компетенцій в компанії. Зверніть увагу, що найпопулярніші у світі програмісти, які зробили своє ім’я не продуктом чи компанією (як Лінус Торвальдс чи Біл Гейтс, хоча, гадаю, і вони немало вчителюють), наприклад, хлопці, про яких я писав, досягли популярності в основному через вчителювання та активне просування своїх учительських та наставницьких послуг.

І нарешті, реалізувати професійну відповідальність за розвиток індустрії в цілому. Індустрія програмного забезпечення зростає шаленими темпами й щоп’ять років кількість програмістів збільшується удвічі. Це означає, що ветеранів програмування, яких між тим активно знищують менеджерські позиції, пенсії, хвороби й тому подібні речі, дуже мало. Таких, що програмують більше 11+ років, всього 24.2%. А про 20+ годі й казати. Тому відповідальність тих, хто входить у ці 24 відсотки, забезпечити становлення інших 76%. А це ж в середньому по 3 студенти/підмайстри на кожного!

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail