👻 Далеко не всі розробники усвідомлюють, що програмний код - це не більше ніж думка програміста, яка зафіксована мовою, що одночасно зрозуміла йому та комп'ютеру.
👻 Оскільки люди різні, і думки в них різні теж, то і код вони пишуть по-різному, іноді настільки сильно по-різному, що одномому стає не зрозумілим, що мав на увазі інший.
👻 Саме тому дуже важливою практикою є Code Review - коли написаний код переглядається командою, його або погоджують і приймають до проекту, або відхиляють та відправляють на доопрацювання.
👻 Але робити Code Review правильно так же нетривіально, як і "просто писати якісний код" - погано організований Code Review може нанести більше шкоди, ніж поганий код.
👻 Саме тому варті уваги процеси Code Review, які використовують успішні компанії.
👻 Ловіть свіжі стандарти Code Review від Google (CL - це change list): https://google.github.io/eng-practices/review/reviewer/
👻 І окремо гайд для розробників як краще писати код, щоб він проходив Code Review, а також як реагувати на коменти рев'ювера: https://google.github.io/eng-practices/review/developer/
👻 Оскільки люди різні, і думки в них різні теж, то і код вони пишуть по-різному, іноді настільки сильно по-різному, що одномому стає не зрозумілим, що мав на увазі інший.
👻 Саме тому дуже важливою практикою є Code Review - коли написаний код переглядається командою, його або погоджують і приймають до проекту, або відхиляють та відправляють на доопрацювання.
👻 Але робити Code Review правильно так же нетривіально, як і "просто писати якісний код" - погано організований Code Review може нанести більше шкоди, ніж поганий код.
👻 Саме тому варті уваги процеси Code Review, які використовують успішні компанії.
👻 Ловіть свіжі стандарти Code Review від Google (CL - це change list): https://google.github.io/eng-practices/review/reviewer/
👻 І окремо гайд для розробників як краще писати код, щоб він проходив Code Review, а також як реагувати на коменти рев'ювера: https://google.github.io/eng-practices/review/developer/
eng-practices
How to do a code review
Google’s Engineering Practices documentation
Мене дуже часто запитують, скільки часу треба приділяти навчанню, щоб отримати професію розробника? ОК, давайте поговоримо про це :)
https://youtu.be/YJvjJEvXK3o
https://youtu.be/YJvjJEvXK3o
YouTube
Скільки часу треба виділяти на навчання, щоб отримати професію розробника?
Мене дуже часто запитують, скільки часу треба приділяти навчанню, щоб отримати професію розробника? ОК, давайте поговоримо про це :)
Один з найважливіших принципів у програмуванні - це важливість відповідних назв ідентифікаторів: змінних, функцій, класів і тому подібне. Писати код потрібно так, щоб читати його можна було як книжку, використовуючи іменники та дієслова, а не так, як це робить сам комп'ютер, прокручуючи в голові кожен рядок коду.
Особливість JS в тому, що це мова з динамічною типізацією. Це означає, що будь-яка змінна може мати будь-який тип на відміну від мов зі статичною типізацією, наприклад Java чи C#. Там ти якщо задекларував стрінгу, то завжди будеш мати стрінгу, ніколи в ній не може бути масиву - якщо хочеш масив, то вимушений робити нову змінну. Але в JS за цим треба слідкувати розробнику, якщо ти пишеш код, назвав змінну str, а потім в неї записав масив, то зробив дуже погано, бо хтось інший (або ти сам через деякий час) потім буде вважати що там стрінга, бо змінна називається str.
Ось дуже гарна стаття про те, як варто давати імена ідентифікаторам.
https://hackernoon.com/the-art-of-naming-variables-52f44de00aad
Ну і окремо зазначу, що на курсі ScriptJedi42 я особисто рев'юваю кожен рядок коду, який ви будете писати, за 42 дні ви обов'язково навчитеся давати гарні імена ідентифікаторам. Welcome на курс, щойно стартував набір на нову групу, стартуємо з 25-го листопада: https://sj42.programmingmentor.com/
Особливість JS в тому, що це мова з динамічною типізацією. Це означає, що будь-яка змінна може мати будь-який тип на відміну від мов зі статичною типізацією, наприклад Java чи C#. Там ти якщо задекларував стрінгу, то завжди будеш мати стрінгу, ніколи в ній не може бути масиву - якщо хочеш масив, то вимушений робити нову змінну. Але в JS за цим треба слідкувати розробнику, якщо ти пишеш код, назвав змінну str, а потім в неї записав масив, то зробив дуже погано, бо хтось інший (або ти сам через деякий час) потім буде вважати що там стрінга, бо змінна називається str.
Ось дуже гарна стаття про те, як варто давати імена ідентифікаторам.
https://hackernoon.com/the-art-of-naming-variables-52f44de00aad
Ну і окремо зазначу, що на курсі ScriptJedi42 я особисто рев'юваю кожен рядок коду, який ви будете писати, за 42 дні ви обов'язково навчитеся давати гарні імена ідентифікаторам. Welcome на курс, щойно стартував набір на нову групу, стартуємо з 25-го листопада: https://sj42.programmingmentor.com/
Hackernoon
The art of naming variables
Naming things can indeed be difficult, but the pay off for naming things properly is well worth the effort. Have you ever seen code that looks like this?
Сьогодні вранці повернувся з конференції UP2IT, яка проходила в м. Суми. В суботу розповідав про стан веб-розробки в 2019, а в неділю проводив workshop по Google Cloud. Прямо в дорозі поряд з залізничним вокзалом Львова записав відео з власною думкою з деяких питань, стосовно яких вдалося подискутувати на конференції:
- чи робить тебе програмістом знання мови програмування?
- чим 20-річний сіньйор відрізняється від 30-річного?
- чи автоматично ти сіньйорієш з віком?
- чи варто відвідувати мітапчики та конференції?
- чи не зазорно писати код, коли тобі за 30 чи навіть за 40?
https://youtu.be/QPy-hfyNklk
- чи робить тебе програмістом знання мови програмування?
- чим 20-річний сіньйор відрізняється від 30-річного?
- чи автоматично ти сіньйорієш з віком?
- чи варто відвідувати мітапчики та конференції?
- чи не зазорно писати код, коли тобі за 30 чи навіть за 40?
https://youtu.be/QPy-hfyNklk
YouTube
Чи робить тебе програмістом знання мови програмування?
Сьогодні вранці повернувся з конференції UP2IT, яка проходила в м. Суми. В суботу розповідав про стан веб-розробки в 2019, а в неділю проводив workshop по Google Cloud. Прямо в дорозі поряд з залізничним вокзалом Львова записав відео з власною думкою з деяких…
Піший кур'єр.
Замовив на днях в Розетці подарунок для доньки, доставили досить оперативно, але мене вразило - як саме.
Його приніс "піший кур'єр" (як він сам себе назвав по телефону) - такий собі дядечко з рюкзаком за спиною.
Рюкзак, до речі, досить габаритний - літрів на 60 - це вам зовсім не ті маленькі міські рюкзачки під ноутбуки, і йде він трохи пригинаючись, мабуть ноша нелегка. Ця картина мене прямо шокувала - це ж якийсь сюр - замовляєш через інтернет зі смартфону, а приносить товар людина, пішки, і це в XXI сторіччі!
Я навіть сфотографувати того дядечка хотів, але незручно було, та й мабуть неправильно це - у нього з собою мабуть електроніки всякої немало, небезпечно бути упізнаваним.
Але сам факт, що таке існує, мені спокою не дає - це фактично ілюстрація того, що чекає людство в найближчі роки - комп'ютерна система дає команду людині щось віднести, і вона це робить на своїх двох як Homo Erectus майже два мільйони (!!!) років тому.
Власне люди починають ділитися на дві групи - ті, хто ті програми створює та дає команди комп'ютерам, та ті - хто їх виконує.
А відділяє перших від других - вміють вони програмувати, чи ні. Мабуть якщо хтось роздумує над навчанням, то зараз саме пора :)
Замовив на днях в Розетці подарунок для доньки, доставили досить оперативно, але мене вразило - як саме.
Його приніс "піший кур'єр" (як він сам себе назвав по телефону) - такий собі дядечко з рюкзаком за спиною.
Рюкзак, до речі, досить габаритний - літрів на 60 - це вам зовсім не ті маленькі міські рюкзачки під ноутбуки, і йде він трохи пригинаючись, мабуть ноша нелегка. Ця картина мене прямо шокувала - це ж якийсь сюр - замовляєш через інтернет зі смартфону, а приносить товар людина, пішки, і це в XXI сторіччі!
Я навіть сфотографувати того дядечка хотів, але незручно було, та й мабуть неправильно це - у нього з собою мабуть електроніки всякої немало, небезпечно бути упізнаваним.
Але сам факт, що таке існує, мені спокою не дає - це фактично ілюстрація того, що чекає людство в найближчі роки - комп'ютерна система дає команду людині щось віднести, і вона це робить на своїх двох як Homo Erectus майже два мільйони (!!!) років тому.
Власне люди починають ділитися на дві групи - ті, хто ті програми створює та дає команди комп'ютерам, та ті - хто їх виконує.
А відділяє перших від других - вміють вони програмувати, чи ні. Мабуть якщо хтось роздумує над навчанням, то зараз саме пора :)
На дворі кінець 2019 року, свій ноутбук Dell XPS 15 я купував на початку 2016-го, виготовлений він взагалі в листопаді 2015, потихеньку приглядаюся до нових моделей. Звісно є XPS 15 2019-го року, але корисно подивитися по сторонам, можливо ще щось з'явилося цікаве. В полі мого зору - баланс потужності і компактності, щоб машинка була максимально продуктивною для роботи, і в той же час не була занадто громіздкою для транспортування кожен день.
💻
Зачепилося око за новий MacBook Pro 16 2019-го року. Цікавий апарат - при екрані 16 дюймів навіть трішки легший за мій XPS, потужний, нарешті нормальна клавіатура (пробував якось сучасні макбуки - щось у них з клавою не те) - всім гарний, навіть Windows можна встановити за бажанням.
💻
Але стало мені цікаво стосовно апгрейду комплектуючих - все-таки машина для професіоналів, мала б це передбачати. Але виявляється - ніт, нічого подібного. Жоден з компонентів не є "user accessible", мало того - оперативна пам'ять та SSD взагалі розпаяні і не підлягають заміні: "if you think you need more memory in the future - consider upgrading at the time of purchase". Оце тобі новина - після того як купив, вже жодних апргейдів, а як треба, то бери новий девайс. Щось не дуже еко-френдлі, не говорячи вже про бюджет.
💻
Коли брав свій XPS, то брав його у топовій комплектації - пам'яті було 16Гб, більше просто не існувало, але пізніше вийшла нова модель - там 32. Коли зрозумів, що мені малувато, то поставив собі 32 легко, навіть 64 для експерименту ставив - працює, просто мені стільки не треба зараз. Далі в мене зносився акумулятор - вони всі деградають з часом, то я не просто поміняв його сам, а проапгрейдив на більш потужний, замість оригінального на 84 Вт*год у новіших моделях з'явився на 97 Вт*год - майже як у нового макбука 2019, і це була не просто заміна, а справжній апгрейд - в результаті плюс до години часу автономності, приємний бонус. Ще можна легко поміняти SSD, але мені поки вистачає терабайту. Ну і дехто міняє WiFi адаптер, він теж легко апгрейдиться, якщо треба.
💻
Ось так я кілька років "осучаснював" свою Windows-машинку, навіть не віриться, що їй зараз вже чотири роки з дати випуску. А от макбуки так не вміють, і вочевидь не тому, що це неможливо технічно - просто підхід до бізнесу такий. Щось бачу в черговий раз не судилося стати маководом :)
💻
Зачепилося око за новий MacBook Pro 16 2019-го року. Цікавий апарат - при екрані 16 дюймів навіть трішки легший за мій XPS, потужний, нарешті нормальна клавіатура (пробував якось сучасні макбуки - щось у них з клавою не те) - всім гарний, навіть Windows можна встановити за бажанням.
💻
Але стало мені цікаво стосовно апгрейду комплектуючих - все-таки машина для професіоналів, мала б це передбачати. Але виявляється - ніт, нічого подібного. Жоден з компонентів не є "user accessible", мало того - оперативна пам'ять та SSD взагалі розпаяні і не підлягають заміні: "if you think you need more memory in the future - consider upgrading at the time of purchase". Оце тобі новина - після того як купив, вже жодних апргейдів, а як треба, то бери новий девайс. Щось не дуже еко-френдлі, не говорячи вже про бюджет.
💻
Коли брав свій XPS, то брав його у топовій комплектації - пам'яті було 16Гб, більше просто не існувало, але пізніше вийшла нова модель - там 32. Коли зрозумів, що мені малувато, то поставив собі 32 легко, навіть 64 для експерименту ставив - працює, просто мені стільки не треба зараз. Далі в мене зносився акумулятор - вони всі деградають з часом, то я не просто поміняв його сам, а проапгрейдив на більш потужний, замість оригінального на 84 Вт*год у новіших моделях з'явився на 97 Вт*год - майже як у нового макбука 2019, і це була не просто заміна, а справжній апгрейд - в результаті плюс до години часу автономності, приємний бонус. Ще можна легко поміняти SSD, але мені поки вистачає терабайту. Ну і дехто міняє WiFi адаптер, він теж легко апгрейдиться, якщо треба.
💻
Ось так я кілька років "осучаснював" свою Windows-машинку, навіть не віриться, що їй зараз вже чотири роки з дати випуску. А от макбуки так не вміють, і вочевидь не тому, що це неможливо технічно - просто підхід до бізнесу такий. Щось бачу в черговий раз не судилося стати маководом :)
💻Моя попередня історія про вибір ноутбука була б неповною, якби я не написав, чим вона завершилася.
Отже взяв Dell XPS 15 7590 з восьмиядерним Core-i9 9980HK та 4K OLED, SSD на 1 Tb та RAM 32 Gb, відео GeForce GTX 1650. Це вже мій третій Dell XPS і загалом четвертий ноутбук Dell поспіль, причому кожен раз я обирав озираючись на весь ринок, а не лише на пристрої цієї компанії, але зупинявся саме на них.
💻Цікаво, що всі попередні живі-здорові та продовжують працювати у родині - брав їх у топовому конфігу по процесору/відеокарті, а потім апгрейдив оперативну пам'ять та диски.
💻Якщо порівнювати з новим MacBook Pro 16, то у мого XPS той же процесор, що і в самого топового мака, відеокарти різних виробників, але приблизно одного рівня, мак трохи легший, зато Dell компактніший, АКБ у XPS менш ємка на несуттєві 3%. Зато екрани принципово різні - IPS у мака проти OLED у XPS, який має формат 4К та десь на 30% більше пікселів.
💻Ось саме враженнями від екрану і хочу поділитися.
Хто постійно користується ноутбуками, той знає, наскільки боляче це робити десь в дорозі - яскравості постійно не вистачає, а глянцеві екрани ще й докучають бліками, що робить їх практично непридатними за межами приміщень.
На смартфонах OLED-екрани зустрічаються давно, і ведуть себе на вулиці дуже пристойно, однак на ноутбуках їх не ставили до недавнього часу.
💻Звісно, екран складно описувати словами, але я спробую - хоча в нього скляна поверхня, зображення сприймається зовсім по-іншому, ніж на глянцевих IPS-матрицях, складається відчуття, ніби це щось середнє між матовими та глянцевими екранами. Від глянцевих тут приємна чіткість зображення, а від матових - значно менший рівень бліків на світлі. Особливість технології в тому, що кожен піксель окремо випромінює світло, позаду них немає підсвітки, чорний колір - це відсутність світла, він по-справжньому чорний, такі екрани мають дуже високу контрастність, недоступну іншим технологіям, а це, в свою чергу, робить екран значно приємнішим для очей.
💻Я давно працюю з комп'ютерами, пам'ятаю ще блимаючі CRT-монітори та чорно-білі матриці перших лептопів з жахливим часом відклику. Але лише зараз можу сказати, що нарешті я отримав екран, яким можна цілком комфортно користуватися на вулиці. Також мені дуже подобається, як на ньому виглядають темні теми IDE - це буде особливо цікаво буде почути розробникам. Складається відчуття, що картинка є більш чіткою, самі пікселі ніби "ближче" до скла екрану у порівнянні з IPS. В придачу до цього роздільна здатність у 4K робить дуже приємною роботу з текстом. І хоча для мене це не дуже важливо, але фото та відео на ньому виглядають взагалі фантастично - небачена раніше на ноутбуці насиченість кольорів!
💻Нажаль, у екрана є недолік - із-за особливостей технології під час передачі сірого можна побачити нерівномірність кольору у формі вертикальних полос. Ймовірно проявляється воно по-різному на різних екземплярах, то варто обрати з кількох той, у якого вона проявляється найменше. Я до такого був готовий - читав відгуки власників, і оскільки професійно з зображеннями не працюю, то для мене це непринципово.
💻Також є ризик "вигоряння" пікселів, для чого не слід залишати на екрані на тривалий час якісь статичні зображення, наприклад, панельку задач варто зробити такою, щоб зникала з екрану.
💻Власне екраном я особливо задоволений, це дійсно те, чого давно чекав.
Отже взяв Dell XPS 15 7590 з восьмиядерним Core-i9 9980HK та 4K OLED, SSD на 1 Tb та RAM 32 Gb, відео GeForce GTX 1650. Це вже мій третій Dell XPS і загалом четвертий ноутбук Dell поспіль, причому кожен раз я обирав озираючись на весь ринок, а не лише на пристрої цієї компанії, але зупинявся саме на них.
💻Цікаво, що всі попередні живі-здорові та продовжують працювати у родині - брав їх у топовому конфігу по процесору/відеокарті, а потім апгрейдив оперативну пам'ять та диски.
💻Якщо порівнювати з новим MacBook Pro 16, то у мого XPS той же процесор, що і в самого топового мака, відеокарти різних виробників, але приблизно одного рівня, мак трохи легший, зато Dell компактніший, АКБ у XPS менш ємка на несуттєві 3%. Зато екрани принципово різні - IPS у мака проти OLED у XPS, який має формат 4К та десь на 30% більше пікселів.
💻Ось саме враженнями від екрану і хочу поділитися.
Хто постійно користується ноутбуками, той знає, наскільки боляче це робити десь в дорозі - яскравості постійно не вистачає, а глянцеві екрани ще й докучають бліками, що робить їх практично непридатними за межами приміщень.
На смартфонах OLED-екрани зустрічаються давно, і ведуть себе на вулиці дуже пристойно, однак на ноутбуках їх не ставили до недавнього часу.
💻Звісно, екран складно описувати словами, але я спробую - хоча в нього скляна поверхня, зображення сприймається зовсім по-іншому, ніж на глянцевих IPS-матрицях, складається відчуття, ніби це щось середнє між матовими та глянцевими екранами. Від глянцевих тут приємна чіткість зображення, а від матових - значно менший рівень бліків на світлі. Особливість технології в тому, що кожен піксель окремо випромінює світло, позаду них немає підсвітки, чорний колір - це відсутність світла, він по-справжньому чорний, такі екрани мають дуже високу контрастність, недоступну іншим технологіям, а це, в свою чергу, робить екран значно приємнішим для очей.
💻Я давно працюю з комп'ютерами, пам'ятаю ще блимаючі CRT-монітори та чорно-білі матриці перших лептопів з жахливим часом відклику. Але лише зараз можу сказати, що нарешті я отримав екран, яким можна цілком комфортно користуватися на вулиці. Також мені дуже подобається, як на ньому виглядають темні теми IDE - це буде особливо цікаво буде почути розробникам. Складається відчуття, що картинка є більш чіткою, самі пікселі ніби "ближче" до скла екрану у порівнянні з IPS. В придачу до цього роздільна здатність у 4K робить дуже приємною роботу з текстом. І хоча для мене це не дуже важливо, але фото та відео на ньому виглядають взагалі фантастично - небачена раніше на ноутбуці насиченість кольорів!
💻Нажаль, у екрана є недолік - із-за особливостей технології під час передачі сірого можна побачити нерівномірність кольору у формі вертикальних полос. Ймовірно проявляється воно по-різному на різних екземплярах, то варто обрати з кількох той, у якого вона проявляється найменше. Я до такого був готовий - читав відгуки власників, і оскільки професійно з зображеннями не працюю, то для мене це непринципово.
💻Також є ризик "вигоряння" пікселів, для чого не слід залишати на екрані на тривалий час якісь статичні зображення, наприклад, панельку задач варто зробити такою, щоб зникала з екрану.
💻Власне екраном я особливо задоволений, це дійсно те, чого давно чекав.
Щойно вийшли результати опитника State of JavaScript 2019. Дуже цікаві результати, зокрема svelte на першому місці серед JS-фреймворків по цікавості серед розробників (і на другому після react по satisfaction) - власне його успіх я прогнозував ще навесні цього року. Будемо очікувати 2020 як рік svelte :)
https://2019.stateofjs.com/
https://2019.stateofjs.com/
Були часи, коли я одночасно працював SoftServe IT Academy та вузі. Тоді й поставив цікавий експеримент: проводив однакові заняття з використанням ідентичних матеріалів у двох різних навчальних закладах, і спостерігав цікаві результати - студенти, які навчалися на інтенсивних курсах IT Академії були успішними практично на 100%, в той час як у вузі цей відсоток був разів у 10 менший. Варто сказати, що студенти в обох закладах претендували на професію розробника, пройшли відбір, от лише мотивація відрізнялася - на інтенсивних курсах перспектива працевлаштування була дуже близько, питання лічених місяців, а у вузі - десь там далеко, за горизонтом кількох років. Звісно й інших факторів було чимало, але для себе я поставив мотивацію на перше місце. Тому коли студенти проходять повчитися прямо до нас в компанію, то це мають бути правильні студенти, з правильною мотивацією.
Ще експеримент показав, що з роботою у вузі треба зав'язувати, але то вже трохи інша історія :)
Ще експеримент показав, що з роботою у вузі треба зав'язувати, але то вже трохи інша історія :)
Сьогодні свято. І я зовсім не про Щедрий вечір. Чи знаєте ви, що 13-го січня святкують день резинової качечки?
Яке відношення має резинова качечка до мого каналу? Саме пряме: є такий метод відладки коду, відомий як "метод резинової качечки" (rubber duck debugging).
В щироких масах цей підхід популяризували автори книжки "The Pragmatic Programmer" Ендрю Хант та Девід Томас. Книжка, до речі, вперше побачила світ 20 років тому і відразу стала класикою літератури з програмування. Наполегливо рекомендую, читав я її давно, не завадило б перечитати, тим паче, що минулого року вийшла ювілейна редакція книжки.
Але повернемося до качечки - метод полягає в тому, що якщо у вас є проблема, з якою ви не можете справитися, то треба взяти резинову качечку і пояснити їй все детально. Чим краще ви все пояснете і розкажете про дії, які здійснили, щоб проблему вирішити, тим ймовірніше ви цю проблему вирішете самі, і допомога качечки була в тому, що для неї ви структурували свої думки, що і є у значному ступені вирішенням проблеми.
В мене є така качечка, якось подарували на конференції. Насправді я з нею не спілкуюся, бо давно виробив звичку говорити подумки сам з собою, ще задовго до того, як про метод резинової качечки дізнався. Не знаю, наскільки це нормально з точки зору психіатрії, можливо з качечкою говорити теж не дуже добре, але воно працює - ти вперся у щось, не можеш зрозуміти, то просто починаєш це проговорювати, і воно часто вирішується само собою. Дуже рекомендую, можна навіть на самій качечці зекономити.
Також метод можна використовувати по-різному. Ось, наприклад, є в мене один давній друг розробник, в нього досвіду значно більше ніж в мене, але він часто звертається до мене, щоб порадитися. При цьому робить це часто у досить дивній формі - просто пише в чат про свою проблему і думки, які у нього виникають, навіть не звертаючи уваги на те, чи встигаю я подивитися на ту проблему, чи ні. Дуже часто це виглядає таким чином - він починає щось писати, я в цей час зайнятий, подивитися не можу, він продовжує писати, а коли я знаходжу час, то бачу в чатику, що він вже сам з усім розібрався і проблему вирішив. Виходить такий собі монолог, і моєї участі у вирішенні проблеми не було, я просто зіграв роль тієї качечки. Але мабуть без моєї участі навіть у вигляді качечки проблема вирішувалася б довже, раз він робить це у такий спосіб.
Цікаво, що роль качечки я часто виконую навіть при роботі зі студентами - якщо у них щось не виходить, я прошу максимально детально описати проблему і пояснити, що вони робили, щоб її вирішити, теж максимально детально. І коли вони це все описують, то десь у половині випадків (і я не перебільшую), вони самі знаходять рішення, мені навіть не треба розбиратися самому.
То ось такий метод, з надвисоким співвідношенням затрати/результат - беріть на озброєння, якщо часом не використовували раніше. Ну а сьогодні віддамо шану резиновій качечці - найкращому другу програміста, і хай прибуде з вами Резинова Качечка!
Яке відношення має резинова качечка до мого каналу? Саме пряме: є такий метод відладки коду, відомий як "метод резинової качечки" (rubber duck debugging).
В щироких масах цей підхід популяризували автори книжки "The Pragmatic Programmer" Ендрю Хант та Девід Томас. Книжка, до речі, вперше побачила світ 20 років тому і відразу стала класикою літератури з програмування. Наполегливо рекомендую, читав я її давно, не завадило б перечитати, тим паче, що минулого року вийшла ювілейна редакція книжки.
Але повернемося до качечки - метод полягає в тому, що якщо у вас є проблема, з якою ви не можете справитися, то треба взяти резинову качечку і пояснити їй все детально. Чим краще ви все пояснете і розкажете про дії, які здійснили, щоб проблему вирішити, тим ймовірніше ви цю проблему вирішете самі, і допомога качечки була в тому, що для неї ви структурували свої думки, що і є у значному ступені вирішенням проблеми.
В мене є така качечка, якось подарували на конференції. Насправді я з нею не спілкуюся, бо давно виробив звичку говорити подумки сам з собою, ще задовго до того, як про метод резинової качечки дізнався. Не знаю, наскільки це нормально з точки зору психіатрії, можливо з качечкою говорити теж не дуже добре, але воно працює - ти вперся у щось, не можеш зрозуміти, то просто починаєш це проговорювати, і воно часто вирішується само собою. Дуже рекомендую, можна навіть на самій качечці зекономити.
Також метод можна використовувати по-різному. Ось, наприклад, є в мене один давній друг розробник, в нього досвіду значно більше ніж в мене, але він часто звертається до мене, щоб порадитися. При цьому робить це часто у досить дивній формі - просто пише в чат про свою проблему і думки, які у нього виникають, навіть не звертаючи уваги на те, чи встигаю я подивитися на ту проблему, чи ні. Дуже часто це виглядає таким чином - він починає щось писати, я в цей час зайнятий, подивитися не можу, він продовжує писати, а коли я знаходжу час, то бачу в чатику, що він вже сам з усім розібрався і проблему вирішив. Виходить такий собі монолог, і моєї участі у вирішенні проблеми не було, я просто зіграв роль тієї качечки. Але мабуть без моєї участі навіть у вигляді качечки проблема вирішувалася б довже, раз він робить це у такий спосіб.
Цікаво, що роль качечки я часто виконую навіть при роботі зі студентами - якщо у них щось не виходить, я прошу максимально детально описати проблему і пояснити, що вони робили, щоб її вирішити, теж максимально детально. І коли вони це все описують, то десь у половині випадків (і я не перебільшую), вони самі знаходять рішення, мені навіть не треба розбиратися самому.
То ось такий метод, з надвисоким співвідношенням затрати/результат - беріть на озброєння, якщо часом не використовували раніше. Ну а сьогодні віддамо шану резиновій качечці - найкращому другу програміста, і хай прибуде з вами Резинова Качечка!
За що я люблю веб-розробку - так це за те, що тут постійно все бурлить і розвивається, нудьгувати не доводиться :)
Сьогодні вийшла моя велика стаття на DOU, enjoy: https://dou.ua/lenta/articles/web-development-status-2020/
Сьогодні вийшла моя велика стаття на DOU, enjoy: https://dou.ua/lenta/articles/web-development-status-2020/
ДОУ
Веб-розробка: вчора, сьогодні, завтра
Історія часто цинічно жартує з людськими винаходами: далеко не завжди задумане ставало реальністю, дуже часто реальністю ставало те, що задуманим не було. Схоже, вся історія вебу й відповідно веб-розробки — те, із чого воно все починалося, як розвивалося…
Минуло п'ять місяців з запуску мого унікального практичного курсу по JavaScript - ScriptJedi42, де навчання йде онлайн, але з повною моєю підтримкою протягом 42-х днів - я пояснюю всі складні речі і персонально переглядаю кожен рядок коду, який пишуть учасники курсу.
Саме час поділитися певними досягненнями та новинами.
🔥 Перше - курс виявився дуже вдалим, вже маємо кілька десятків випускників. Ті, хто дійшли до фінішу і отримали від мене сертифікат Джедая - у своїй більшості вже проходять стажування чи знайшли роботу. Цікаво, що на курсі чисто JS, немає фреймворків, то після завершення раджу не роботу шукати, а довчитися на курсах чи практиці, направляю в SoftServe IT Academy, але маємо що маємо - дехто йде прямо на роботу і отримує особливу подяку за глибокі знання JS :)
🔥Друге - з цього року не треба чекати дату початку курсу, щоб почати навчатися - відразу після реєстрації відкривається доступ до варіанту "Соло" зі всією теорією і завданнями, і можна починати готуватися. Дата старту курсу - це момент, під час якого з'являються дедлайни і треба здавати завдання на рев'ю, а також я активно включаюсь в консультування. Ті, хто зареєструвалися раніше - мають більше часу підготуватися.
🔥Третє - на курс приходять люди з різним рівнем підготовки - від абсолютних початківців до практикуючих розробників. Завдання у всіх однакові, а складність визначається результатом. З цього року ми трохи змінюємо правила. Є два рівні - Джедай і Падаван. Сертифікат Джедая означає, що ти вже вивчив JS достатньо, щоб робити за його допомогою що завгодно, і планка необхідної успішності піднімається з 80% до 84%. Падаван означає, що ти вже не повний новачок, і здатен за допомогою JS вирішувати нескладні прикладні завдання (а таких на фронтенді більшість), то планка зменшується з 50% до 42%.
🔥Четверте - оскільки за вікном 2020, то ми починаємо вивчати EcmaScript 2020 - він ще не вийшов, але його ключові нововведення вже фіналізовані - динамічні імпорти, новий тип даних BigInt, приватні члени класів, опційні ланцюжки викликів і багато іншого.
🔥П'яте - оскільки всі учасники курсу будуть отримувати доступ до версії "Соло", і саме в ній будуть всі актуальні свіжі матеріали, то це означає, що у кожного, хто зареєструвався на курс буде завжди до них доступ, незалежно від того, коли його проходив. Для всіх, хто курс проходив раніше, я доступ надам :)
🔥🔥Для тих, хто дочитав до кінця - дарую знижку на 2 тис. грн. від поточної ціни курсу у варіанти Джедай чи Ситх за промокодом, час його дії обмежений, починаємо навчання 27-го січня: BECOMEJEDI2020
🔥🔥🔥Ну і самий класний відгук, який довелося отримати: "Ваші курси хочеться забути, щоб потім пройти заново" :) :) :)
Саме час поділитися певними досягненнями та новинами.
🔥 Перше - курс виявився дуже вдалим, вже маємо кілька десятків випускників. Ті, хто дійшли до фінішу і отримали від мене сертифікат Джедая - у своїй більшості вже проходять стажування чи знайшли роботу. Цікаво, що на курсі чисто JS, немає фреймворків, то після завершення раджу не роботу шукати, а довчитися на курсах чи практиці, направляю в SoftServe IT Academy, але маємо що маємо - дехто йде прямо на роботу і отримує особливу подяку за глибокі знання JS :)
🔥Друге - з цього року не треба чекати дату початку курсу, щоб почати навчатися - відразу після реєстрації відкривається доступ до варіанту "Соло" зі всією теорією і завданнями, і можна починати готуватися. Дата старту курсу - це момент, під час якого з'являються дедлайни і треба здавати завдання на рев'ю, а також я активно включаюсь в консультування. Ті, хто зареєструвалися раніше - мають більше часу підготуватися.
🔥Третє - на курс приходять люди з різним рівнем підготовки - від абсолютних початківців до практикуючих розробників. Завдання у всіх однакові, а складність визначається результатом. З цього року ми трохи змінюємо правила. Є два рівні - Джедай і Падаван. Сертифікат Джедая означає, що ти вже вивчив JS достатньо, щоб робити за його допомогою що завгодно, і планка необхідної успішності піднімається з 80% до 84%. Падаван означає, що ти вже не повний новачок, і здатен за допомогою JS вирішувати нескладні прикладні завдання (а таких на фронтенді більшість), то планка зменшується з 50% до 42%.
🔥Четверте - оскільки за вікном 2020, то ми починаємо вивчати EcmaScript 2020 - він ще не вийшов, але його ключові нововведення вже фіналізовані - динамічні імпорти, новий тип даних BigInt, приватні члени класів, опційні ланцюжки викликів і багато іншого.
🔥П'яте - оскільки всі учасники курсу будуть отримувати доступ до версії "Соло", і саме в ній будуть всі актуальні свіжі матеріали, то це означає, що у кожного, хто зареєструвався на курс буде завжди до них доступ, незалежно від того, коли його проходив. Для всіх, хто курс проходив раніше, я доступ надам :)
🔥🔥Для тих, хто дочитав до кінця - дарую знижку на 2 тис. грн. від поточної ціни курсу у варіанти Джедай чи Ситх за промокодом, час його дії обмежений, починаємо навчання 27-го січня: BECOMEJEDI2020
🔥🔥🔥Ну і самий класний відгук, який довелося отримати: "Ваші курси хочеться забути, щоб потім пройти заново" :) :) :)
Маю звичку на початку року продовжувати свої домени - так не треба слідкувати за продовженням протягом року.
Певну кількість доменів тримаю на godaddy, і для них раніше завжди легко можна було нагуглити купон на знижку, але чомусь останнім часом з купонами проблема. То вже пару років використовую лайфхак - якщо валюту поставити на індійські рупії, то ціна в еквіваленті виходить нижче відсотків на 20% ніж в гривнях чи доларах. Користуйтеся :)
Певну кількість доменів тримаю на godaddy, і для них раніше завжди легко можна було нагуглити купон на знижку, але чомусь останнім часом з купонами проблема. То вже пару років використовую лайфхак - якщо валюту поставити на індійські рупії, то ціна в еквіваленті виходить нижче відсотків на 20% ніж в гривнях чи доларах. Користуйтеся :)
Слухаю багато подкастів - це зручно десь в дорозі. Далеко не все варте уваги, але часто зустрічаються цікаві речі, то буду ділитися з вами. Це з випуску React Podcast листопада минулого року, але надзвичайно цікаво - Kitze, автор браузера для розробників Sizzy ділиться досвідом про те як вижити в сучасному світі хайп-дрівен розробки. Взагалі айтішна галузь цим хворіє, а у вебі та на фронтенді хвороба проявляється особливо - люди постійно бігають за чимось новим, потім його затьмарює щось інше, і вони знаходяться у нескінченному пошуку досконалості. Kitze досить добре розказує що з цим робити. Ще мені сподобалися його думки про open source і про те як слід будувати комерційні продукти.
Можете сміливо пропускати три перших хвилини - там реклама. Посилання на подкаст
Можете сміливо пропускати три перших хвилини - там реклама. Посилання на подкаст
Черговий подкаст, дуже добре підходить для вихідного - гра в Jeopardy про фронтенд. Присутні питання, які задають на інтерв'ю. Можна слухати питання, ставити на паузу і пробувати відповідати до того, як це роблять учасники. На мою думку питання могли бути і дещо складнішими :)
Початок цього року відзначився цікавою подією - відомий сервіс з пошуку роботи Glassdoor опублікував рейтинг найкращих професій в США, і вперше це місце посіла професія Front End Engineer, потіснивши з трону Data Scientist, що трималася там чотири роки поспіль. До уваги приймається рівень зарплат, задоволеність роботою та кількість вакансій. Цікаво, що Java Developer на другому місці, а Software Engineer на сьомому. Зверніть увагу, що рівень зарплат на першому і сьомому практично ідентичний, а от друге місце суттєво відстає. Трохи дивний рейтинг. Але загалом вихід фронтендщиків на перше місце закономірне - давно спостерігаю тенденцію, що бекенд спрощується, перетворюється на сервіс, і вирішення справжніх задач користувача в значній мірі мігрував на фронтенд. Також показове детронування датасатаністів - схоже трохи хайп з біг дейта і т.п. згасає, а гроші як були у вебі, так і залишаються там у найближчому майбутньому. Очікую, що такі новини вплинуть на конкуренцію Python/JavaScript на користь останнього.
Нарешті реліз Angular 9 - досить важлива версія фреймворку, у ньому новий двигун рендерингу Ivy, який використовує так званий "Incremental DOM" що обіцяє суттєво збільшити швидкість роботи та зменшити розмір бандлів. Плюс багато інших дрібніших покращень. Місяць тому я робив огляд нових можливостей Angular 8&9 у форматі закритого тренінгу. До запису доступ обмежений, але лінком на слайди поділитися можу, там витяжка всього найціннішого:
https://slides.com/p-m/angular-8-9#/
https://slides.com/p-m/angular-8-9#/
Slides
Angular
A presentation created with Slides.
Люблю відвідувати різні івенти і всім іншим раджу - незалежно від того, чи шукаєте роботу, чи вже маєте - треба ходити на конференції, мітапчики, воркшопи і тому подібне. Вчора дуже фаново провів вечір - прийняв участь у змаганнях JS-розробників InLoveWithCode.js. Треба було закодити ботика, який рухається по лабіринту, сам в ньому орієнтується, уникає перешкод і збирає золото. Дуже весело, але ні разу непросто насправді, враховуючи що час обмежений і за перше місце змагається кілька десятків людей :) Нажаль перше місце не взяв, хоча шанси були - в останні хвилини мій ботик почав добре наздоганяти, але інші були проворніші. Тим не менше, в топ призерів потрапив, додому повернувся з чесно заробленим трофеєм, ну а найприємніше - своїх випускників там зустрів :)
Кому цікаво, то організатори сервер не зупили, він працює навіть зараз, можна побавитися, деякі учасники продовжуть це робити, я для задоволення ЧСВ все-таки перше місце взяв, щоб було що заскріншотити :)
Лінк на сервер тут, реєстрація і всі правила: http://34.65.11.123/codenjoy-contest
Кому цікаво, то організатори сервер не зупили, він працює навіть зараз, можна побавитися, деякі учасники продовжуть це робити, я для задоволення ЧСВ все-таки перше місце взяв, щоб було що заскріншотити :)
Лінк на сервер тут, реєстрація і всі правила: http://34.65.11.123/codenjoy-contest