Programming Mentor
3.49K subscribers
163 photos
1 video
13 files
355 links
Ти живеш, поки вчишся
Download Telegram
І знову про Chat GPT :) https://career.softserveinc.com/uk-ua/stories/using-chatgpt-in-education-and-work-in-it-practical-tips-from-our-own-experience

До речі, до питання замінить/не замінить програміста, тут найбільш ймовірний сценарій полягає в тому, що найближчим часом навички використання ШІ будуть вимагати і перевіряти на інтерв'ю.
🔥17👍101
В першому та другому рядках зліва число у десятковій системі числення, а справа - у вісімковій. Але вони рівні.
В третьому рядку з обох сторін у десяткій, бо JS сприймає числа у вісімковій лише якщо всі цифри в діапазоні 1-7.
В четвертому рядку зліва у десятковій, а справа - у вісімковій. І це різні числа.
В п'ятому аналогічно четвертому, але тепер вони рівні :)
35🔥5👍4
Знову про застосування ChatGPT та неолуддитів

В п’ятницю успішно перездав сертифікацію Google Cloud Architect Professional, яка вважається топовою серед всіх IT-сертифікацій.

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

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

І цього разу обійшовся без конспекту, його замінив ChatGPT. Я з ним просто “спілкувався” по темах іспиту, просив генерити питання, і відповідав на них, також пояснювати щось, порівнювати і т.д. Звичайно, він подекуди помилявся, були неточності, але то не було проблемою, а навпаки, допомагало критично оцінювати та перевіряти інформацію.

Принципова відмінність в тому, що в такому форматі підготовка є активним, а не пасивним процесом. Бо коли просто читаєш доки, то дуже легко втратити фокус, щось важливе пропустити, мати ілюзорне відчуття що розібрався з темою. В “активному” процесі ти залучений значно більше і відразу відчуєш, якщо з якоюсь темою не розібрався і її потрібно серйозніше вивчити. Справжній next level я би сказав.

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

І звичайно мені дуже неприємно бачити новини про спроби його заборонити чи обмежити - в Італії взагалі закрити доступ під сумнівним приводом, а в США купа вчених та бізнесменів разом з Ілоном Маском та Стівом Возняком петицію підписали про зупинку розвитку ШІ на півроку. Будь-хто знайомий з принципами побудови ШІ прекрасно розуміє, що у LLM-моделей, на основі яких побудований ChatGPT є свої ліміти, що принципово не дозволяють їм стати розумною істотою і захопити світ. І якщо з Маском все зрозуміло - він банально прорахувався, спустивши колосальні кошті на Твіттер, в той час як MS профінансувала OpenAI, то Возняка, схоже, просто використовують у цій хитрій грі, даремно він в це вписався.

Якщо хочете почути/почитати думку авторитетної людини стосовно цієї проблеми, то раджу звернутися до Стівена Вольфрама, засновника проєкта Wolfram Alpha. Ось його цікава стаття на цю тему. А тут він розказує про те, яким має бути найближче майбутнє ШІ.

Символічно, що і забороняти та обмежувати його почали точно також як книгодрукарство в свій час - сам процес вже не спинити, просто доступ буде не для всіх. Бо “Quod licet Iovi (Jovi) non licet bovi” - що дозволено Юпітеру, то не дозволено бику.
👍4422
Якщо ти не можеш чогось пояснити шестилітній дитині, значить ти сам його не розумієш.
Але ж подивіться як круто воно розуміє :)
🔥63👍86👏1
Цей день настав

Чи знаєте ви, чому джедайський курс JavaScript називається “ScriptJedi42”, а не “JavaScriptJedi42” чи щось подібне?

Відповідь знаю я, бо ще з моменту його першого запуску у 2019 передбачалося, що він буде не лише по JavaScript, а також і по TypeScript, але згодом, коли мова набере достатньо поширення.

Свій перший код на TypeScript я написав років 10 тому, лиш тільки ця мова з’явилася на публіці, і мова мені дуже сподобалася. Менів вона була цікава концептуально, бо вона ідейно близька до C#, на якому я в той час активно займався комерційною розробкою. А ще у них обох один батько - Андерс Гейлсберґ, з роботою якого я був добре знайомий по Turbo Pascal / Delphi.

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

Але якийсь час про TypeScript мало хто знав, і лише з виходом Angular 2 у вересні 2016 про мову почали говорити активно. І вже за два місяці я проводив свій перший воркшоп для розробників, ось навіть запис зберігся https://youtu.be/_UxchN7O1Ws . Цікаво, що за 6+ років з того часу в TypeScript з’являлися нові фічі і актуальна версія на сьогодні вже 5.0, однак практично все що було на тому воркшопі залишаєтсья актуальним, можете переглянути (практична частина там починається з 10-ї хвилини, і звук стає стабільний, бо то запис зі сцени, мікрофон був на столі, також лінк на код є).

Але популярність мова TypeScript набувала поступово, частково завдяки тому, що на перші ролі вийшов React, де традиційно без неї обходилися. І в 2019 році, коли я запускав ScriptJedi42, то просто вирішив почекати поки TypeScript набере достатньої популярності.

