pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Можно ли сократить этот код, но чтобы он не лишался своих функций?

Лучший ответ: С помощью простой рекурсии будут вызываться функции sayHello и getAge до тех пор, пока наш пользователь не даст ответ:

const promt = (message = '') => window.prompt(message);

function sayHello() {
  let name = promt('Здравствуйте, как вас зовут?');
  return name || sayHello();
}

function getAge() {
  let age = promt('Сколько вам лет?');
  return age || getAge();
}

function greeting() {
	let name = sayHello();
  let age = getAge();

  alert(`Здравствуйте ${name}, вам ${age} лет.`);
}

greeting();

Если вам обязательно нужно задать второй вопрос, если пользователь не ответил на первый (который по умолчанию), то данную логику можно реализовать так:

const promt = (message = '') => window.prompt(message);

function getAnswerAnyway(defaultQuestion, repeatQuestion) {
  const iter = (atempts = 2) => {
    const question = atempts === 2 ? defaultQuestion : repeatQuestion;
    let age = promt(question);
    return age || iter(atempts - 1);
  }

  return iter(2);
}

function greeting() {
	let name = getAnswerAnyway(
    'Здравствуйте, как вас зовут?',
    'Я же спрашиваю, как вас зовут?',
  );

  let age = getAnswerAnyway(
    'Сколько вам лет?',
    'Почему молчите? Возраст укажите',
  );

  alert(`Здравствуйте ${name}, вам ${age} лет.`);
}

greeting();

Рабочий код можно посмотреть здесь.

Худший ответ: У вас приличный код.  Код должен быть не короткий, а понятный. 
Как вариант, можно цикл чуть по другому определить. 
while (!userName) {
...
}

P.S.
userName == null  почитайте про разницу разницу между == и ===. В js это важно и обычно используют userName === null
Успехов!
Вопрос: Как добавлять блоки на сайт через php?

Лучший ответ: элементарно: изучить основы по манам/туториалам, которых в инете овердофига.
а с конкретными затыками уже милости просим сюда.

Худший ответ: Начните с основ, можете почитать например эту книгу. А когда возникнут конкретные проблемы с непосредственно с реализацией и вы будете хотя бы ориентироваться в основах построения веб сайтов, то приходите, поможем. Сейчас ваш вопрос больше похож на задание - сделайте за меня!
Вопрос: Как бы вы оценили свёрстанный сайт портфолио?

Лучший ответ: В целом выглядит симпатично.
Все завернуто в тег main. это семантически неправильно.
Логотип внесен в общее меню, это вроде и не ошибка, но при интеграции  с любой цмс будут проблемы.
Адаптив выглядит так, как будто мета тега viewport нет, хотя он есть.
Меню не прячется в бутерброд. Возможно вы скажете, что оно и так влазит, но это первый признак совсем начинающего, сам таким был.
Вы кое где используете сетку бутстрап, но не до конца понимаете как она работает, поэтому пишите лишние классы. например col-md-6 col-lg-6. В этом месте класс col-lg-6 лишний, так как делает ровно то же, что col-md-6, потому что бустстрап мобайл-фест. А там где одна колонка не нужен ни row ни col-12.
Не понял я смысл скроллов в карточках, выглядит намного хуже, как если бы где то было больше или меньше контента.
методАлогия))

Худший ответ: Дизайн - стремный да
Маркетинг такой же как дизайн - хрен с ним
у меня возникает один вопрос зачем rem em при такой ситуации 

не надо гнаться за модными вещами не понимая зачем они. Это вызывает жуткие тормоза на простейшей странице, не давая никаких преимуществ.
Вопрос: Почему в google page speed показывает высокую загрузку сайта, а в вебмастере гугл переходы с низкой скорость?

Лучший ответ: Попробуйте подождать 3-4 дня, если оптимизировали скорость недавно, Гуглу нужно время.
Если сайт оптимизировали давно, а данные не меняются - скормите ему sitemap целиком ещё раз, пусть напрягается. Хуже не станет. Только каждый день не нужно))

Худший ответ: Гугл pagespeed показывает текущую скорость сайта на момент теста, а вебмастер только последнее сканирование.   В последнее время они два сервиса постоянно обновляют - результаты могут отличаться. К примеру раньше было сложно набрать 90+, а сейчас это менее сложно. 
Алгоритмы   постоянно меняются, не к лучшему  - поблажки с их стороны никак не способствуют к реальной оптимизации
Вопрос: Как можно корректно написать асинхронный метод у объекта в typescript с дженериком?

