(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)
}
[[Выключить свет ->Дом]]💻 Спасибо за игру!