Programming Mentor
3.48K subscribers
161 photos
1 video
13 files
352 links
Ти живеш, поки вчишся
Download Telegram
Модна зараз тема - публічні технічні інтерв’ю. Дуже раджу для того, щоб зрозуміти свій рівень готовності і набути впевненості в собі. Дивився сьогодні стрім такого інтерв’ю на сіньйор JavaScript-розробника, проводить крупна компанія серед своїх співробітників. Дають просту задачку - масив нуликів/одиничок, завдання в тому, щоб знайти найдовшу послідовність нулів. Таку задачка вирішується в один прохід по масиву, на написання коду людині з досвідом в кілька років знадобилося б до п’яти хвилин.

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

Знаходжу інтерв’юваного в лінкедіні - реальна людина, на сіньйорній позиції в тій компанії. Сподіваюся, після такого інтерв’ю його не демоутнуть. :)

Іншу частину інтерв’ю коментувати не буду, хоча в мене до неї теж були питання.

Вивчайте алгоритми, хоча б зовсім трішки. Розберіться з тою Big O notation, щоб не робити таких дитячих помилок. Справжній джедай таку помилку точно би не зробив :)

Лінк на запис інтерв’ю внизу під цим повідомленням. Дуже корисно подивитися для підняття самооцінки :)
Надибав тут цікавий документик - оптимізації JavaScriptp-двигуна V8 по швидкодії з конкретними рекомендаціями стосовно використання тих чи інших підходів. Шкода що з 2018 року не апдейтився, але цікавого там дуже багато. Наприклад, вражає приріст швидкості по деяких оптимізаціях, типу 400x+. Важливий висновок з того всього - треба писати код максимально виразно, думаючи в першу чергу про його подальшу підтримку, а швидкодія часто дається безкоштовно.
https://github.com/thlorenz/v8-perf/blob/master/language-features.md
Зробити цегляну кладку (masonry layout) в на чистому CSS завжди було проблемно. Але тепер така можливість з'являється нативно у CSS Grid. Рейчел Ендрю розказує як це зробити в FireFox Nightly https://www.smashingmagazine.com/native-css-masonry-layout-css-grid/
На днях анонсували дієву вакцину проти ковіду, акції Zoom відразу впали, а оффлайнових компаній підросли. Багато хто сподівається, що з часом все стане як раніше. Але то навряд. Бо зміни, по яким онлайн підтискає офлайн є незворотніми. Сьогодні хочу поговорити про те як змінюються конференції.

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

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

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

Є ще одна, не дуже очевидна, але, на мій погляд, найбільш серйозна проблема. Зіткнувся з нею вперше у 2007-му. Запросила мене тоді Microsoft на конференцію для розробників в Барселоні як журналіста. Конференція тривала днів п’ять, від самого ранку до пізнього вечора, і вельми цікава сама по собі. Але то моя була перша поїздка до Барселони, я хотів ще й місто побачити, проте на це часу не було зовсім - квитки на літак мені взяли відповідно до розкладу конференції, жодного вільного дня. То я сумлінно проводив весь час на конференції, і лише одного разу після обіду дозволив собі вийти в місто. Звісно для Барселони того аж ніяк не достатньо. І хоча самим заходом я залишився повністю задоволений, то туристичною складовою - ні. І яким же було моє здивування, коли після повернення редактор журналу сказав, що я даремно сидів на конференції, оскільки весь бенефіт від поїздки в тому і полягає, щоб погуляти містом та поспілкуватися в кулуарах з цікавими людьми. Власне, щоб написати репортаж, навіть їхати не потрібно, бо всі виступи доступні в записі, та і якісніше це робити по записам, ніж по своїх власних нотатках. Можете собі уявити мої відчуття, коли я писав той репортаж, переглядаючи записи виступів, і розуміючи, що я даремно на них сидів? Текст мого репортажу доступний тут, же не віриться, що цілих 13 років пройшло. :)

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