Лучший ответ: Что именно ты хочешь сократить, вроде ж дальше некуда: один тип на вход - один на выход?

Ну можешь убрать async и await, они здесь не нужны:
const ApiServiceModule = {
  get: <T>(url: string): Promise<T> => fetch(url)
    .then(response => response.json())
    .catch(err => console.error(err))
} async/await всего лишь сахар над Promise и в данном случае ничего не делают, т.к fetch и так возвращает Promise.

P.S. Ну и методом я бы это не назвал, это свойство с функцией. Метод имеет доступ к this.

Худший ответ: В дополнение к Aetae - дженерик здесь тоже не нужен
Да, парсинг JSON возвращает any (по историческим причинам) и его вот таким дженериком можно легко кастануть в любой тип. Только зачем вообще использовать TypeScript если мы вечно его затыкаем своей правотой?
Даже если данные приходят с нашего сервера, и мы точно знаем их тип - их нужно проверять, ибо нет гарантии, что никто не ошибся на бэке, что мы не ошиблись в описании типа в который кастуем.
Поэтому должен быть тип unknown, чтоб TypeScript требовал все проверить перед использованием:const ApiServiceModule = {
  get: (url: string): Promise<unknown> => fetch(url)
    .then(response => response.json())
    .catch(err => console.error(err))
}
Вопрос: Как у бота Discord на Python на Discord.py сделать вывод ошибки о не найденной команде в чат?

Лучший ответ: Если ещё не поздно вот

@client.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.CommandNotFound ):
        await ctx.send(embed = discord.Embed(description = f'** {ctx.author.name}, данной команды не существует.**', color=0x0c0c0c))

Худший ответ: Что такое 'discord.ext.commands.errors.CommandNotFound' - это исключение?(Я с Discord не работал)
Если да, тогда наверное так:
try:
	тут код обработки команд
except discord.ext.commands.errors.CommandNotFound:
	# Здесь код выполнится только при ошибке CommandNotFound
Вопрос: Как из локальной сети подключиться к сайту работающему на виртуальной машине?

Лучший ответ: Смотря как именно организовано сетевое подключение в виртуальной машине, если через Virtualbox NAT (по дефолту) - то порты там в настройках можно пробросить.

Худший ответ: Всем привет! Как подключиться к сайту из локальной сети?Точно так же как вы подключились к Тостеру, когда задавали вопрос.Сайт находится на виртуальной машине, в ubuntu server. Apache2.Неважно где он находится.Нужен доступ с пк в локальной сети.Это мы уже поняли.
Вопрос: Есть ли какие нибудь нюансы или преднастройки с установкой Win10 на SSD?

Лучший ответ: Нет.

Худший ответ: TRIM врубить, если сам(виндоус) не додумался при установке
Вопрос: Что будет если активировать два Windows Server 2012 R2 одной лицензией?

Лучший ответ: Если активация произойдёт, то ничего плохого не случится в плане функционирования сервера.
Если активировать не получится - ну будет у вас 180 дней пробного использования, за которые тоже ничего плохого не случится в плане функционирования сервера, и можно будет позже активировать.

Негатив только юридического характера (if any, как говорится).
Но если три раза по 180 дней пройдёт и активации всё ещё не будет, тогда начнёт падать рандомно.

Худший ответ: Очевидно что поднимать 2 Widnows Server, если у вас лицензия на один - нарушение лицензии.

Миграция на новое железо делается иначе. Гуглите "Windows Server migration to new hardware".
Вопрос: Мама, хочу быть геймдизайнером, что делать?

Лучший ответ: Основной инструмент геймдизайнера - эксель. Внезапно! :)

Ну хотя даже у гд есть разные направления. Балансер - это эксель. Сценарист - это больше как писатель. Но вы уверены, что у вас есть соответствующие способности и талант? Ведь цифры в экселе вроде бы те же, но только теперь их нужно оживить.

У геймдизайнера, как и в любой другой профессии, есть рутина в работе. Да, это документация. Попробуйте даже не геймдизайн-документ составить, а просто концепт для будущей игры - это пара-тройка абзацев. Но сколько времени у вас на это уйдёт? Сколько дней?

