Programming Mentor
3.5K subscribers
165 photos
1 video
13 files
356 links
Ти живеш, поки вчишся
Download Telegram
Сьогодні виступаю в Києві на iForum, будемо говорити про майбутнє фронтенд розробки. Учасників події запрошую о 16:10 (потік Інтернет-технологій), ну і нетворкаємося само собою :) #iforum
Вчора на iforum було драйвово. Надсилаю лінк на свої слайди, за якийсь час обіцяють відеозапис, теж поділюся ним. https://1drv.ms/p/s!AiGncsal_x-9mV58e6nc-UhHYmDq
Todd Motto, відомий фронтендщик з ухилом в ангуляр, запустив безкоштовний онлайн-курс по JavaScript, я зареєструвався, проглянув кілька відео - виглядає просто бомбово, мені подобається структура та форма подачі матеріалу - не просто суха теорія, а конкретні прикладі питання - іммутабельність, клонування та злиття об'єктів, дуже раджу
https://ultimatecourses.com/learn/javascript-basics
iForum опублікував запис мого виступу про майбутнє фронтенду, який я робив 23-го травня в Києві (там же, до речі, наш новий Президент розказував про те, що треба йти до дронів і тому подібне), рекомендую подивитися тим, хто не зміг побачити особисто https://www.youtube.com/watch?v=tzAnYbijAkY
Нещодавно DOU.UA викатив черговий аналіз ринку. Із цікавого - зарплати продовжують зростати, це говорить про те що попит на розробників перевищує пропозицію і говорити про насищення ринку ще не на часі.
Для початківців - це черговий мотиваційний стимул для того, щоб серйозно взятися до роботи, для досвідчених - можливо пора говорити про перегляд зарплати. Якщо говорити про популярні технології, то JavaScript як завжди в тренді, але схоже, що абсолютний максимум по зарплатам отримують пайтоністи: https://dou.ua/lenta/articles/salary-report-devs-june-2019
Code Review - це така штука, яку більшість намагаються робити, але мало хто робить правильно.
Іноді хтось сприймає це як умовну формальність, яку можна проігнорити, відповідно від такого процесу результату стільки, скільки й без нього.
Інша протилежність, це коли процес перетворюється на конфлікти та взаємні образи, що призводить до ще гірших наслідків - всі перелаялися один з одним, і краще б такого рев'ю не було :)
То це насправді не лише технічна задача, а процес, що включає багато чинників, як технічних, так і міжособистостних, зокрема нюансів людської психології.
Ось дуже гарне відео українською про те, як робити Code Review правильно: https://youtu.be/z9jQZ6r9dmk
Сьогодні в мене особливий день - я запускаю в світ найкраще з того, що коли-небудь робив - це унікальний курс для вивчення JavaScript в онлайн-форматі повного занурення - рівно 42 дні практики - це такий інтенсивний марафон для того, щоб сформувати навик програмування.
Початок вересня - найкращий час, щоб почати навчання, протягом тижня діє максимальна знижка.
https://sj42.programmingmentor.com
Лендінг для курсу зробив на Weblium, для того є окрема історія варта окремого посту. :)
Прийшов вересень - пора вчитися.
Сьогодні опублікував відео про замикання в JavaScript на прикладі пакування цукерок в коробочки https://www.youtube.com/watch?v=XJdzZgzLc08
Це відео з курсу ScriptJedi42 (https://sj42.programmingmentor.com), курс починається завтра - сьогодні останній день реєстрації, залишається кілька вільних місць.
👻 Далеко не всі розробники усвідомлюють, що програмний код - це не більше ніж думка програміста, яка зафіксована мовою, що одночасно зрозуміла йому та комп'ютеру.

👻 Оскільки люди різні, і думки в них різні теж, то і код вони пишуть по-різному, іноді настільки сильно по-різному, що одномому стає не зрозумілим, що мав на увазі інший.

👻 Саме тому дуже важливою практикою є 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/
Один з найважливіших принципів у програмуванні - це важливість відповідних назв ідентифікаторів: змінних, функцій, класів і тому подібне. Писати код потрібно так, щоб читати його можна було як книжку, використовуючи іменники та дієслова, а не так, як це робить сам комп'ютер, прокручуючи в голові кожен рядок коду.
Особливість JS в тому, що це мова з динамічною типізацією. Це означає, що будь-яка змінна може мати будь-який тип на відміну від мов зі статичною типізацією, наприклад Java чи C#. Там ти якщо задекларував стрінгу, то завжди будеш мати стрінгу, ніколи в ній не може бути масиву - якщо хочеш масив, то вимушений робити нову змінну. Але в JS за цим треба слідкувати розробнику, якщо ти пишеш код, назвав змінну str, а потім в неї записав масив, то зробив дуже погано, бо хтось інший (або ти сам через деякий час) потім буде вважати що там стрінга, бо змінна називається str.
Ось дуже гарна стаття про те, як варто давати імена ідентифікаторам.
https://hackernoon.com/the-art-of-naming-variables-52f44de00aad
Ну і окремо зазначу, що на курсі ScriptJedi42 я особисто рев'юваю кожен рядок коду, який ви будете писати, за 42 дні ви обов'язково навчитеся давати гарні імена ідентифікаторам. Welcome на курс, щойно стартував набір на нову групу, стартуємо з 25-го листопада: https://sj42.programmingmentor.com/
В минулому пості посиланнячко було бите, поправив його
Сьогодні вранці повернувся з конференції UP2IT, яка проходила в м. Суми. В суботу розповідав про стан веб-розробки в 2019, а в неділю проводив workshop по Google Cloud. Прямо в дорозі поряд з залізничним вокзалом Львова записав відео з власною думкою з деяких питань, стосовно яких вдалося подискутувати на конференції:
- чи робить тебе програмістом знання мови програмування?
- чим 20-річний сіньйор відрізняється від 30-річного?
- чи автоматично ти сіньйорієш з віком?
- чи варто відвідувати мітапчики та конференції?
- чи не зазорно писати код, коли тобі за 30 чи навіть за 40?
https://youtu.be/QPy-hfyNklk
Піший кур'єр.
Замовив на днях в Розетці подарунок для доньки, доставили досить оперативно, але мене вразило - як саме.
Його приніс "піший кур'єр" (як він сам себе назвав по телефону) - такий собі дядечко з рюкзаком за спиною.
Рюкзак, до речі, досить габаритний - літрів на 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-машинку, навіть не віриться, що їй зараз вже чотири роки з дати випуску. А от макбуки так не вміють, і вочевидь не тому, що це неможливо технічно - просто підхід до бізнесу такий. Щось бачу в черговий раз не судилося стати маководом :)
💻Моя попередня історія про вибір ноутбука була б неповною, якби я не написав, чим вона завершилася.
Отже взяв 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/
Були часи, коли я одночасно працював SoftServe IT Academy та вузі. Тоді й поставив цікавий експеримент: проводив однакові заняття з використанням ідентичних матеріалів у двох різних навчальних закладах, і спостерігав цікаві результати - студенти, які навчалися на інтенсивних курсах IT Академії були успішними практично на 100%, в той час як у вузі цей відсоток був разів у 10 менший. Варто сказати, що студенти в обох закладах претендували на професію розробника, пройшли відбір, от лише мотивація відрізнялася - на інтенсивних курсах перспектива працевлаштування була дуже близько, питання лічених місяців, а у вузі - десь там далеко, за горизонтом кількох років. Звісно й інших факторів було чимало, але для себе я поставив мотивацію на перше місце. Тому коли студенти проходять повчитися прямо до нас в компанію, то це мають бути правильні студенти, з правильною мотивацією.
Ще експеримент показав, що з роботою у вузі треба зав'язувати, але то вже трохи інша історія :)
​​Сьогодні свято. І я зовсім не про Щедрий вечір. Чи знаєте ви, що 13-го січня святкують день резинової качечки?
Яке відношення має резинова качечка до мого каналу? Саме пряме: є такий метод відладки коду, відомий як "метод резинової качечки" (rubber duck debugging).
В щироких масах цей підхід популяризували автори книжки "The Pragmatic Programmer" Ендрю Хант та Девід Томас. Книжка, до речі, вперше побачила світ 20 років тому і відразу стала класикою літератури з програмування. Наполегливо рекомендую, читав я її давно, не завадило б перечитати, тим паче, що минулого року вийшла ювілейна редакція книжки.

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

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

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

Цікаво, що роль качечки я часто виконую навіть при роботі зі студентами - якщо у них щось не виходить, я прошу максимально детально описати проблему і пояснити, що вони робили, щоб її вирішити, теж максимально детально. І коли вони це все описують, то десь у половині випадків (і я не перебільшую), вони самі знаходять рішення, мені навіть не треба розбиратися самому.

То ось такий метод, з надвисоким співвідношенням затрати/результат - беріть на озброєння, якщо часом не використовували раніше. Ну а сьогодні віддамо шану резиновій качечці - найкращому другу програміста, і хай прибуде з вами Резинова Качечка!