Ну а тепер про онлайн-конференції. Навіяно участю в IT Arena 2020, що проходила зовсім недавно. На відміну від просто стріму з коментарями, як буває десь на ютубі, тут використали сервіс attendify, і мені цей досвід дуже сподобався. Ті проблеми, про які я писав на початку, відсутні в принципі - жоден зі стрімів не був переповнений, а піти непоміченим - простіше простого. :) Переглядати в записі теж без проблем, треба мати квиток відповідного рівня. Ну а особливо зручним виявився інтерфейс цієї штуки, такий собі міні-фейсбук, що дозволяє організувати тусовку і нетворкінг в онлайн-форматі. І це лише предвісник нової епохи, далі ще цікавіше.
Пригадуєте ті голографічні наради, які проводили джедаї у Зоряних Війнах? Здавалося, фантастика, але це набагато ближче, ніж здається. Я вже розповідав про свій досвід використання VR-шолома Oculus Quest, і зовсім недавно вийшла його нова версія більш цікава за ціною. Враховуючи, що вартість участі в західних конференціях зазвичай кілька тисяч доларів, то три сотні за шолом - то взагалі ні про що. І мова йде не лише про айтішні конференції - періодично з’являються новини про те, що якісь конференції проходять в онлайні, а їх учасники отримують шоломи, або знижку на участь, якщо шолом вже є.

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

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

PS. Незабаром починається остання в цьому році група курсу ScriptJedi42, це практичний курс, на якому учасники здобувають навики написання коду на сучасному JavaScript. Нещодавно курсу виповнився рік, його встигло пройти вже досить багато людей, по рекомендаціям від яких приходять наступні. Надалі групи будуть проводитися не так часто, тому тим, хто бажає повчитися на курсі, відкладати не раджу.
Просто суперський навчальний проект http://realworld.io/
Це клон сайту Medium.com реалізований як довільна комбінація бекендів та фронтендів, зроблених на різних фреймворках.
Все доступне в опенсорсі, можна відкривати редактор stackblitz прямо в бразуері. Три десятки варіацій для фронтенду, понад чотири десятки для бекенду. Ще є варіант NativeScript/Angular для мобільного, а також фуллстек реалізації, які не передбачають відокремлення фронтенду від бекенду (типу Meteor).
Бачив недавно в одному пабліку обговорення місії аутсорсингової компанії. Більшість учасників скептично, якщо не саркастично поставилися до теми і влаштували змагання з дотепності, адже стереотип про аутсорсинг - це рубати бабло і нічого більше.

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

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

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

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

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

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

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

І саме такі речі дозволяють зрозуміти, в чому твоя місія, і чи є вона взагалі. Просто подивіться це відео, воно вартує трьох хвилин вашого життя.
https://www.facebook.com/SoftServeCompany/posts/10164675610165038
Продовжуємо тему онлайн - цей раз про роботу. Свіженьке відео з конференції fwdays про процес найму у Google. Мартін, інженер з досвідом, який займається проведенням інтерв'ю, розказує про їх проходження та про свій власний досвід.

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

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

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

https://www.youtube.com/watch?v=6tVy-LJptb8
Сьогодні увечорі, о 20:00 я беру з собою невелику групу сміливих падаванів, які протягом сорока двох днів щодня будуть писати код і пізнавати Світлу Сторону Сили. На коректність код будуть перевіряти автоматизовані дроїди-тести, але додатково кожен рядок коду я прочитаю особисто і напишу свій власний коментар та заведу іш’ю на гітхабі, якщо побачу темні помисли у ваших думках. Увечері кожного понеділка ми будемо мати ретроспективу, де розглянемо найкращі джедайські практики у володінні Світлою Стороною.
Рівно за шість тижнів ми відвідаємо шість планет Сили. Почнемо з легкої прогулянки планетою Синтаксон, розберемося в відтінках та кольорах EcmaScript та як їх переводити з одного в інший з допомогою дроїда-перекладача Babel та оформляти за допомогою дроїда-фарбувальника Prettier.

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

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