Давайте возьмём для примера ваш текущий вопрос. Вы думаете, что слово "мама" в вопросе - делает его лучше и понятнее? Думаете, что фраза "всем добрый день" делает вас вежливее? Всё совсем наоборот. Это показывает, что вы даже правила не читали. И не уважаете отвечающих, которые приходят сюда не приветствия читать. Т.е. вопрос составлен на троечку.

В данном случае отвечающие - ваша аудитория. Как гд вы должны будете чётко понимать свою аудиторию. А это уже уклон в сторону психологии. И вообще, чем больше вы знаете, чем больше у вас эрудиция, и чем по большему числу предметов в прошлом вы получали 5 баллов, тем более крутой вы геймдизйнер. Всё ещё уверены, что эта профессия для вас?

Ну и, конечно же, нужен собственно игровой опыт. Это не увлечения в детстве, это огромное количество часов, проведённое в играх разных жанров (или в единственной игре, которая разобрана вами на атомы). Однако помните, что любой может потратить 10000 часов на игры, но не каждый может сделать это с вниманием и любовью к деталям.

Худший ответ: Если ты любишь в доту играть, то это абсолютно не значит, что у тебя есть способности к творчеству и дизайна. Это сравнение развлечения и работы. Тоже самое - я люблю летать на самолёте, но пилотом не хочу стать, т.к. это очень муторная работа и по графику неудобная.
А про деньги на курсы - о чем речь идёт? Сервисы типа ГикБреинс? Даже и не засматривайтесь в их сторону, мало того что денег потеряете очень много, так ещё и не научат ничему и работу не найдете без образования в Вузе дизайнера. А диплом то что они предлагают за деньги - это бумашка просто.
Вопрос: Готовая сборка на Gulp?

Лучший ответ: Вот посмотрите

Худший ответ: Вот посмотрите
Вопрос: Laravel vs WordPress?

Лучший ответ: Всё начинается с ТЗ. Если его нет, или нет понимания что это, нет времени на проработку ТЗ, то быстрее взять и сделать первую версию на коленке и WordPress. После обкатки уже осознать, взлетит ли проект и насколько он будет нагружен, во что может упереться в дальнейшем при продолжении разработки на WordPress. Вот тогда снова приходите с этим вопросом. На него как минимум уже можно будет более менее адекватно ответить.

Худший ответ: Тут без разговоров Wysiwyg Web Builder 16.

Удобная система для визуальной разработки дизайна сайта (сетки, флексы, css и js эффекты);
Большая готовая база для работы JS;
Широкий функционал для работы с формами (mail, mysql, csv);
Готовые инструменты для работы с MySQL;
Пользовательский код PHP, MySQL, JQuery, HTML, CSS;
Собственная CMS на базе MySQL и редактор контента на json;
Дополнения для различных задач MySQL CRUD,  MySQL Data Table;
Возможность разрабатывать собственные расширения под  фреймвок.

Эта система заменит дизайнера и программиста в одном лице.
Вопрос: Нужна помощь в написании бота для телеграмм?

Лучший ответ: Да, вам нужна помощь в написании бота для телеграмм.

Худший ответ: Это не код, это простыня текста. Так вам никто не поможет, если не оформите нормально. Читать невозможно.
Вопрос: Что использовать для создания консольного меню средствами терминала?

Лучший ответ: dialog, например.

Худший ответ: Стандартный select недостаточен?
Вопрос: Какой бесплатный VPN софт с высокой скоростью вы можете посоветовать?

Лучший ответ: Бесплатный - никакой.
Если товар бесплатный - то товар вы.
Берете самый дешевый сервер за 5$ в Европе и ставите свой собственный ВПН.

Худший ответ: Touch VPN, Встроенный впн в браузер Опера(быстрый).
Вопрос: Как без цикла сделать действие после появления файла в директории?

Лучший ответ: Как всегда - вопрос 100% "ниачем"... 
Во первых - зачем? Явно вы пытаетесь решить какую-то типичную задачу чисто вашими "воображаемо-оптимальными" способами, вместо того чтобы четко сформулировать реальную задачу.
Во вторых - именно озвученный функционал на php делать глупо. Это не его задача и специфика. Обычно это решают средствами ОС.
В третьих - никак, можно конечно запустить рекурсивно функцию с проверкой наличия файла в папке, но по сути это будет тот же вечный цикл с выходом по условию, только описанный в функциональном стиле. 