І так, цей день настав. У 2023 році приблизно кожен другий проєкт під фронтенд чи фулстек з NodeJS/NextJS/Remix стартує з TypeScript, і якщо ви в додачу до JS знаєте TS, то елементарно подвоюєте свої шанси на ринку.

Отже, тепер TypeScript є стандартною частиною курсу ScriptJedi42. Відразу стартуємо з його новою п’ятою версією. Для нього відводиться додатковий тиждень - таким чином тривалість курсу тепер становить 7 тижнів (49 днів). Цей тиждень виглядає аналогічно іншим тижням курсу - є теоретичні матеріали та набір практичних задач з автоматичною перевіркою на кожен день, які потрібно виконати і здати код на перевірку, я проводжу рев’ю і даю свої коментарі до коду. І звичайно що на ретроспективі розбираємо правильні способи зробити завдання. Модуль ми відтестували ще з групою, яка стартувала в січні, для них був незапланований бонус. 🙂

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

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

Також всі, хто завершили джедайський курс в минулому, мають можливість отримати доступ до модуля TypeScript в рамках нашої закритої джедайської спільноти, лише сконтактуйте зі мною.
👍296🔥6
Як працювати на кількох роботах одночасно
😁61🔥22
Вже десь так і працюємо
😁67🔥7👍1
Тут в блозі на StackOverflow вийшла цікава стаття.

Виявилося, що зараз вже понад 70% розробників зазначають як своє основне джерело знань не формальну університетську освіту, а онлайн-джерела.

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

І чим далі, тим та прірва буде зростати, завершивши університет ти зазвичай все одно не застрибнеш на роботу без додаткової підготовки.

Тому меседж для студентів: знімайте рожеві окуляри, сподіваючись, що універ всьому навчить, і що “відмінно” в заліковій книжці означає, що візьмуть на роботу автоматом.

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

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

Також додам що для подальшої кар’єри, коли ти хочеш копнути більше, то університетські знання будуть потрібні, але оптимальніше їх здобувати в режимі lifelong learning. Ну і дуальна освіта в цьому контексті має сенс, якщо вона правильно організована, звісно.
22👍14🔥7
Сьогодні чистий четвер - день чистого коду, то маю для вас щось цікавеньке по темі🙂

Тут недавно в інтернетах-твітерах розгорілася цікава дискусія про “Чистий код проти швидкості”.

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

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

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

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

То чим погано купа switch/if - тим що в коді з’являється багато можливих шляхів виконання, це ускладнює тестування, бо на кожен шлях треба мінімум один юніт-тест. Є таке поняття “цикломатична складність” - її важливо зменшувати. Поліморфізм в ООП дозволяє позбутися розгалужень і потрібну поведінку ми отримуємо за рахунок наслідування, а не розгалужень в коді, і цикломатична складність при цьому не зростає.

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

Далі стосовно того, що треба робити маленькі функції, функція повинна робити “one thing”, але незрозуміло що це таке. Насправді визначити те, чи достатньо маленька функція дуже просто - це коли вже її не можна розбити на інші функції, це і буде той “one thing”. Навіщо нам це робити? Дуже просто - принцип поділу на малі частини один із фундаментальних в програмуванні, бо їх простіше реалізувати, тестувати, перевикористовувати. Тут взагалі якісь контраргументи складно приводити - менше і простіше завжди краще ніж більше і складніше.

Ну і останнє, що там згадали - це DRY - Do Not Repeat Yourself. Тут навіть обговорювати нічого - дублювання коду є великим злом. Цікаво, що колись мав досвід спілкування зі співробітником Microsoft, який працює у своєрідній “внутрішній поліції”, робота якої полягає в тому, щоб шукати в проєктах речі, що дублюються і випилювати їх, попутно роздаючи “антипеченьок”, щоб не робили так знову. Можете собі уявити масштаб проблеми, якщо вони для того цілий підрозділ тримають?

Ну то висновок з того простий - фільтруйте ютуберів, читайте якісні джерела. Прогляньте коментарі від Дядка Боба. Майте чистий код.
👍375
Христос Воскрес! Сьогодні Пасха, значить поговоримо про пасхалочки в коді.

В 1986 році під час портування іграшки для приставки Nintendo розробник вбудував код, який активував чіти після натискання послідовності клавіш.
Згодом ту послідовність почали вбудовувати в іграшки компанії Konami, за що й отримала назву “Код Konami”.

Можливо ви цього не знаєте, але код став свого роду культом і його зустріти можна далеко за межами іграшок, на купі різних серйозних сайтів.
Є купа готовий імплементацій у вигляді бібліотек, ось наприклад, для реакту: https://www.npmjs.com/package/react-konami-code

Звичайно, що пасхалочки тільки такою комбінацією не обмежуються, і навіть складно уявити скільки їх є в тих сервісах, якими користуємося щодня.
Я сам таке люблю і в деяких проєктах пасхалочки додавав, не про все можна розказувати :)

А ви робили пасхалочки?
👍35😁8🥰2
Ось вам лайфхак, як за допомогою ChatGPT можна перевіряти ваші практичні навички.