Далі ми перемістимося на небезпечну вулканічну планету Функфтакар, яка згубила не одного Джедая. Ми відточимо навик використання нашого стрілочного меча та зрозуміємо як назавжди прив’язувати неслухняні функції до іншого власника. Також тут ми зустрінемося з такою страшною істотою як Замиканус, але навчимося приручувати її.

Пройшовши цю планету ми наберемося Сили чистих функцій, і рушимо далі на планету Оопон. Там ми зустрінемося з небезпечними рабовласниками прототипонами, що передають в спадок дані і поведінку. На допомогу нам прийдуть дроїди класифони, які живляться синтетичним цукром і елегантно роблять свою роботу. І там же ми навчимося ловити неслухняне звірятко з дивною назвою “this”.

І останнє випробування нас чекає на планеті Асинхрон. Ядром цієї планети є геніальний винахід древніх цивілізацій, і називається він “Івент луп”. Потім ми опануємо елегантну, але небезпечну зброю - коллбеки, необережне поводження з якими згубило багатьох падаванів. Далі ми опануємо потужні бластери - промізи та генератори. А завершимо ми елегантими синтаксичними конструкціями async/await, які підсолодять наше джедайське життя.

Ця подорож вам буде значно простішою, якщо ви вже пробували підкорити Силу і можете накидати хоча б “Hello Force!”, а ще краще - знаєте як обійти змію-масив з голови до хвоста і навпаки. Можливо ви вже зайшли далі, і не один день, місяць чи рік пробуєте опанувати її, але так і не почуваєте себе впевнено, бо звірятко “this” кудись постійно втикає, а прототипони постійно виїдають мізки, а коллбеки та промізи постійно стріляють вам в ногу. Майстер джедай разом з просвітленими джедаями Кайлі Сімпсоном та Тоддом Мотто проведе вас цією дорогою, і ви проснетеся одного ранку джедаєм самі, і Сила буде служити вам. Do or do not, there is no try!

Якщо ви дочитали до цього місця, то за магічною фразою-купоном JSFORCE, доступною лише моїх підписників, ця подорож обійдеться на 2042 галактичних кредити менше.
https://sj42.programmingmentor.com/
Новина тижня. Salesforce купує Slack. Я слеком користувався практично з моменту його появи, він швидко вистрілив, але потім якось застряг і не прогресував. А ще в нього дуже дивна модель монетизації, і загалом він якось рухався в напрямку здачі позицій в порівнянні з тімсами та діскордом. Можливо це щось змінить кардинально https://www.salesforce.com/news/press-releases/2020/12/01/salesforce-definitive-agreement-update/
Всі знають, що прототип мови JavaScript був створений за 10 днів у травні 1995 року. Але мало хто знає, що тоді мова мала зовсім іншу назву, і саме назва "JavaScript" була оголошена сумісно з Sun та Netscape 4-го грудня того ж року.
Цю дату можна вважати офіційними іменинами JavaScript. Завтра виповниться рівно 25 років.
Ловіть кльову візуалізацію від JetBrains. Крім інформації про саму мову там багато цікавих історичних подій
https://www.jetbrains.com/lp/javascript-25/#e_1995_12_04
Що там у CSS 2020 Edition?
Якщо коротко - всі пишуть у VS Code, верстають флексами та грідами, дебажать у хромі, в якості одиниць використовують пікселі, форматують пріттером, запускають автопрефіксер
https://2020.stateofcss.com/
Сьогодні впав Гугл. Постраждали практично всі сервіси - аутентифікація, пошук, пошта, ютуб і т.д. Схоже, що збій такого масштабу саме у Гугла був вперше. Цікаво, що проблеми виявилися не лише у онлайн-сервісів, типу Gmail, а й таких, що поєднуються з реальним світом, зокрема Google Nest, який дозволяє керувати будинком - світлом, опаленням, дверним дзвінком.

Виявилося, що робота без онлайну не передбачена, що сильно здивувало деяких користувачів.