Повторюсь - наверняка вы решаете более общую и вполне прозаичную задачу, для которой уже придуман миллион решений проще и эффективнее.

Худший ответ: Всё решается "событиями"...

1. Идём гуглим, что такое события в программировании...
2. При каждом добавлении/удалении "генерируем" и "слушаем" эти события;
3. Выполняем какое-то требуемое действие после этого события.
Вопрос: PHP Parse error: syntax error, unexpected '$url_login' (T_VARIABLE) Что это значит?

Лучший ответ: $code_login = $_GET['code'];
Точку с запятой поставь...

Худший ответ: И поставь себе какой-нибудь редактор с подсветкой, станет легче.
Вопрос: Как сохранить переменную при перезагрузке сцены?

Лучший ответ: 1) Есть объекты помеченные DontDestroyOnLoad
2) Есть PlayerPrefs
3) На худой конец можно и файлами

Худший ответ: Статические поля и классы.
public static int Money = 0;

public static class Account
{
    private static List<Suit> Suits = new List<Suit>(); 
}

Только в пределах runtime сессии, при перегрузке игры все обнулится.
Вопрос: Несколько свитчей к одному через один, можно ли?

Лучший ответ: Нормально. Главное чтобы пропускной способности хватило и чтобы не подключили глупые коммутаторы в кольцо

Худший ответ: Схематично выглядеть должно так: Коммутатор -> 5 коммутаторов(по одному на кабинет) -> к одному свитчу в отдельном кабинете еще один подключить
Главная проблема в том, что как только один клиент будет обращаться к другому клиенту в такой сети, и загрузит весь канал (будет качать бэкап, или например загружать его на сервер), то остальные пользователи, подключенные к этому же свичу, получат очень грустное соединение ко всем узлам, в т.ч. и к интернет. У вас же по одному порту подключен один свич, на котором еще гирлянда из свичей и пользователей. Все упрется именно в этот один порт и будет всем только мешать.
Решением этого будет агрегирование каналов, если такое есть в ваших свичах, то используйте, если свичей еще нет, присмотритесь к устройствам с такой функцией.
Если грамотно скомпонуете и распределите нагрузку, то проблем не заметите (кроме тех, что озвучены - дешевые свичи дают очень грустные и неуловимые баги в сети)
Вопрос: Вопрос по нюансам Мега игры?

Лучший ответ: скидки - не проблема
Конкретные подарки - вы же не через игру будете дарить, а покупать ( с чеком ), организовывать доставку
если будет много, налоговая заинтересуется платят ли ваши игроки налоги с подарков

Худший ответ: Надо читать правила площадки, на которой будет игра распространяться. Тот же Гугл Плэй и АплСтор могут такому не обрадоваться.
Вопрос: Какой алгоритм составить для подбора количества банок?

Лучший ответ: это называется «задача об упаковке» (packing problem) и решается полным перебором всех вариантов.

«Желательно» – это доп. условие, задающее «вес» разным вариантам. 
Надо сформулировать функцию потерь: на входе комбинация банок, на выходе «штраф» за неё, который складывается из объёма перебора (недобор не должен вообще приходить), и, может, из количества мелких банок (чтобы минимизировать его).
Перебирая все варианты, считать штрафы, оставлять варианты с минимальными штрафами.

Несколько интересных алгоритмов. См. там ещё ссылки слева.

Худший ответ: У меня получилось такое решение. Спасибо большое, что приняли участие и помогли наставлениями :)
var n = 31;
var cans = [10, 15].sort(); // по возрастанию
var res = {};

while (n > 0) {
	let count = -1;
	for (let c in cans) {
		if (cans[c] < n) {
			count++;
		}
		else {
			count++;
			break;
		}
	}

	if (count < 0)
		continue;

	if (!res[ cans[count] ]) res[ cans[count] ] = 0;

	res[ cans[count] ]++;
	n -= cans[count];
}
Вопрос: Как устроиться менеджером проектов без релевантного опыта?

Лучший ответ: Либо подтягивайте технические скиллы, либо переориентируйтесь на должность менеджера продукта.

Худший ответ: Если у вас большой опыт в бизнесе, тем более офлайн зачем вам куда то устраиваться, делайте свой проект тут полностью развязаны руки , профита и опыта будет на порядок больше
Вопрос: Что стоит изучить и куда податься работать?

