(display: "Выбор языка"){ (set: $isInterviewMode to false) } (display: "Базовый") 💻 У Ивана еще остались небольшие сбережения на жизнь, но надо бы поторопиться с поиском работы.(if: visits is 1)[ Итак, с чего начнем?<br>] { (if:visits is an even) [ [[Отдохнуть с друзьями->Отдых с друзьями]]<br> ] (else: )[ [[Посидеть в соц. сетях->Соц. сети]]<br> ] (if: visits is an even and $cicdArticleDone is false)[ [[Прочитать статью про CI/CD на Habr->Статья про основы CI/CD]]<br> ] (elseif: visits is an odd and $dockerArticleDone is false) [ [[Прочитать статью про развертывание приложения на Docker на Habr->Статья про Docker]]<br> ] (if: $dailyVisits > 15 and $chatGptArticleDone is false) [ [[Прочитать статью про Prompt Engineering в Chat-GPT->Статья про Prompt Engineering]]<br> ] [[Открыть сайт поиска работы ->Сайт для поиска работы]]<br> [[Перейти на leetcode ->Leetcode]]<br> [[Открыть GitHub ->GitHub]]<br> [[Перейти на сайт фриланс биржи ->Биржа фриланса]]<br> [[Посмотреть профиль Ивана ->Профиль Ивана]]<br> } (display: "Резюме") [[Редактировать зарплатные ожидания ->Зарплатные ожидания в резюме]] [[Редактировать опыт ->Опыт в резюме]] [[Редактировать навыки ->Навыки в резюме]] [[Редактировать пункт "О себе" ->О себе]] { (if: $chatGptArticleDone is true and $isResumeEnhancedByChatGPT is false)[[Использовать Chat-GPT для улучшения резюме ->Улучшить резюме с Chat-GPT]] } [[Закрыть резюме ->Сайт для поиска работы]](display: "Базовый") Иван видит свой GitHub аккаунт. (display: "GitHub профиль") Что дальше? { (if: $openSourcePRs < 2)[ [[Посмотреть популярные репозитории для OpenSource->OpenSource репозиторий]]<br> ] (if: $leetcodeProjectInGitHub < 1 and $leetcodeExperience >= 4)[ [[Выложить задачу с leetcode]]<br> ](elseif: $leetcodeProjectInGitHub < 2 and $leetcodeExperience >= 7)[ [[Выложить еще одну задачу с leetcode]]<br> ] (if: $freelanceProjectInGitHub < 1 and $freelanceExperience >= 0.25)[ [[Выложить проект с фриланса]]<br> ](elseif: $freelanceProjectInGitHub < 2 and $freelanceExperience >= 0.75)[ [[Выложить еще один проект с фриланса]]<br> ] (if: $petProjectInGitHub < 1 and $netKnowledge >= 2)[ [[Начать свой pet-project]]<br> ](elseif: $petProjectInGitHub < 2 and $netKnowledge >= 3)[ [[Заняться своим pet-project'ом]]<br> ] } [[Закрыть сайт ->Дом]](display: "Базовый") (if: visits is 1)[Иван успешно зарегистрировался на сайте.] (display: "Профиль на фриланс бирже") Тысячи самых разных заказов. Оплата за проекты от 500 руб. до 300000 руб. Много таких же кандидатов как и Иван. Вот несколько вариантов, которые приглянулись Ивану: { (set: $heroPower to $netKnowledge) (set: $challengeResultPassage to "Результат работы на бирже фриланса") (set: $challengeHeader to "Ивану выпало испытание при работе на проекте - надо лишь ответить на вопрос...") } { (if: $freelanceProjects <= 5)[ [[Консультация на пару часов]]<br> ] (if: $freelanceProjects <= 8)[ [[Небольшой проект на пару дней]]<br> ] (if: $freelanceProjects <= 12)[ [[Недельный проект (сложный)]]<br> ] } [[Закрыть сайт ->Дом]]Double-click this passage to edit it.👯 Иван хорошо отдохнул с друзьями. Забыл о поиске работы и засиделся до поздна. { (set: $dailyVisits to it + 6) (if: $metWithFriends is false)[ Друзья поддержали его в нелегкий период и вселили в Ивана больше уверенности. <br> (set: $confidence to it + 1) (set: $metWithFriends to true) ] } [[Вернуться домой ->Дом]]Статья начинается следующим образом: Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые позволяют разработчикам чаще и надежнее развертывать изменения программного обеспечения. <a target="_blank" href="https://habr.com/ru/companies/otus/articles/515078/">Ссылка</a> Звучит интригующе? Продолжить читать? (link: "Да")[(set:$cicdArticleDone to true)(goto:"Статья прочитана")] [[Нет ->Соц. сети]](display: "Базовый") (display: "Профиль на leetcode") Иван не в первый раз на этом сайте. Все уже довольно знакомо. Он решил более 30 задач легкого и среднего уровня сложности. Может стоит замахнуться на что-то по серьезнее? { (set: $heroPower to $leetcodeExperience) (set: $challengeResultPassage to "Результат задачи на leetcode") (set: $challengeResultPassageWithGPT to "Результат задачи на leetcode Chat-GPT") (set: $challengeHeader to "Ивану выпало испытание при выполнении задания на leetcode. Какой же ответ на...") } { (if: $leetcodeExercises <= 7)[ [[Выбрать легкую задачу -> Легкая задача на leetcode]]<br> ] (if: $leetcodeExercises <= 10)[ [[Выбрать среднюю задачу -> Средняя задача на leetcode]]<br> ] (if: $leetcodeExercises <= 14)[ [[Выбрать сложную задачу -> Сложная задача на leetcode]]<br> ] } [[Закрыть сайт ->Дом]]Double-click this passage to edit it.Double-click this passage to edit it.(display: "Резюме") { (for: each _experience, ...$availableExperiences)[ (if: not ($experience is _experience's value))[ (link: _experience's name)[(set: $experience to _experience's value)(goto: "Опыт в резюме")]<br> ] ] } [[Вернуться в резюме->Меню резюме]] (display: "Резюме") (for: each _editableSkill, ...$editableSkills) [(if: $skills contains _editableSkill)[(link:"Убрать навык " + _editableSkill)[(set: $skills to $skills - (a: _editableSkill))(goto: "Навыки в резюме")]](else: )[(link:"Добавить навык " + _editableSkill)[(set: $skills to $skills + (a: _editableSkill))(goto: "Навыки в резюме")]] ] [[Вернуться в резюме->Меню резюме]] Иван вбивает заветные "(print: $selectedLanguage's 1st) программист" в строку поиска и видит: { (for: each _vacancy, ...$visibleVacancies) [ --- (set: $currentVacancy to _vacancy) (display: "Вакансия") (if: $appliedVacancies contains _vacancy's title)[Вы уже откликнулись на эту вакансию](else: )[(link: "Откликнуться")[(set: $appliedVacancies to it + (a:_vacancy's title))(goto: "Вакансии программиста")]] ] } [[Вернуться ->Сайт для поиска работы]](display: "Базовый") Иван на известном сайте по поиску работы BrainSeeker.ru. Что ему здесь нужно? [[Обновить свое резюме ->Меню резюме]] [[Посмотреть вакансии (print: $selectedLanguage's 1st) программиста ->Вакансии программиста]] [[Закрыть сайт ->Дом]](display: "Резюме") (for: each _salary, ...$availableSalaries) [(if: _salary is not $salary)[(if: _salary is 0)[(set: $salaryLinkText to "Скрыть з/п ожидания")](else: )[(set: $salaryLinkText to (text: _salary) + " руб.")] (link: $salaryLinkText)[(set: $salary to _salary)(goto: "Зарплатные ожидания в резюме")]]] [[Вернуться в резюме->Меню резюме]] Резюме Ивана выглядит так: ''Разработчик (print: $selectedLanguage's 1st)'' (if:$salary is not 0)[($salary руб.)] ''Опыт работы (лет)'': (if: $experience is 0)[без опыта](else: )[$experience] ''Навыки'' (for: each _skill, ...$skills) [(text-color:"cyan")[(text-style:"smear")[_skill]] ] ''Обо мне'' $aboutMe { (if: $isGitHubInResume)[ Профиль в GitHub c $gitHubRepositores репозиториями: github.com/IvanTheBest. ] (if: $isOpenSourceExperienceInResume)[ Открытые Pull Requests и личный вклад в OpenSource. ] (if: $isFreelanceExperienceInResume)[ Имел опыт работы во фриланс проектах разной сложности. ] (if: $isPetProjectInResume)[ Также в свободное время занимаюсь своим pet-project'ом по автоматизации ухода за растениями. ] }(display: "Резюме") { (set: _isSomethingAvailable to false) (if: $isGitHubInResume is false and $gitHubRepositores > 0) [ (set: _isSomethingAvailable to true) (link: "Добавить ссылку на GitHub аккаунт")[(set: $isGitHubInResume to true) (goto: "О себе")]<br> ] (if: $isFreelanceExperienceInResume is false and $freelanceProjects > 0) [ (set: _isSomethingAvailable to true) (link: "Добавить про опыт работы во фрилансе")[(set: $isFreelanceExperienceInResume to true) (goto: "О себе")]<br> ] (if: $isOpenSourceExperienceInResume is false and $openSourcePRs > 0) [ (set: _isSomethingAvailable to true) (link: "Добавить про вклад в OpenSource")[(set: $isOpenSourceExperienceInResume to true) (goto: "О себе")]<br> ] (if: _isSomethingAvailable is false)[Вроде бы нечего добавить.<br>] } [[Вернуться в резюме->Меню резюме]] 🧔‍♂️ Это Иван. Ему 30 лет. Он живет в городе Пермь. Окончил физфак в одном из ВУЗов города. Работает консультантом в банке. Однако попал под сокращение и согласился на уменьшение ставки и рабочих часов наполовину. Решил найти работу в IT. Для этого прошел курсы по (print: $selectedLanguage's 1st) для новичков за 3 месяца. После продолжил решать задачи на leetcode. У него это хорошо получается. Кроме того Иван читает книги по алгоритмам и пытается все примеры проверять на практике. Иван полюбил программирование и теперь полон уверенности устроится на работу в IT. Он хочет работу в большой и стабильной компании с перспективой роста. { (if: $dailyVisits > 0 and $dailyVisits % 20 is 0)[(goto: "Соц. сети")] (if: $dailyVisits > 0 and $dailyVisits % 40 is 0)[(goto: "Соц. сети")] (if: $dailyVisits > 0 and $dailyVisits % 60 is 0)[(goto: "Соц. сети")] (if: $dailyVisits > 0 and $dailyVisits % 80 is 0)[(goto: "Соц. сети")] (if: $dailyVisits > 0 and $dailyVisits % 100 is 0)[(goto: "Соц. сети")] (set: $day to 1 + (floor: $dailyVisits / 5)) } //Шел $day-й день поиска работы.//{ (set: $passage to (passage:)'s name) (display: "Время") (display: "Обновить скиллы") (if: $day >= $maxDays)[ (goto: "Итог") ](elseif: $day >= $startSearchCandidateDay)[ (display: "Компания ищет кандидата") ] (if: $debugMode is true) [ --------------------------- (display: "DebugView") --------------------------- ] } (if: visits % 3 is 0)[Иван потратил несколько часов на просмотр сториз в Instagram.](elseif: visits % 3 is 1)[Иван затянулся просмотром видео на YouTube и пропал.](else: )[Иван решил потратить время на чтение новостей в Facebook и Twitter.] { (set: $dailyVisits to it + 3) (if: $jobInITArticleDone is false)[ [[Почитать статью про работу в IT на Habr ->Статья про работу в IT]] ] } [[Вернуться в реальность ->Дом]] Задание выглядит довольно тривиальным. Вроде бы все просто. Надо перевернуть строку за минимум итераций. Вроде бы, ничего сложного. Или все-таки есть подвох? { (set: $challengePower to 1) (set: $challengeLevel to "low") } [[Прибегнуть к помощи Chat-GPT->Испытание]] [[Проще некуда. Приступить к задаче ->Испытание]] [[Передумать ->Leetcode]]Это задание на определение корректности синтаксиса в выражении неизвестного Ивану языка. Как раз такую задачу он в прошлый раз не осилил. Но не в этот раз... { (set: $challengePower to 3) (set: $challengeLevel to "medium") } [[Есть пара идей. Приступить к задаче ->Испытание]] [[Передумать ->Leetcode]]Задание из разряда "Соорудите космолет". Длинный текст, много непонятных букв. Необходимо время для обдумывания. { (set: $challengePower to 5) (set: $challengeLevel to "high") } [[Рискнуть и начать решать задачу ->Испытание]] [[Передумать ->Leetcode]]Звонок с незнакомого номера. Здравствуйте, Иван! Я представляю компанию (print: $currentVacancy's company). Мы ищем специалиста на должность (print: $currentVacancy's title). Вакансия: (display: "Вакансия") Хотите прийти к нам на техническое собеседование? (link: "Хорошо")[(goto: "Перед собеседованием")] (link: "Нет, мне не интересно")[(set: $rejectedVacancies to it + (a:$currentVacancy's title))(goto: "Дом")]{ (set: _vacancy to $currentVacancy) (print: _vacancy's title)<br> (print: _vacancy's salaryText)<br> (set: _experienceText to "Без опыта") (if: _vacancy's experience > 1)[(set: _experienceText to "1-3 года")] (if: _vacancy's experience > 3)[(set: _experienceText to "3-6 лет")] Требуемый опыт работы: _experienceText<br> (print: _vacancy's description)<br> Требуемые навыки:<br> (for: each _requiredSkill, ..._vacancy's skills)[(text-color:"cyan")[(text-style:"smear")[_requiredSkill]] ] <br> }{ (set: _chance to $heroPower/$challengePower) (if: _chance >= 1)[Иван успешно проходит задание. (set:$challengePassed to true)<br> (link: "Хорошо")[(goto:$challengeResultPassage)]] (elseif: _chance >= 0.8)[ (set: _try to (random: 10)) (if: _try <= 8)[ (display: "Вопрос") ](else:)[Иван недостаточно прокачался в этой области. К сожалению, он терпит неудачу.(set:$challengePassed to false)<br>(link: "Хорошо")[(goto:$challengeResultPassage)]] ](elseif: _chance >= 0.6)[ (set: _try to (random: 10)) (if: _try <= 6)[ (display: "Вопрос") ](else:)[Иван недостаточно прокачался в этой области. К сожалению, он терпит неудачу.<br>(link: "Хорошо")[(goto:$challengeResultPassage)]] ](else:)[ (set:$challengePassed to false) Иван недостаточно прокачался в этой области. К сожалению, он терпит неудачу.<br>(link: "Хорошо")[(goto:$challengeResultPassage)] ] }С виду выглядит как обычная консультация по готовому проекту с использованием (print: $selectedLanguage's 2nd). Иван берется за эту работу в надежде, что это займет от силы пару часов. { (set: $challengePower to 1) (set: $challengeLevel to "low") } [[А чего сомневаться? Приступить к работе ->Испытание]] [[Передумать ->Биржа фриланса]]С виду выглядит как небольшая доработка с использованием (print: $selectedLanguage's 3rd). Иван не так хорошо знаком с этой технологией, но решает взяться за дело. { (set: $challengePower to 3) (set: $challengeLevel to "medium") } [[Вроде бы по силам Ивану. Приступить к работе ->Испытание]] [[Передумать ->Биржа фриланса]]Довольно обширный список требований. Выглядит как небольшой типовой проект на (print: $selectedLanguage's 4th). Иван волнуется, что не уложится в срок. Но решает бросить все силы на этот проект и закончить его за пару дней. { (set: $challengePower to 5) (set: $challengeLevel to "high") } [[Рискнуть и приступить к работе ->Испытание]] [[Передумать ->Биржа фриланса]]Интервьюеры Ивана на удивление приятные и вежливые люди. С ними ему интересно разговаривать и обсуждать новости из мира IT. Однако пришло время технических вопросов. Ну что, приступим? [[Перейти к техническим вопросам ->Продолжение технического собеседования 2]]Иван чувствует себя относительно уверенно. Коллеги улыбаются услышав ответы Ивана. Наверное, правильно... С облегчением вздыхает Иван. Но вот, каверзный вопрос, на который наш кандидат не знает ответа. { (set: $challengeResultPassage to "Продолжение технического собеседования 3") (set: $challengeHeader to "Итак вопрос:") (set: $heroPower to $netKnowledge) (set: $challengePower to 5) (set: $challengeLevel to "high") } (display: "Вопрос"){ (set: _noMoreQuestions to false) (for: each _iter, ...(a:0,1,2,3,4,5,6,7,8,9,10))[ (set: $interviewQuestionIndex to (random: 1, $interviewQuestions's length)) (set: $index to 1) (for: each _question, ...$interviewQuestions)[ (if: _noMoreQuestions is false and $index is $interviewQuestionIndex)[ (set: $currentQuestion to _question) (if: not ($askedInterviewQuestions contains $currentQuestion's title))[ (set: _noMoreQuestions to true) (set: $askedInterviewQuestions to it + (a:$currentQuestion's title)) ] ] (set: $index to it + 1) ] ] (if: _noMoreQuestions is true)[ (print: $challengeHeader)<br> (print: $currentQuestion's title)<br> (print: $currentQuestion's text)<br> (for: each _answer, ...$currentQuestion's answers)[ (link: _answer)[ (if: _answer is $currentQuestion's rightAnswer)[ (set: $challengePassed to true)](else:)[ (set: $challengePassed to false)] (if: $isInterviewMode is false)[ (goto: "Ответ")] (else:)[ (goto: $challengeResultPassage)]] <br> ] ](else:)[ (set: $challengePassed to true) (if: $isInterviewMode is false)[(goto: "Ответ")] (else:)[(goto: $challengeResultPassage)]] }Иван прочитал статью и все комментарии под ней. После этого еще долго гуглил по теме и пытался практиковаться. С чувством выполненного долга Иван лег спать. { (set: $netTopics to it + 1) (set: $dailyVisits to it + 3) } [[Выключить свет ->Дом]]{ (if: $challengePassed is true)[ (if: $challengeLevel is "medium")[ (set: $freelanceProjects to it + 3) (set: $dailyVisits to it + 9) Были небольшие сложности при реализации. Но Chat-GPT и StackOverflow выручили Ивана. Прошло примерно полтора дня с момента начала задачи.<br> ] (elseif: $challengeLevel is "high")[ Иван много трудился и днем и ночью. Взял отгула на работе и в итоге потратил на этот проект почти 3 дня.<br> (set: $dailyVisits to it + 15) (set: $freelanceProjects to it + 5) ] (else:) [ (set: $freelanceProjects to it + 1) (set: $dailyVisits to it + 3) Прошло несколько часов - и никаких неожиданностей. Все отняло столько времени, на сколько и расчитывал Иван.<br> <br> Иван гордый собой завершает работу и видит обновленный рейтинг на бирже фриланса:<br> (display: "Профиль на фриланс бирже") ]] (else:)[ (set: $dailyVisits to it + 6) Прошел день и Иван понял, что этот проект ему не по зубам. Зато получил опыт - думает про себя Иван и не отчаивается.] (set: $challengePassed to false) } [[Сходить в магазин за продуктами ->Дом]] { (if: $challengePassed is true)[ (link: "🥳 Ура! Это правильный ответ...")[(goto: $challengeResultPassage)] ](else:) [ (link: "😔 К сожалению, это неверный ответ.")[(goto: $challengeResultPassage)] ] }(if: $challengePassed is true) [ ] К сожалению (live: 3s)[(goto: $challengeResultPassage)]{ (if: $challengePassed is true)[ (if: $challengeLevel is "medium")[ (set: $leetcodeExercises to it + 3) (set: $dailyVisits to it + 6) Иван поспрашивал про решение у коллег в чате. В итоге додумался до своего решения и оно работает. Потратил весь день, зато добавил задачу в копилку.<br> ] (elseif: $challengeLevel is "high")[ Иван много думал над задачей и в итоге потратил почти все выходные на нее.<br> (set: $dailyVisits to it + 10) (set: $leetcodeExercises to it + 5) ] (else:) [ (set: $leetcodeExercises to it + 1) (set: $dailyVisits to it + 2) Небольшой подвох, но Иван справился с задачей за пару часов.<br> <br> Иван гордый собой завершает работу и видит обновленный рейтинг на leetcode:<br> (display: "Профиль на leetcode") ]] (else:)[ (set: $dailyVisits to it + 4) После нескольких часов к ряду Иван решил оставить задачу.] (set: $challengePassed to false) } [[Сделать чай ->Дом]]Статья начинается следующим образом: Когда разработчик является отличным девопсом, умеющим развернуть своё детище на любой машине под любой OC, это плюс. Однако, если он вообще ничего не смыслит дальше своей IDE, это не минус — в конце концов, деньги ему платят за код, а не за умение его разворачивать. Узкий глубокий специалист на рынке ценится выше, чем средней квалификации «мастер на все руки». Для таких, как мы, «пользователей IDE», хорошие люди придумали Docker. <a target="_blank" href="https://habr.com/ru/articles/448094/">Ссылка</a> Звучит интригующе? Продолжить читать? (link: "Да")[(set:$dockerArticleDone to true)(goto:"Статья прочитана")] [[Нет ->Соц. сети]]Иван решил выбрать из решенных задач на leetcode посложнее. По-моему вот эта неплохая: про игру в шахматы с ограничением ходов. Здесь и алгоритмы и интересное задание. Будет, что показать будущему работодателю. (set: $leetcodeProjectInGitHub to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]Иван нашел подходящий репозиторий. Популярная библиотека для (print: $selectedLanguage's 3rd). Много звезд от участников OpenSource сообщества. Скорее нетерпится начать. ... Изучив документацию и пролистав код Иван понял, что тут требуется обстоятельный подход и много времени на изучение (print: $selectedLanguage's 3rd). Что посоветуете Ивану? { (set: $heroPower to $netKnowledge) (set: $challengeResultPassage to "Результат OpenSource") (set: $challengeHeader to "Ивану выпало испытание при работе с OpenSource реозиторием. Помогите ответить ему на следующий вопрос.") } [[Посмотреть список Issues]] [[Проверить корректность тестов]] [[Уйти из репозитория->GitHub]]GitHub профиль: Иван { (if: $openSourcePRs > 0)[ Открытых Pull Requests: $openSourcePRs<br> ] (if: $gitHubRepositories > 0)[Репозиториев: $gitHubRepositories](else:)[Пока пусто, ни одного репозитория.] <br><br> (if: $freelanceProjectInGitHub > 1)[Freelance: Сайт по регистрации домашних животных на (print: $selectedLanguage's 4th) <br>] (if: $freelanceProjectInGitHub > 0)[Freelance: Модуль для учета коммерческих предложений на (print: $selectedLanguage's 3rd) <br>] (if: $petProjectInGitHub > 0)[Pet-project: Регуляция уровня света и температуры комнатных растений на Arduino <br>] (if: $leetcodeProjectInGitHub > 1)[Leetcode: Задача про DDOS атаки<br>] (if: $leetcodeProjectInGitHub > 0)[Leetcode: Задача про шахматы <br>] }Иван решил взять один из модулей, который он написал для заказчика на GitHub, предварительно убедившись, что не нарушает конфиденциальность. Модуль достаточно общий, может быть переиспользован на множестве проектов - подумал Иван. (set: $freelanceProjectInGitHub to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]Иван решил выбрать из решенных задач на leetcode еще одну. Вроде бы неплохая и интересная задача на определение DDOS атаки по массиву тайм-кодов запросов. (set: $leetcodeProjectInGitHub to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]Иван решил взять проект заказчика целиком, так как он был не против. ... По ходу дела Иван решил причесать проект и добавить немного тестов - на что у него ушел целый день. (set: $dailyVisits to it + 6) Прошел 1 день.<br> (set: $freelanceProjectInGitHub to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]Иван знает, что каждый уважающий себя разработчик должен иметь свой pet-project, которым занимается в свободное время. Ивана всегда привлекала работа с железом. Поэтому он решил заняться проектом на Arduino. ... Он уже расписал структуру проекта и написал некоторые функции. Пока все идет отлично. Но Иван устал и хочет спать. (set: $petProjectInGitHub to it + 1) (set: $petProjects to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]У Ивана появилось несколько новых идей для реализации автоматизации системы полива растений. Он обдумывал их в течение недели и наконец дошел до репозитория. Похвальный поступок! ... В пылу разработки Иван забыл про время. Когда он вспомнил про сон, то часы показывали 3:30 ночи. (set: $petProjectInGitHub to it + 1) (set: $petProjects to it + 1) (set: $gitHubRepositories to it + 1) [[Закрыть сайт ->Дом]]Биржа фрилансеров Фрилансеры.Тут Фрилансер-программист Иван ((print: $selectedLanguage's 1st)) Рейтинг: (for: each _star, ...(a:1,2,3,4,5,6,7,8,9,10))[(if: _star <=$freelanceProjects)[⭐]]Leetcode Ivan Developer ((print: $selectedLanguage's 1st)) Rating: (for: each _star, ...(a:1,2,3,4,5,6,7,8,9,10))[(if: _star <=$leetcodeExercises/2)[⭐]]Параметры Ивана Leetcode: leetcodeExercises=$leetcodeExercises leetcodeExperience=$leetcodeExperience Freelance: freelanceProjects=$freelanceProjects Knowledge and Experience netKnowledge=$netKnowledge freelanceExperience=$freelanceExperience workExperience=$workExperience Day dailyVisits=$dailyVisits day=$day GitHub gitHubRepositories=$gitHubRepositories openSourcePRs=$openSourcePRs leetcodeInGitHub=$leetcodeInGitHub petProjectInGitHub=$petProjectInGitHub freelanceProjectInGitHub=$freelanceProjectInGitHub gitHubPower=$gitHubPower Challenge: challengeHeader=$challengeHeader challengePower=$challengePower heroPower=$heroPower challengeResultPassage=$challengeResultPassage challengePassed=$challengePassed Resume: resumePower=$resumePower isFreelanceExperienceInResume=$isFreelanceExperienceInResume isGitHubInResume=$isFreelanceExperienceInResume isOpenSourceExperienceInResume=$isOpenSourceExperienceInResume salaryPower=$salaryPowerИван прошерстил список багов в Issues репозитория. Да, есть над чем поработать. Только с ходу непонятно, в чем причина? Автор репозитория не отвечает. Есть ли шанс, что Pull Request заапрувят? Может не стоит браться? { (set: $challengePower to 5) (set: $challengeLevel to "high") } [[Надо попытаться ->Испытание]] [[Передумать ->OpenSource репозиторий]]Иван посмотрел тесты в репозитории. Их не так много, поэтому можно добавить парочку на одну из функций. Правда придется изучить библиотеку для создания моков для этого. { (set: $challengePower to 3) (set: $challengeLevel to "medium") } [[Взяться за тесты ->Испытание]] [[Передумать ->OpenSource репозиторий]]{ (if: $challengePassed is true)[ (if: $challengeLevel is "medium")[ (set: $openSourcePRs to it + 1) (set: $dailyVisits to it + 9) Иван привел в порядок некоторые тесты и добавил новые. Получил ряд замечаний от автора. Тем не менее, опыт очень ценный.<br> ] (elseif: $challengeLevel is "high")[ Иван потратил немало времени на углубление в код репозитория. Много полезного опыта и практик точно будут оценены на будущей работе! Кроме того, вместо одного PR получилось сделать еще один. Один из них, кстати получил одобрение.<br> (set: $dailyVisits to it + 15) (set: $openSourcePRs to it + 2) ]] (else:)[ (set: $dailyVisits to it + 8) Иван не смог найти причину бага и добавить тесты. Оказалось это не так просто, как казалось. Он решил отдохнуть и поиграть полдня в компьютерные игры.] (set: $challengePassed to false) } [[Заказать себе еду ->Дом]]{ <!-- RECALCULATE --> <!-- GROWING SKILLS --> <!-- FREELANCE EXPERIENCE --> (set: $freelanceExperience to $freelanceProjects) <!-- GITHUB POWER --> (set: $gitHubPower to (min: $gitHubRepositories*0.5 + $openSourcePRs*1.3,10)) <!-- WORK EXPERIENCE --> (set: $workExperience to $initialWorkExperience + $freelanceExperience*0.2) <!-- LEETCODE EXPERIENCE --> (set: $leetcodeExperience to (min: $leetcodeExercises*0.5,10)) <!-- .NET KNOWLEDGE --> (set: $netKnowledge to (min:$netTopics*0.15+$petProjects*0.2+$leetcodeExperience*0.2+$gitHubPower*0.2+$workExperience,10)) <!-- RESUME POWER --> (set: $resumePower to 0) (for: each _goodSkill, ...$goodSkills)[ (if: $skills contains _goodSkill)[ (set: $resumePower to it + 0.5)] (else: )[ (set: $resumePower to it - 0.2)]] (if: $isResumeEnhancedByChatGPT)[ (set: $resumePower to it + 1.5)] (if: $isFreelanceExperienceInResume)[ (set: $resumePower to it + 1)] (if: $isOpenSourceExperienceInResume)[ (set: $resumePower to it + 1.25)] (if: $isGitHubInResume)[ (set: $resumePower to it + 0.5)] (set: $resumePower to it + $experience) (set: $resumePower to (max:$resumePower,0)) (set: $resumePower to (min:$resumePower,10)) }{ (if: $debugMode is true)[ resumePower=$resumePower<br>] (set: $maxResumeCriteria to 0) (set: $maxAppropriateVacancy to 0) (for: each _vacancy, ...$visibleVacancies)[ (if: not ($rejectedVacancies contains _vacancy's title))[ (if: $appliedVacancies contains _vacancy's title)[(set: $applianceCriteria to 1)](else:)[(set: $applianceCriteria to 0.3)] <!-- CALCULATE SALARY CRITERIA --> (if: $salary is 0)[(set: $salaryMultiplier to 1)] (else:)[(set: $salaryMultiplier to _vacancy's salary / $salary)] (if: $salaryMultiplier < 0.5)[ (set: $salaryMultiplier to 0) ](elseif: $salaryMultiplier > 3)[ (set: $salaryMultiplier to 0) ] <!-- CALCULATE SKILLS CRITERIA --> (set: $skillsCriteria to 0) (for: each _vacancySkill, ..._vacancy's skills)[(if: $skills contains _vacancySkill)[(set: $skillsCriteria to it + 1)] ] (set: $skillsCriteria to it / _vacancy's skills's length) (set: $experienceDiff to $experience-_vacancy's experience) (set: $experienceCriteria to ($experienceDiff+3)/6) (set: $resumeCriteria to $salaryMultiplier*$resumePower*$experienceCriteria*$applianceCriteria*$skillsCriteria) (if: $debugMode is true) [ vacancyTitle=(print: _vacancy's title)<br> salaryMultiplier=$salaryMultiplier,applianceCriteria=$applianceCriteria, skillsCriteria=$skillsCriteria,experienceCriteria=$experienceCriteria<br> resumeCriteria=$resumeCriteria<br> -----------------<br> ] (if: $resumeCriteria > $maxResumeCriteria)[ (set: $maxResumeCriteria to $resumeCriteria) (set: $maxAppropriateVacancy to _vacancy) ] ] ] (if: $maxResumeCriteria > 0.7)[ (set: $currentVacancy to $maxAppropriateVacancy) (goto: "Приглашение на собеседование") ] }Иван решил пока никому не говорить о предстоящем собеседовании и вести себя как обычно. Однако внутри он сильно переживает за будущее мероприятие. Ведь он никогда не был на техническом собеседовании на позицию программиста. Что посоветуете Ивану, чтобы справиться с волнением? [[Пойти отдохнуть с друзьями ->Отдых с друзьями перед собеседованием]] [[Посмотреть сериал->Посмотреть сериал перед собеседованием]] [[Подготовиться к вопросам ->Подготовиться к вопросам на собеседовании]]Иван не удержался и рассказал друзьям о предстоящем собеседовании. Получив напутствия и изрядную долю алкоголя Иван вернулся в состоянии среднего алкогольного опьянения и завалился на кровать... [[Спать ->Сбор на собеседование]]Сериал действительно хорошо отвлек Ивана от неприятных мыслей и волнения. Правда после просмотра тревога вернулась вновь. Иван решил продолжить просмотр на телефоне в кровати и не заметил как уснул. [[До завтра ->Сбор на собеседование]]Иван провел вечер и ночь за подготовкой к собеседованию. Но его постоянно отвлекали сообщениями и сконцентрироваться было сложно. Иван понимал, что на кону его карьера. Но это не помогало. Мозг отказывался работать и хотел спать... [[Спать ->Сбор на собеседование]]Настало утро перед собеседованием. За завтраком Иван открыл вакансию компании (print: $currentVacancy's company) и еще раз посмотрел зарплату: (print: $currentVacancy's salaryText). Иван решил отнестись к этому серьезно и надел относительно новый джемпер. Так одеваются программисты, надо выглядеть соответствующе. В назначенное время Иван подключился в Zoom. [[Включить звук и камеру ->Начало технического собеседования]]Ивана встретила улыбчивая девушка HR. Она рассказала о компании и познакомила Ивана с его потенциальными коллегами по работе. Иван рассказал о своем опыте и поделился достижениями. Все внимательно слушали. Волнение немного подводило Ивана и голос иногда был слишком тихий. { (set: $minNetKnowledge to 0.00002*$currentVacancy's salary) (set: $isInterviewMode to true) (if: $netKnowledge < $minNetKnowledge)[ (set: $interviewScore to -10) ] (else:)[(set: $interviewScore to $netKnowledge/$minNetKnowledge)] } [[Дальше ->Продолжение технического собеседования]]Интервьюер перешел к другой теме. А Иван так и не понял, устроил интервьюера данный Иваном ответ или нет. Хорошо, а теперь давайте поговорим об архитектуре. Скажите, какие паттерны проектирования вы знаете? ... { (if: $challengePassed is true)[ (set: $interviewScore to it*1.1) (set: $challengePassed to false) ] (else:) [(set: $interviewScore to it*0.9)] (if: $netKnowledge > 5)[Иван недолго думая выдал несколько паттернов и перечислил их особенности и область применения.](elseif: $netKnowledge > 4)[Иван не углублялся в эту тему при подготовке, но смог выдать несколько паттернов и рассказать о некоторых подробнее.](else:)[Вопрос оказался для Ивана слишком сложным. Он не смог ответить внятно и ясно.]<br> } [[Хорошо, давайте дальше - сказал интервьюер->Продолжение технического собеседования 4]]Уверенность Ивана постепенно покидала его. С другой стороны накапливалась и усталость. Да сколько же можно? Давайте просто разойдемся. Иван успешно парирует несколько вопросов от своих собеседников. Однако не может сходу ответить на следующий: { (set: $challengeResultPassage to "Завершение технического собеседования") (set: $challengeHeader to "Итак вопрос:") (set: $heroPower to $netKnowledge) (set: $challengePower to 5) (set: $challengeLevel to "high") } (display: "Вопрос")Еще немного заданий на знание программирования и запас испытаний для Ивана у интервьюеров иссяк. Похоже время для вопросов от Ивана. Стоит ли Ивану спрашивать о процессе работы и будущей команде? { (if: $challengePassed is true)[ (set: $interviewScore to it*1.1) (set: $challengePassed to false) ] (else:) [(set: $interviewScore to it*0.9)] } (link: "Да")[(set: $confidence to it + 1)(goto: "Собеседование с HR")] (link: "Нет")[(goto: "Собеседование с HR")]После долгой сессии вопросов Иван чувствует себя изрядно выжатым. Однако, расслабляться рано. Предстоит разговор с HR о зарплатных ожиданиях. ... Долгий разговор о преимуществах работы именно в этой компании закончился. Наконец, главный вопрос, который волнует Ивана: Какие у вас зарплатные ожидания? - спрашивает его HR. Что ответить? { (if: $salary > 0)[ (link: "У меня указано в резюме, " + (text: $salary) + " руб.")[(set: $desiredSalary to $salary)(goto: "Ожидание оффера")]<br> ] (if: $confidence >= 1)[ (link: (text: $currentVacancy's salary) + " руб.")[(set: $desiredSalary to $currentVacancy's salary)(goto: "Ожидание оффера")]<br> ] (if: $confidence >= 2)[ (link: (text: $currentVacancy's salary + 10000) + " руб.")[(set: $desiredSalary to $currentVacancy's salary + 10000)(goto: "Ожидание оффера")]<br> ] (if: $confidence >= 3)[ (link: (text: $currentVacancy's salary + 30000) + " руб.")[(set: $desiredSalary to $currentVacancy's salary + 30000)(goto: "Ожидание оффера")]<br> ] (if: $confidence >= 4)[ (link: (text: $currentVacancy's salary + 50000) + " руб.")[(set: $desiredSalary to $currentVacancy's salary + 50000)(goto: "Ожидание оффера")]<br> ] } Поболтав еще немного о плюшках, которые предоставляет компания Иван и HR попрощались друг с другом. Девушка обещала перезвонить даже в случае отказа. Иван вернулся домой и решил заслуженно позависать в интернете. Зависнув на пару часов на YouTube он понял, что так больше продолжать нельзя и переключился на сериал. [[Прошло 2 дня ->Решение по офферу]]Через 2 дня Ивану перезвонила все та же девушка HR. В дружелюбной манере она рассказала ему о принятом после собеседования решении. { (set: $maxDays to it + 2) (set: $dailyVisits to it + 10) (set: $day to 1 + (floor: $dailyVisits / 5)) (if: $interviewScore > 0)[ (set: $realSalary to $currentVacancy's salary * $interviewScore) (set: $resultSalary to (min: $realSalary, $desiredSalary)) Иван, по вашей кандидатуре было принято положительное решение. Мы готовы предложить вам позицию (print: $currentVacancy's title) с зарплатой $resultSalary рублей.<br>(set: $rejectedVacancies to it + (a:$currentVacancy's title)) [[Принять предложение->Итог]]<br> [[Отклонить предложение ->Дом]] ](else:)[ Иван, к сожалению, по результатам технического собеседования мы не можем предложить вам позицию (print: $currentVacancy's title). Надеемся встретится в будущем снова!<br>(set: $rejectedVacancies to it + (a:$currentVacancy's title))(set:$isInterviewMode to false)(set: $resultSalary to 0) [[Продолжить искать работу мечты->Дом]] ] }{ Ваш результат: <br> Прошло $day дней. <br> (if: $isInterviewMode is true)[ (if: $resultSalary > 0)[ Иван принят позицию (print: $currentVacancy's title) с зарплатой $resultSalary рублей.<br><br> ]](else:)[ Уже прошло много времени, а Иван так и не сходил на собеседование ни разу. В отчаянии он решил попробовать себя в ставках на спорт - возможно там ему повезет больше. <br> ] } Спасибо за игру! 👨‍💻 Хочешь подготовиться к собесам в IT по-настоящему? <a href="https://go.almazsr.com/Mqo5s4">Собесбот</a> - бесплатный бот в Telegram для подготовки к собесам в IT. <a href="https://go.almazsr.com/gEk1eN">Группа в Telegram</a> - там помогаем друг другу готовиться к собесам в IT.Статья рассказывает про сложности работодателей с поиском кандидатов. Судя по всему, идет настоящая охота за головами... Это немного порадовало Ивана и вселило ему уверенности. (link: "Продолжить читать")[(set: $confidence to it + 1)(set:$jobInITArticleDone to true)(goto:"Статья прочитана")] [[Покинуть сайт ->Дом]](display: "Резюме") ---------------------------- (display: "Профиль на фриланс бирже") ---------------------------- (display: "Профиль на leetcode") ---------------------------- (display: "GitHub профиль") [[Вернуться ->Дом]]Спасибо за игру!{ (set: $TypeScript to (a: "TypeScript", "React", "Node.js", "Vue")) (set: $Python to (a: "Python", "Django", "Flask", "TensorFlow")) (set: $Java to (a: "Java", "Spring", "JavaFX", "Micronaut")) (set: $CSharp to (a: "C#", "ASP.NET Core", "Avalonia UI", "Blazor")) (set: $PHP to (a: "PHP", "Laravel", "Symfony", "CodeIgniter")) (set: $Go to (a: "Go", "Gin", "Beego", "Cobra")) (set: $Kotlin to (a: "Kotlin", "Ktor", "Spring Boot", "Jetpack Compose")) (set: $Swift to (a: "Swift", "SwiftUI", "Vapor", "Alamofire")) (set: $languages to (a: $CSharp, $TypeScript, $Java, $Python, $PHP,$Go,$Kotlin,$Swift)) }👉 Выберите язык программирования: (for: each _lang, ...$languages)[ (link-repeat: _lang's 1st)[(set: $selectedLanguage to _lang) (goto: "Знакомство")]] (display: "Рассказ об Иване") Помогите ему найти работу мечты! [[Хорошо ->Дом]] (display: "Переменные"){ (set: $debugMode to false) <!-- DAYS --> (set: $startSearchCandidateDay to 10) (set: $maxDays to 16) (set: $dailyVisits to 0) (set: $day to 1) (set: $socialNetworks to 4) <!-- INITIAL SKILLS --> (set: $initialWorkExperience to 0) (set: $gitHubRepositories to 0) (set: $openSourcePRs to 0) (set: $leetcodeExercises to 4) (set: $freelanceProjects to 0) (set: $petProjects to 0) (set: $netTopics to 4) (set: $confidence to 1) <!-- ARTICLES --> (set: $cicdArticleDone to false) (set: $dockerArticleDone to false) (set: $jobInITArticleDone to false) (set: $chatGptArticleDone to false) <!-- GITHUB --> (set: $leetcodeProjectInGitHub to 0) (set: $petProjectInGitHub to 0) (set: $freelanceProjectInGitHub to 0) <!-- CONFIDENCE --> (set: $metWithFriends to false) <!-- CHALLENGE --> (set: $challengePower to 0) (set: $heroPower to 0) (set: $challengeResultPassage to "") (set: $challengeHeader to "") (set: $challengeLevel to "low") (set: $challengePassed to false) (set: $challengePassedWithGPT to false) (set: $askedInterviewQuestions to (a:"")) <!-- INTERVIEW --> (set: $rejectedVacancies to (a:"")) (set: $interviewScore to 0) (set: $minNetKnowledge to 0) (set: $desiredSalary to 0) (set: $resultSalary to 0) (set: $currentQuestion to "") (set: $isInterviewMode to false) <!-- RESUME --> (set: $salary to 40000) (set: $experience to 0) (set: $skills to (a:$selectedLanguage's 1st,"Базы данных", "Знание алгоритмов", "Коммуникабельность","Стрессоустойчивость", "Обучаемость")) (set: $aboutMe to "Уверенное знание " + $selectedLanguage's 1st + ", понимание алгоритмов, опыт работы с " + $selectedLanguage's 2nd + ". Обучаемый и терпеливый. Люблю работать в команде. Умею хорошо гуглить. Программирование - это мое хобби. Занимаюсь саморазвитием в свободное время.") (set: $appliedVacancies to (a:)) (set: $currentVacancy to $vacancy1) (set: $isFreelanceExperienceInResume to false) (set: $isOpenSourceExperienceInResume to false) (set: $isPetProjectInResume to false) (set: $isGitHubInResume to false) (set: $isResumeEnhancedByChatGPT to false) <!-- CONSTANTS --> <!-- INTERVIEW QUESTIONS --> (set: $interviewQuestion1 to (dm: "title", "Вопрос по Git", "text", "Как вы можете восстановить файл, случайно удаленный в предыдущем коммите, сохранив историю изменений?", "answers", (a:"git reset --hard", "git cherry-pick", "git revert"), "rightAnswer", "git revert")) (set: $interviewQuestion2 to (dm: "title", "Вопрос по Docker", "text", "Какой механизм в Docker позволяет объединять несколько контейнеров для их совместного взаимодействия в одной сети?", "answers", (a:"Docker Compose", "Docker Swarm", "Docker Network"), "rightAnswer", "Docker Network")) (set: $interviewQuestion3 to (dm: "title", "Вопрос на знание HTTP", "text", "Какой метод HTTP используется для отправки данных на сервер?", "answers", (a:"GET", "POST", "DELETE"), "rightAnswer", "POST")) (set: $interviewQuestion4 to (dm: "title", "Вопрос по Postgres", "text", "Какой оператор используется для объединения таблиц в SQL-запросе?", "answers", (a:"JOIN", "UNION", "MERGE"), "rightAnswer", "JOIN")) (set: $interviewQuestion5 to (dm: "title", "Вопрос по Kafka", "text", "Как называется механизм обработки сообщений в Kafka, который обеспечивает гарантию доставки сообщений?", "answers", (a:"Partitioning", "Acknowledgements", "Replication"), "rightAnswer", "Acknowledgements")) (set: $interviewQuestion6 to (dm: "title", "Вопрос по Agile", "text", "В какой методологии есть понятие WIP (Work In Progress)?", "answers", (a:"Scrum", "Kanban", "XP"), "rightAnswer", "Kanban")) (set: $interviewQuestion7 to (dm: "title", "Вопрос по Kubernetes", "text", "Какой компонент Kubernetes отвечает за распределение нагрузки между контейнерами?", "answers", (a:"Kubelet", "Scheduler", "Controller Manager"), "rightAnswer", "Scheduler")) (set: $interviewQuestion8 to (dm: "title", "Вопрос по JavaScript", "text", "Какой метод используется для преобразования массива в строку в JavaScript?", "answers", (a:"split()", "join()", "concat()"), "rightAnswer", "join()")) (set: $interviewQuestion9 to (dm: "title", "Вопрос по REST API", "text", "Какой код состояния HTTP указывает на успешное создание ресурса?", "answers", (a:"200", "201", "404"), "rightAnswer", "201")) (set: $interviewQuestion10 to (dm: "title", "Вопрос по Linux", "text", "Какая команда используется для отображения списка работающих процессов в Linux?", "answers", (a:"ps", "top", "ls"), "rightAnswer", "ps")) (set: $interviewQuestion11 to (dm: "title", "Вопрос по CI/CD", "text", "Что такое 'pipeline' в контексте CI/CD?", "answers", (a:"Набор команд для сборки проекта", "Набор процессов для автоматизации доставки программного обеспечения", "Набор тестов для проверки кода"), "rightAnswer", "Набор процессов для автоматизации доставки программного обеспечения")) (set: $interviewQuestion12 to (dm: "title", "Вопрос по Redis", "text", "Какой тип данных в Redis используется для хранения неупорядоченных уникальных элементов?", "answers", (a:"List", "Set", "Hash"), "rightAnswer", "Set")) (set: $interviewQuestions to (ds:$interviewQuestion1,$interviewQuestion2,$interviewQuestion3,$interviewQuestion4,$interviewQuestion5,$interviewQuestion6,$interviewQuestion7,$interviewQuestion8,$interviewQuestion9,$interviewQuestion10,$interviewQuestion11,$interviewQuestion12)) <!-- RESUME OPTIONS --> (set: $goodSkills to (a:$selectedLanguage's 1st,$selectedLanguage's 2nd,$selectedLanguage's 3rd,$selectedLanguage's 4th,"Git","Postgres","Docker", "Работа в команде", "REST", "Agile")) (set: $editableSkills to (a:$selectedLanguage's 1st,"Chat-GPT","Базы данных", "Знание алгоритмов", "Коммуникабельность","Стрессоустойчивость", "Обучаемость", $selectedLanguage's 2nd,$selectedLanguage's 3rd,$selectedLanguage's 4th,"Git","Postgres","Docker", "Работа в команде", "REST", "Agile")) (set: $noExperience to (dm: "name", "Без опыта", "value", 0)) (set: $oneYearExperience to (dm: "name", "1 год опыта", "value", 1)) (set: $twoYearExperience to (dm: "name", "2 года опыта", "value", 2)) (set: $threeYearExperience to (dm: "name", "3 года опыта", "value", 3)) (set: $availableExperiences to (ds: $noExperience,$oneYearExperience,$twoYearExperience,$threeYearExperience)) (set: $availableSalaries to (a:0,40000,60000,80000,100000,120000,150000,180000,220000,250000)) <!-- VACANCIES --> (set: $vacancy1 to (dm: "title", "Fullstack разработчик (Junior-Middle) " + $selectedLanguage's 1st, "salaryText", "от 100 000 до 130 000 руб. на руки", "salary", 110000, "skills", (a:$selectedLanguage's 1st, "Agile", "Kafka", "Docker", "Redis", "Chat-GPT"), "experience", 2, "description", "Сейчас на один из ведущих проектов (продукт компании) требуется разработчик. Проект представляет собой систему доверительной торговли.", "company", "ООО Вектор")) (set: $vacancy2 to (dm: "title", "Разработчик " + $selectedLanguage's 1st, "salaryText", "от 200 000 до 250 000 руб. на руки", "salary", 230000, "skills", (a:$selectedLanguage's 1st, $selectedLanguage's 2nd, "gRPC", "Postgres", "Docker", "Kubernetes", "CI/CD", "JIRA", "JSON", "REST"), "experience", 2, "description", "Участие в разработке новых проектов; Поддержка и улучшение существующего кода; Взаимодействие с командой разработчиков.", "company", "ООО Марка-Капитал")) (set: $vacancy3 to (dm: "title", "Разработчик (стажер)", "salaryText", "от 40 000 руб. на руки", "salary", 40000, "skills", (a:$selectedLanguage's 1st, $selectedLanguage's 3rd, "REST", "Postgres", "Figma"), "experience", 2, "description", "Стажировка в крупной международной компании с перспективой роста.", "company","Digital Perfect")) (set: $vacancy4 to (dm: "title", "Developer / Frontend " + $selectedLanguage's 1st, "salaryText", "от 150 000 руб. до вычета налогов", "salary", 160000, "skills", (a:$selectedLanguage's 1st,$selectedLanguage's 4th, "Git", "UI/UX", "Redis", "BDD", "gRPC", "HTML/CSS"), "experience", 2, "description", "Проект в сфере онлайн-платежей. Бесплатные курсы английского и обучение за счет компании.", "company", "EPOM Technologies")) (set: $vacancy5 to (dm: "title", "Программист " + $selectedLanguage's 1st, "salaryText", "до 90 000 руб.", "salary", 70000, "skills", (a:$selectedLanguage's 1st, $selectedLanguage's 3rd, "Agile", "Docker", "Git"), "experience", 1, "description", "Дружная команда ищет нового разработчика для участия в стартапе.", "company", "Atraction LLC")) (set: $vacancy6 to (dm: "title", "Backend разработчик " + $selectedLanguage's 1st, "salaryText", "от 120 000 руб. до вычета налогов", "salary", 100000, "skills", (a:$selectedLanguage's 1st, $selectedLanguage's 2nd, "Git", "Postgres", "ClickUp"), "experience", 2, "description", "Гос. контракты и стабильные выплаты. Льготы при ипотеке и общероссийский бренд.", "company", "ООО ГосБанк")) (set: $visibleVacancies to (ds: $vacancy1,$vacancy2,$vacancy3,$vacancy4,$vacancy5,$vacancy6)) }Статья начинается следующим образом: Большие языковые модели (LLM или БЯМ) становятся все более распространенными в производственных средах, поскольку они предлагают широкий спектр возможностей для автоматизации и повышения эффективности различных бизнес-процессов: <a target="_blank" href="https://habr.com/ru/articles/827546/">Ссылка</a> Звучит интригующе? Продолжить читать? (link: "Да")[(set:$chatGptArticleDone to true)(goto:"Статья прочитана Chat-GPT")] [[Нет ->Соц. сети]]{ (if: $challengeLevel is "low")[Chat-GPT довольно легко справился с заданием. Иван получил рабочее решение с первой попытки и успешно проходит задание. (set:$challengePassedWithGPT to true)<br> (link: "Супер")[(goto:$challengeResultPassageWithGPT)]] (elseif: $challengeLevel is "medium" and $chatGptArticleDone is true)[ Применив свежие знания из статьи, Иван пишет увесистый промпт и после небольших корректировок Chat-GPT выдает верный результат. "Неплохо" - подумал Иван.(set:$challengePassedWithGPT to true)<br>(link: "Неплохо")[(goto:$challengeResultPassageWithGPT)]] (else:)[ (set:$challengePassedWithGPT to false) Даже Chat-GPT эта задача не по зубам. Иван лишний раз убедился в бесполезности AI. К сожалению, он терпит неудачу.<br>(link: "Хорошо")[(goto:$challengeResultPassageWithGPT)] ] }{ (if: $challengePassedWithGPT is true)[ (if: $challengeLevel is "low")[ (set: $dailyVisits to it + 2) Это было довольно быстро, но Иван вряд ли справится с этой задачей на собеседоваии без помощи AI. Чувство вины захватил Ивана.<br> ] (else: $challengeLevel is "medium")[ Может быть Иван потратил на решение и меньше времени, но все равно утомился. Промпты писать - это не так и просто. Может быть это где-нибудь ему пригодиться. <br> (set: $dailyVisits to it + 3) (set: $leetcodeExercises to it + 1) ] ] (set: $challengePassedWithGPT to false) } [[Выпить кофе ->Дом]]Иван без труда использует техники построения промптов. После нескольких часов совместной работы над улучшением резюме - Иван доволен результатом. У него получается сделать резюме более привлекательным для потенциальных работодателей. { (set: $isResumeEnhancedByChatGPT to true) } [[Закрыть резюме ->Сайт для поиска работы]]Актуальные знания в области AI. Возможно за этим будущее. Иван прочитал статью и все комментарии под ней. После этого еще долго гуглил по теме и пытался практиковаться в написании промптов с Chat-GPT. С чувством выполненного долга Иван лег спать. { (set: $dailyVisits to it + 3) } [[Выключить свет ->Дом]]💻 Спасибо за игру!