Мені те теж дивно, але я пригадав як на одній з конференцій після виступу інженера, що займається розумними будинками, запитали, який він собі встановив вдома, то він відповів, що оскільки сам цими системами займається, то собі вдома не встановлює принципово. Ось така правда життя. Хмари-хмарами, а бекапчик всього на жорсткому диску треба тримати як мінімум. Ну і розумний будинок, якщо вже ставити, то такий, що без Інтернету працює.
В одній зі спільнот розробників постало питання про коментарі в коді. Дуже часто воно спливає, бо вважається, що коментарі є обов'язковим атрибутом коду.
Але насправді то зовсім не так, і більшість авторитетних людей в галузі притримуються думки, що коментарі шкодять.
Наприклад, Боб Мартін, відомий як Uncle Bob, колись сказав дуже влучну фразу: "Коментар - це прояв нездатності програміста написати зрозумілий код".
То власне моя думка з цього приводу така: код ніколи не бреше - виконується як є, а коменти можуть брехати - вони можуть некоректно розкривати деталі коду, вони можуть застаріти і т.д. і т.п. Коменти завжди простіше написати, ніж нормальний зрозумілий код. Крім того, ми код пишемо не для бабусі з ринку, а для програміста, який повинен вміти його читати, а не лише коменти.
Тому вчіться писати нормальний код, а не коменти, бо ви програмісти, а не письменники, йопрст 🙂
position-roadmap.jpg
382 KB
Підкинули тут жартівливу "собачу" класифікацію розробників по рівнях, авторство залишимо за анонімусом. Жарти-жартами, але воно дуже близька до дійсності.
Раджу ознайомитися незалежно від того, ви ще навіть не трейні, чи давно вже не мідл :)
Я би сказав, що це така собі дуже непогана роадмепа з конкретними рекомендаціями до того, що робити, щоб розвиватися, яких недоліків уникати, до чого рухатися, а також чого чекати від інших колег.
Ну і звісно обговорення заохочується, особливо цікаво почути думки від людей з досвідом.
BTW. Сьогодні ми стартуємо першу в цьому році групу ScriptJedi42, до групи можна долучитися протягом перших п'яти днів. Запрошую всіх, хто хоче вивчити сучасний JavaScript, а хто дочитав до цього місця - ось купон на знижку в 1042 грн.: JSFORCE
Посилання на курс: https://sj42.programmingmentor.com
Ось так і працюємо https://youtu.be/kd4srTN9UFs
PS. До речі, щойно відкрив набір на квітневу групу ScriptJedi42 https://sj42.programmingmentor.com/
Чи знаєте ви, що метод .bind() у JavaScript має особливу поведінку - він дозволяє прив'язати контекст до функції лише один раз? Тому кожен раз, коли ви ним користуєтеся, ви маєте знати, чи не використовувався він для цієї функції раніше.
На codewars є цікава задачка - зробити свою реалізацію .bind(), яка позбавлена цього недоліку. Власне це ми зараз і зробимо, бо немає кращого способу глибше вивчити JavaScript, можна спробувати його покращити. :)
https://youtu.be/Aufl9h8AAUE
PS. Нещодавно відкрився набір на квітневу групу ScriptJedi42. Там ми вивчимо весь сучасний JavaScript як мову програмування, зробимо цю та багато інших задачок. Якщо реєструватися раніше, то можна почати готуватися до старту курсу у власному темпі, оскільки відкривається доступ до всіх матеріалів і завдань. Посилання на сайт курсу: https://sj42.programmingmentor.com
Одна із рис JavaScript, яка мені особливо подобається - те, що мова не є занадто ускладненою і досить добре "поміщається" в голові. Але вкласти все в голові теж треба правильно. Мені самому постійно доводиться придумувати прості пояснення для того щоб роз'яснити все доступно людям, яких я навчаю. Недавно натрапив на гарну статтю від Дена Абрамова про ментальну модель JavaScript, вона мені дуже сподобалася, вирішив зробити переклад, але в процесі роботи побачив, що там дечого бракує, то розширив власними поясненнями, вийшов такий собі розширений переклад.
Щойно опублікував на своєму сайті, enjoy: https://programmingmentor.com.ua/what-is-javascript-made-of/
PS. Вже менш за місяць стартує ScriptJedi42 - https://sj42.programmingmentor.com/