Лучший ответ: За два месяца невозможно освоить язык программирования до такого уровня, чтобы он тебе приносил деньги. Востребовано сейчас много языков, вопрос в том, что тебе действительно интересно делать

Худший ответ: Хочу стать врачом, у меня 2 месяца, чтобы научиться лечить людей, несмотря на то что другие учатся по 5-10 лет и только потом идут работать.

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

Параллельно, пару лет изучать каждый день помногу часов то, что Вы хотите.
Вопрос: Чем отличаются форматы файлов?

Лучший ответ: они могут отличаться всем, чем угодно. начиная от внутреннего устройства и заканчивая методами компрессии.
если формат открытый, вы можете открыть спеки и сравнить с другими форматами.
если формат закрытый, реверс-инжиниринг вам в руки.

Худший ответ: Возьмём для примера картинку в формате JPEG.
Допустим она в высоту 2 точки, и шириной 100 точек. Состоит из двух горизонтальных линий, каждая высотой в одну точку, и длинной 100 точек. Верхняя белого цвета (RGB: 255,255,255), нижняя красного (RGB: 255,0,0).
Как в текстовом формате описать эту картинку? 100 раз повторив слово "белый", а потом 100 раз слово "красный"? А нерусскогоговорящий компьютер это поймёт? Тогда заменяем слова на RGB-коды, 100 штук одного, и 100 штук другого цвета? А почему-бы не сократить до формулировки "255,255,255, повторить 100 раз; 255,0,0 повторить 100 раз"? Короче ведь, да? Ой, а на картинках бывают варианты в вертикальными линиями! Тогда и для них формулу придумать. А бывают градиенты, когда какой-то цвет меняется пошагово - делаем и для него формулу... И так далее.
Вот так и получается не-текстовый формат, который компьютер должен расшифровать, и показать человеку. Кстати, а вы точно программист, если этого не знаете?
Вопрос: Как реализовать сортировку массива в разных потоках?

Лучший ответ: Дели массив попалам, сортируй половины в разных потоках, дожидайся завершения обоих сортировок, и сливай две отсортированные половины.

Худший ответ: Вас бы лучше в универе поиском научили пользоваться.
Загуглил с первой попытки:
https://habr.com/ru/post/495002/
Вопрос: Проблема при парсинге ссылок?

Лучший ответ: Это похоже на base64
>>> import base64
>>> base64.b64decode('MmticHMlMjkubXAz1aHR9UaGUlMjBMaW0cHM4MC9maWxlcy9uLnByby9LnNlZm2jZG4Ly9wcmV6LzE50iYSUyMCUyNiUyMEFuZHJvJTIwLSUyMFguTyUyMCU')
b'2kbps%29.mp3\xd5\xa1\xd1\xf5F\x86RS#\x04\xc6\x96\xd1\xc1\xcc\xe0\xc0\xbd\x99\xa5\xb1\x95\xcc\xbd\xb8\xb9\xc1\xc9\xbc\xbd.sefm\xa3dn\x0b\xcb\xdc\x1c\x99^\x8b\xccNt\x89\x84\x94\xc8\xc0\x94\xc8\xd8\x94\xc8\xc1\x05\xb9\x91\xc9\xbc\x94\xc8\xc0\xb4\x94\xc8\xc1`\xb9<\x94\xc8\xc0\x94'

Я уже облазил весь гугл и так не нашёл решение этой проблемы.
А разгадка не в гугле - а в самом коде:

Там действительно base64 только немного "испорченная" по хитрому алгоритму.
Деталей алгоритма приводить не буду - тут не хакерский форум.

Худший ответ: Я глянул этот сайт, ссылки там действительно зашифрованы и это не base64.
Либо смотри js скрипты и ищи функцию, либо воспользуйся selenium.
Вопрос: Как сделать, чтобы блок реагировал на mouseleave после клика?

Лучший ответ: В переменную условное состояние "кликнутости" в булевом виде запишите, и в хендлере на mouseleave проверяйте эту переменную, соответственно изменение переменной происходит по клику.

Худший ответ: https://jsfiddle.net/gkqynj29/  так?
Вопрос: Как создавать объекты через цикл?