1. Запит виглядає наступним чином: "Can you check my knowledge of JavaScript, so you will ask questions that will require writing code to answer? I will write code and you will check if it is correct and provide feedback on my code." Замість JavaScript може бути що завгодно інше.
2. Пишете код, ChatGPT перевіряє чи він ок.
3. Якщо потрібно - просите його покращити, пояснити щось.

В цьому повідомленні лише сам запит, приклад переписки дам окремим повідомленням.
🔥27👍111😁1
chatgpt-practice-js-check.png
2 MB
Приклад перевірки практичних навичок з ChatGPT.

Коментарі по питанням.
1. Тут я навмисно написав невірний код, щоб побачити як він зреагує. ChatGPT повідомив що рішення некоректне і видав правильне та пояснив його.
2. Тут я написав коректне рішення у сучасному стилі, до нього не мало б бути зауважень, ChatGPT відповідно відреагував.
3. Тут я написав коректне рішення, але не оптимальне з точки зору обчислювавльної складності. ChatGPT повідомив, що рішення коректне, проте не оптимальне і дав підказку, що було б варто використати Set, проте не надав оптимального коду і перейшов до наступного питання. Я попросив його це зробити, він зробив і пояснив.
4. Тут я зробив рішення що має недолік, який робить його некоректним (не додав початкове значення для reduce). Нажаль він не "побачив" його, проте написав коректне, коли я попросив покращити.

Висновок: інструмент корисний, але довіряти на 100% не можна, треба все перевіряти, в принципі, як і з людиною :)
👍30👏64🔥1
Сьогодні теж свято :)
Дякую джедаю Віктору Малиновському за чудовий подарунок.
🔥40👍122
Почалося :)
Поки виглядає не дуже привабливо, приріст кандидатів більше, ніж вакансій. Проте мій прогноз такий, що на осінь вакансій буде достатньо для того, щоб всі хто по скілам встигне підтягнутися, зміг роботу знайти.
69👍22
Сьогодні та завтра на 17:00 буду виступати на цій події
https://career.softserveinc.com/en-us/landings/unlock-it-open-week-2023
Сьогодні будемо розбирати ChatGPT з прикладами для навчання, буду ділитися лайфхаками, вже трохи є :)
Завтра - порівняння його з Copilot.
24🔥7
Місяць JavaScript на каналі programming mentor

Нещодавно StackOverflow опублікував результати опитування, в якому JavaScript стабільно утримує перше місце уже більше 10 років. Якщо ж додати TypeScript, родича JS, то їх лідерство непереборне - 65,8% профі розробників користуються JS, а 43,75% TS.

І тут Дуглас Крокфорд - далеко не остання людина в світі JS зовсім недавно записав відео, де закликав відмовитися від мови через її недоліки. Тому я хочу це обговорити.

Безумовно, у Крокфорда є аргументи, але він забув зазначити головне: якщо не JS, то на чому ж ми повинні писати?

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

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

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

Хочу зазначити, що JS не стоїть на місці. Мені подобається її шлях розвитку: старі функції залишаються, але нові, що щороку з'являються, впливають на сучасний код. Однак існує боязнь, що мова стане настільки великою, що вивчати її буде важко. Та зростаючі можливості AI з кодуванням і рефакторингом надихають: нам не обов’язково відразу вивчати всю мову, достатньо пропросити ChatGPT/Copilot пояснити або переписати незрозумілий код.

То що ж нас очікує? JavaScript, незалежно від недоліків, залишається "default language". Знаючи JS і TS, ви безперечно знайдете роботу, особливо якщо будете слідкувати за тим, щоб у сівішці було все те, що в топах рейтингів. І якщо захочете, то навіть зможете безперебійно працювати на JS до самої пенсії, не змінюючи технологічний стек, незважаючи на всі ті нові прекрасні мови, що безперечно вийдуть у майбутньому.

Тому оголошую місяць JavaScript на своєму каналі! Кожен день публікуватиму код, факти, кращі практики та лайфхаки JS. Якщо ви ще не доєдналися, то підписуйтеся на канал і поїхали :)

Лінки на опитування: публікація на Stackoverflow та скорочений варіант на ДОУ.
🔥458👍4
Отже, пост в рамках нашого місячника JS.
На скріні два рядки коду, що роблять одне й те саме - копію масиву.
Але по-різному - у першому рядку оператор розширення (spread), а у другому - деструктуризація (destructuring) та залишок (rest).
Коли люди починають вивчати JS, то часто spread і rest плутають, бо виглядає наче однаково (три крапки), але ніт, це різне 🙂
Також зверніть увагу, що це мілка (shallow) копія, але у зазвичай нам треба саме її, вона працює швидше за глибоку (deep copy).
Ну і задавалося б, оскільки робиться те й саме, то й працювати має з однаковою швидкістю.
Проте, як виявляється, також ніт - я зробив тест швидкості, можете самі переконатися. Однаково працює в файерфоксі та сафарі, але в хромі/еджі перший метод швидший разів в 7. Якось навіть соромно за них.
38🔥12👍10