Лучший ответ: Чтобы получить то, что Вы хотите, нужно в цикле
objFun[num] = { // заменить num на i
  test1: 1,
  test2: 2
}
В следствии этой опечатки у Вас код в цикле просто num-1 раз создаёт в объекте одно и то же свойство с именем num.

Худший ответ: Прямой ответ на прямой вопрос:
/* Как создавать объекты через функции? */

function getObj(id, name) {

  return {
    id: id,
    name: name
  }

}

console.log(getObj(1, 'myFirstObject').name)
Вопрос: Как сделать подчеркивание ссылки на полную длину?

Лучший ответ: Элемент сделать блочным, отступ padding'ом, подчёркивание border'ом.

Худший ответ: Подчеркивание идет на всю длинну ссылки. Или делаете ссылку блочным элементом и пляшете отсюда дальше, или в ссылку засовываете блок, который весь и будет ссылкой.
Вопрос: Почему не берется DNS сервер из interfaces?

Лучший ответ: Согласно документации Ubuntu, вам нужно редактировать параметры netplan для конкретного интерфейса (в директории /etc/netplan/). В указанной документации ищите строку "DNS Client Configuration"...

Худший ответ: А resolvconf-то установлен? Без него подтягиваться не будет.
Вопрос: Что делать с Wi-Fi?

Лучший ответ: Тут описано как продиагностировать эфир и выбрать подходящий канал.

Худший ответ: Сейчас меня тапками закидают, но в 2.4 тебе только включать на полную мощность, на все 27. 
В 2.4 как в диком лесу сейчас - кто сильней тот и выжил.
У меня такая же ситцация. Микрот поставил в коридоре, чтобы он всех соседей слышал как можно слабже, в двушке работает более-менее, но оба телека и десктоп на кабеле. 
Про 5ГГц подметили верно - нужно в каждую комнату будет.
Вопрос: Нужны ли дополнительные интерфейсы на контроллере домена?

Лучший ответ: DNS использует IP - это маршрутизируемый протокол. СОответственно при наличии маршрутов из других подсетей работать будет.
DHCP использует broadcast/BOOTP - это немаршрутизируемые протоколы.
Для использования одного DHCP сервера в нескольких подсетях обычно используются ретрансляторы DHCP Relay, отправляющие запросы на DHCP сервер в другой подсети.

Что насчет default gateway - наличие их на нескольких интерфейсах может привести к проблемам маршрутизации, которая внутри локальной сети обычно решается созданием статических маршрутов.

Худший ответ: Сетевые карты нужны, но не для того, чтобы поднимать на них разные vlan (заемучаетесь потом разруливать), а чтобы настроить Etherchannel на них

DHCP - через реле
Остальное - через роутинг.
Плюс, закроете на роутере всякие левые порты, а то венда - такая себе, иногда дырявая.

Ну и главное, вы же в курсе, что контроллер домена нельзя ни бекапить (снимая образ с диска и не предпринимая дополнительных мер после восстановления), ни клонировать, а особенно нельзя держать в HyperV, который стоит на машине, которая находится в домене, который этот контроллер контроллит?
Вопрос: Что нужно знать junior php developer для работы в аутсорсинге?

Лучший ответ: на вилку минимум $500-1000?
Примерно года три-четыре подтверждённого опыта (фрилансеры пролетают), уверенное знание и опыт работы с Laravel, Symfony. Знание ООП, основных паттернов.
Можете сами открыть какой-нибудь hh.ru и посмотреть.

Худший ответ: По презентабельности: должны быть ваши "живые" (работающие в паблике) и подтверждаемые (по необходимости) проекты, портфолио с нерядовыми проектами, рекомендации клиентов и/или хорошие знакомства на рынке IT-труда в среднем/крупном бизнесе, чем Вы можете вызвать доверие, какие услуги и гарантии можете предложить при сотрудничестве - это всё должно быть хорошо продумано, оформлено (личный сайт-портфолио, github, pdf) и максимально понятно.

По знаниям: умение самостоятельно и грамотно строить оптимальную, модульную и расширяемую архитектуру для нового проекта без применения фреймворков. Также, нужны  самоконтроль и чёткое выражение своих мыслей при взаимодействии со штатными работниками для максимальной эффективности работы обеих сторон.

Желательно, юридическая поддержка на вашей стороне для грамотного оформления договора(-ов) и решения различных спорных вопросов.