Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: MySQL или PostgreSQL при геозапросах?

Лучший ответ:
PostgreSQL + PostGis (на этой связке работает OSM, очень быстрая и надежная система)
С MySQL всегда можно перейти на PostgreSQL, но обратно уже сложнее. Особенно если используются фичи PostgreSQL. 
Лучше начинать сразу с PostgreSQL

Худший ответ:
ИМХО лучше под вашу задачу подойдет elasticsearch. Но ни как основная БД, а как индексы для фильтраций по параметрам и бустинга( сложному ранжированию) по частичному совпадению и расстоянию.
Вопрос: Можно ли размывать при помощи css только часть элементов?

Лучший ответ:
JS костыль:
1) методами js делаем скриншот страницы
2) раскрываем меню, определяем его габариты и координаты
3) обрезаем скриншот по габаритам и координатам
4) блюрим обрезок и ставим как bg меню
Безумие.

Худший ответ:
-----
А нет я ошибался
https://jordanhollinger.com/2014/01/29/css-gaussia...
Год назад гугл такого не выдавал
Вопрос: Режим разработки на сайте. Как вносить изменения на работающий сайт в формате «demo»?

Лучший ответ:
Ну в теории - это можно. Никто вам не мешает везде писать что то вродеif ($test_mode == true)
{
//отдаем новый функционал
}
else
{
//отдаем старый функционал
}
Но это неправильно. Самый правильный вариант - это поднимать еще один сайт, для ветки с тестовым функционалом. Хоть на локальной машине и шарить на всех, хоть на той где основной сайт - просто давать доступ по другому урлу. Иначе утонете в тоннах ифов.
Крайний вариант - разрулить это на уровне роутинга страниц, это потенциально уменьшит количество условий, но все равно очень очень не найс.

Худший ответ:
Лучше поставить копию.
Вопрос: Опасно ли выполнять такой код в С# + T-SQL? Или каким способом можно написать по-другому?

Лучший ответ:
Ваш код не будет работать всегда предсказуемым образом. Основная проблема в том, что SELECT TOP  без ORDER BY не гарантирует ни в коем случае одни и те же данные. Да, в вашем случае они скорее всего приходят в порядке из сохранения в кластерном индексе. Но если изменится индекс или добавится новый, то ваш код может перестать работать как ожидается. 
Другая проблема в том, что несмотря на то, что подзапросы в WHERE одинаковые, они могут возвращать разные данные из-за первого UPDATE. Если у вас было 10 записей с REPLICATED =-10 (минус!), то до первого обновления подзапрос выдаст записи с 1 по 5, а после него с 6 по 10.
Совет: сохраните обновляемые ID в отдельную временную таблицу и присоединяйте ее для обновления. 
Либо настройте внешние ключи и каскадное обновление.

Худший ответ:
В итоге решил это дело так. На место {0} в C# коде подставляется сгенерированный GUIDBEGIN TRANSACTION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

SET DEADLOCK_PRIORITY LOW;
DECLARE @Quantity INT = 5;

IF OBJECT_ID('tempdb..##GroupIDs_{0}') IS NULL
BEGIN
	CREATE TABLE ##GroupIDs_{0} (
		ID INT NOT NULL,
		CONSTRAINT PK_GroupIDs_ID_{0} PRIMARY KEY(ID),
	);
END

INSERT INTO ##GroupIDs_{0} (ID) 
SELECT TOP(@Quantity) ID FROM SOME_GROUP WITH(UPDLOCK, READPAST) WHERE REPLICATED <> 1

-- Первый запрос, вызываемый из C# кода в одной транзакции.
-- 1 ------------------------------------------------------------------
UPDATE SOME_GROUP SET REPLICATED = 2 
OUTPUT 
  INSERTED.ID
 ,INSERTED.NAME
WHERE ID IN(SELECT ID FROM ##GroupIDs_{0})

-- Второй запрос, вызываемый из C# кода в одной транзакции.
-- 2------------------------------------------------------------------
UPDATE SOME_CHILD_ONE SET REPLICATED = 2 
OUTPUT 
  INSERTED.ID
 ,INSERTED.GROUP_ID
 ,INSERTED.UPDATED
WHERE GROUP_ID IN(SELECT ID FROM ##GroupIDs_{0}) AND REPLICATED <> 1

-- Третий запрос, вызываемый из C# кода в одной транзакции.
-- 3 ------------------------------------------------------------------
UPDATE SOME_CHILD_TWO SET REPLICATED = 2 
OUTPUT 
  INSERTED.ID
 ,INSERTED.GROUP_ID
 ,INSERTED.NAME
 ,INSERTED.CREATED
WHERE GROUP_ID IN(SELECT ID FROM ##GroupIDs_{0}) AND REPLICATED <> 1

DROP TABLE ##GroupIDs_{0};
-- 3 ------------------------------------------------------------------

COMMIT TRANSACTION
Вопрос: Автоматическое изменение высоты textarea вверх?

Лучший ответ:
Так?

Худший ответ:
На голом css без js не получится так сделать. Единственный выход использовать contentEditable="true":так
Вопрос: Как получить исходный код JS?

Лучший ответ:
Вставьте вначале всего кода скрипта и запустите скрипт.window.eval = function (str){
  alert('debug: '+JSON.stringify(str));
}Затем, найдите строку в коде.

Худший ответ:
Обычно ничего хорошего в таких кодах не бывает... ) Либо вирусы, трояны и черви
Вопрос: Веб стандарт или как писать правильно?

Лучший ответ:
Разница понятий веб сайта и веб приложения заключается не в том какой паттерн применяется при разработке, главным образом основное различие заключается в доставке контента пользователю, под сайтом мы подразумеваем веб-сервер к которому пользователь обращается по определенной ссылке и получает страницу согласно настройкам роутинга веб-сервера.
В случае же с веб приложением, пользователь при переходе на любую из ссылок веб-сервера обращается в изначальную точку входа ( как правило index.html ), и после происходит скачивание js скрипта, который в дальнейшем управляет веб приложением ( переходы по ссылкам, отображение информации, роутинг )
Говоря о стандартах, нет каких то явных стандартов построения приложении/сайтов все архитектурные решения производятся на этапе проектирования продукта, после выявления потребностей заказчика, стека технологий.

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

Лучший ответ:
Вот лучший вариант, который я нашел когда сам искал: jQuery("body").on('click', '[href*="#"]', function(e){
  var fixed_offset = 100;
  jQuery('html,body').stop().animate({ scrollTop: jQuery(this.hash).offset().top - fixed_offset }, 1000);
  e.preventDefault();
});

Худший ответ:
Если у вас меню не только на, например на главной но и на внутренних страницах, то лучше использовать так
jQuery( document ).ready(function($) {
	var $page = $('html, body');
$('.yourclass a').click(function() {
	var target = $(this.hash);
    $page.animate({
		scrollTop: target.offset().top - 50
    });
    return false;
});
		});
В таком случае в ссылке меню можно использовать не только с #, но ставить и полный путь
Вопрос: Возможно ли выжать все соки из vue.js без webpack?

Лучший ответ:
По поводу SEO, Vue умеет рендеринг на стороне сервера https://ru.vuejs.org/v2/guide/ssr.html и всё будет индексироваться. По остальному не подскажу, сам недавно начал работать с ним

Худший ответ:
Есть вариант "рисовать" главные страницы через внешние сервисы
https://toster.ru/answer?answer_id=668876#comments...
https://toster.ru/answer?answer_id=916006#comments...
Вопрос: Как сверстать схему?

Лучший ответ:
Использовать псевдоэлементы . Или написать генератор на javascript ( к примеру используя react). еще есть вариант все это нарисовать на svg используя javascript. А про адаптив можно забыть. Или перестраивать это все под определённые разрешения или скрывать.

Худший ответ:
Я бы верстал это обычной разметкой, а пунктирную линию сделал бы фоновым изображением. Об адаптиве тут как написали выше, можно забыть. Либо перестраивать блоки, либо сделать фикс ширину, и делать прокрутку на мобильных
Вопрос: Что значит и как перевести на русский tree shaking?

Лучший ответ:
Tree shaking (встряхивание дерева) — термин объединения модулей JavaScript, обозначающий статический анализ всего импортированного кода и исключение того, что на самом деле не используется.
Для более прямолинейной аналогии рассмотрим живое дерево. Дерево встряхивается, и это заставляет мертвые листья отваливаться, оставляя только живые. В основе tree shaking лежит концепция живого включения кода (live code inclusion): мы включаем части, необходимые для начала, в отличие от удаления ненужных частей в конце — устранения «мертвого кода» (dead code elimination).
Tree shaking зависит от import и export модулей ES2015. Выражения import и export составляют статическую структуру модуля приложения. Когда модули объединяются для развертывания приложения, tree shaker анализирует статическую структуру модуля, чтобы исключить неиспользуемый экспорт, уменьшив размер окончательного пакета.
ES2015 позволяет указывать явный импорт. Например, вместо импорта всей библиотеки RxJS мы можем импортировать именно то, что хотим:import { BehaviorSubject } from 'rxjs/BehaviorSubject';
Это отличается от динамического выражения require, используемого CommonJS или AMD. Tree shaking использует этот принцип для перемещения по зависимостям и исключения ненужных зависимостей для уменьшения размера приложения.
Принцип tree shaking не нов, но он только недавно был популяризирован с помощью сборщика rollup.js, объединяющего модули приложения. Webpack 2 также использует tree shaking. Концепция tree shaking также распространена в Angular с компиляцией AOT.Источник

Худший ответ:
Когда плоды/листья утрачивают связь с деревом, дерево трясут - плоды падают, дерево остается...
Любой код можно представить в виде дерева вызовов.
В бандл попадает код (например части библиотек/пакетов), который никак не связан с полезным кодом, занимает место но никогда не вызывается, таким образом с деревом кода не связан. Tree shaking помогает устранить такой код, оставив в бандле только то, что реально работает.
Вот например ты потянул здоровенную библиотеку в проект ради пару-тройки функций, а остальные дцать мегабайт просто лежат и вообще ничего не делают. Вот tree shaking, по идее, при сборке бандла эти мегабайты отбросит, оставит только то, что реально вызывается и приносит пользу...
Вопрос: Обратная связь концепции — боковая панель?

Лучший ответ:
1. В первую очередь я бы сделал страницу с хорошим адаптивом:
чтобы  текст не прилипал к краям экрана, чтобы не было горизонтальных скролов
2. Далее, я бы увеличил размер шрифта, увеличил расстояние межстрочное, убрал бы этот серый цвет шрифта на адекватный темный:
3. Затем, я бы сделал другой формат дат, например: Jul 31, 2017. Да и вообще,  этот блок можно оживить миниатюрой, аватаркой и т.д + сам заголовок можно сопровождать фоновой картинкой и т.д, чтобы не выглядело как серый мрачный день, пример блока:
4. Саму навигацию я бы сделал якорным объектом, привязанной к углу экрана или по крайней мере выровнял бы с текстом, сейчас сьехало + сьехали серые разделители-полоски
5. Панель боковая:
а) убрать бы эти темные рамки сверху снизу, оставить только справа панельку, зачем при открытии панели обрезать пол экрана?
б) в этой панели убрать "где я сейчас" и так понятно где.
в) сделать так, чтобы панель не закрывалась при ведении курсора под большим углом, такой прием используют в интернет магазинах с большими списками, я маркером зеленым пометил область с которой проблема в разных вкладках, поиграйтесь с курсором и будет понятно, что области взаимодействия должны быть больше
г) для этого попробуйте курсором попасть из точки А в точку Б - на ссылку фейсбука, боковая панель просто закроется.
6. Зачем вообще нужна боковая панель? Чтобы что? Я бы вообще её убрал в десктопной версии
7. Зачем вообще нужна вкладка Resent? Может имелось ввиду Recent? У меня есть браузер, где есть история страниц. А вот в макете нет возможность логина, а можно было бы подписываться на автора или добавлять статьи в избранное, писать комментарии и т.д
P.s список не полный, но основные мысли я изложил

Худший ответ:
Я сделал боковую панель с категориями и последними постами. 
Снеси её.
Двор, метла, листья.
Вопрос: Антивирус губит SSD?

Лучший ответ:
А вы тогда просто не включайте компьютер и все будет ок :D
Лично у меня за 2080 часов работы диска записано около 1800 Гб - это 1/15 от номинального ресурса, использую 7 месяцев.
В таком режиме мне его можно еще 8 лет эксплуатировать.скрин
Сделаем скидку на то, что ssdlife врет и пусть будет впереди еще 6 лет, ни один жесткий у меня столько не жил.

Худший ответ:
Купить SSD и бояться за его ресурс - это как купить Moto X Force и запихнуть его в толстый бампер, дабы не разбить.
Вопрос: Сколько времени требуется чтобы хорошо освоить Django?

Лучший ответ:
8 лет на джуниора

Худший ответ:
3 месяца, не вставая с места, по 3-4 часа с перерывами недолгими. Найти годный материал по django, хз документацию почитай, какой-нибудь онлайн курс пройди.
Вопрос: Может кто-то объяснить насчет зависимостей в node_modules?

Лучший ответ:
можно написать patch над модулем.
Каждый модуль в момент require('some-module') попадает в require.cache и далее данный модуль можно пропатчить.
Например:// first.js
const add = (a,b) => a +b;
module.exports.add = add

// patched.js
const MODULENAME = './first';
const moduleToPatch = require(MODULENAME); // здесь мы кешировали нужный нам модуль

require.cache[require.resolve(MODULETOPATCH)].exports.add = (a,b) => {
 console.log('PATCHED ! ! ! ! ')
 return a + b;
}

// second.js
require('./patched');
const { add } = require('./first');

console.log(add(10, 20)) 
// PATCHED ! ! ! !
// 30
Естественно первым нужно подключать модуль для патча, чтобы он сделал первый require у себя

Худший ответ:
Вот установил например зависимости, установил пакет к примеру, и я вот хочу что-то в нем изменить, добавить своей функциональности к примеру, я этого сделать никак не могу?
Создаешь свой модуль/либку, все нужные зависимости подключаешь внтури него, делаешь обвертки над нужными тебе функциями и затем в приложении используешь свою реализацию. Не стоит копировать модули, сложно будет в супорте.
Вопрос: Добрый день всем. Куда лучше сбежать из админов после 16го стажа. В 1С бухгалтерию или в 1С Битрикс. Знаком и с тем и с другим но поверхностно?

Лучший ответ:
"16-й стаж" и "мой регион" отлично поясняет ваш опыт и проблему.
16 работ сменили?
16 серверов настроили?
Нормальный админ с 16-летним стажем очень даже везде нужен.
И после 16-летнего стажа обычно сам должен знать куда он может переквалифицироваться - начальник ИТ отдела, девопс, разработчик, интегратор, сетевой админ.
Зависит от квалификации, а не от цифры "16"

Худший ответ:
Работать удалённо, если нет работы по профилю на месте, что очень странно, в общем-то. Хороший админ, куда нужнее, да и зарабатывает больше, чем битрикс "разработчик", и примерно столько, же, сколько весьма квалифицированный спец по 1с, которым стать не так и просто, т.к. нужно не только знание развесистой платформы, но и бухгалтерии и смежных отраслей.
Вопрос: Как упростить конструкцию Bash не используя if then else!?

Лучший ответ:
Можно убрать elseread -r -n1 -p "Ask some question. y/n " key
variable=false
if [ ${key^^} == "Y" ]; then
    variable=true
fi
Можно использовать && и ||read -r -n1 -p "Ask some question. y/n:" key
[ ${key^^} = 'Y' ] && variable=true || variable=false

Худший ответ:
Можно еще прощеread -r -n1 -p "Ask some question. y/n:"
[ ${REPLY^^} == 'Y' ]
variable=$?
Ну и дальше проверяете значение variable. Если 0, значит всё хорошо (true), если не 0, значит равенство не верно (false)
Вопрос: Я слышал, что goto использовать НЕЖЕЛАТЕЛЬНО. А что насчет while(true)? В функции есть много if'ов, в которых есть return. Моветон ли while(true)?

Лучший ответ:
Слышал звон )))
Мне вот почему-то кажется, что выход из языковой конструкции (цикла, или функции, и тд) в объемлющий её код не создаёт никаких затруднений.
А вот впрыгивание внутрь такой конструкции, на произвольную строку черевато.
Попробуй самостоятельно подумать эту мысль, а не получится - просто запомни её )

Худший ответ:
1 - моветон 
2 - другой вопрос, что иногда это классное решение (когда сокращает количество строк кода... до одной или двух)
... если строк кода больше 2х - вы роете себе яму... может все будет работать хорошо... а может вам придется провести много времени в отладчике... при чем далеко не сразу может появится стечение обстоятельств, которое все рушит
ps это вопрос читаемости/понимаемости кода. когда строк 2-3 - читаемость легкая
Вопрос: Как отключить обновление расширения в Гугл Хром?

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

Худший ответ:
Представляете я и это делал удалял строчку обновления из файла manifest.json и потом пробовал загрузить его как распакованное расширение - однако Хром не давал, писал что либо файл manifest поврежден, либо ещё какую-то дурь
Вопрос: Решать задачи VS Продолжать учиться?

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

Худший ответ:
+ за практику.
Вопрос: Modx просит завершить сеансы при любом клике, как исправить?

Лучший ответ:
Баг связан с кривой русификацией админки. 
В настройках админпанели  "System Settings", в категории настроек — "Lexicon and Language" (Языки) необходимо установить английский язык для настроек "Manager Language" (Язык админпанели)
Когда установлен ru, появляется это уведомление о завершение сеансов и еще слетает верстка самой админки (верхнее горизонтальное меню исчезает).

Худший ответ:
У меня та же проблема, после апдейта до последней версии. Но на английском не совсем удобно. как решить по другому? Чтобы админка была на русском?
Вопрос: Почему python не отображает кириллицу utf-8?

Лучший ответ:
Ответ приходит верно, в Unicode. Если очень надо можно сконвертировать в UTF8.
Python и UTF8
https://habrahabr.ru/post/135913/
В python3 все str по умолчанию в Unicode

Худший ответ:
Символы, которыми ты пишешь входят в состав кириллицы
Ответ тебе пришел в utf-8
Возможно requests преобразовал его в utf-8 ascii safe в котором каждый символ представлен в виде последовательности \u041f
В твоем случае, преобразовывать в юникод не нужно - requests сам все сделает
Вопрос: Выбор смартфона с глобальной версией прошивки или без?

Лучший ответ:
Выбирать надо все же global version, т.к. у китайцев свои LTE диапазоны. Плюс, зачем вам заниматься пере прошивкой телефона, вам делать нечего?
Про камеру забейте, 3% разницы в качестве ни о чем. Про "боке" тоже забудьте, на том же redmi note 5 "боке" это больше прикол какой-то чем технология.

Худший ответ:
Вопрос неправильный, так у телефонов разные прошивки и оболочки, и у обоих есть вариант с глобальной прошивкой. У Mi6 оболочка Mi-UI, у А2 стандартная андроидовская. У А2 android one со всеми плюсами и минусами.
В первую очередь смотри чтоб была поддержка сетей, иначе телефон бесполезен. А потом смотри обзоры и обращай внимание на недостатки и способы их решения. Система и оболочка на вкус и цвет, мне больше нравится минимализм интерфейса.
Вопрос: Как смонтировать .raw диск от виртуалки?

Лучший ответ:
Задача минимумум: прочитать файлы, содержащиеся в образе.
mount -o loop,offset=$((512*start_сектор_нужного_раздела)) file mountpoint
или losetup с параметром модуля ядра loop.max_part в какое-нибудь адекватное значение - тогда будут loop устройства с разделами как обычное блочное устройство.Задача максимум: и прочитать файлы и засунуть виртуалку в Proxmox, в качестве хранилища использующий LVM на CephFS.
Сделать LV по меньшей мере такого же размера, скопировать весь файл поблочно через dd

Худший ответ:
Самое простое это засунуть его обратно в проксмокс и не париться
Вопрос: Почему на ноутбуке могут не работать колонки и наушники одновременно?

Лучший ответ:
Потому что в разъеме наушников стоит физический контакт, который после вставки туда штекера отключает колонки.

Худший ответ:
Не работают ни колонки, ни наушники? Звук только по БлюТузу? Я правильно понял?
Сгорел усилитель. Проблема не в драйверах, а в железе.
То есть чип из цифры как бы звук делает, а усилитель дохлый - дальше он никуда не идет. 
Или в ремонт, или пользоваться БлюТуз колонкой и ЮСБ наушниками
Вопрос: Как правильно мониторить производительность 1с сервера в SQL?

Лучший ответ:
Ограничьте скуль половиной памяти, а то на сервер 1с ничего не остается. Ну и настройте технологический журнал на отслеживание длительных запросов и конфликтов/ожиданий блокировок, есть неплохой визуальный инструмент для этого (и для анализа собранного журнала) devtool1c.ucoz.ru/index/nastrojka_tekhnozhurnala/0-15

Худший ответ:
Надо начать с проверки настроек:
1) Если две роли стоят на одном сервере до должна стоять настройка работы через Shared Memory
2) позапускать тесты Гилева. Общий расчет производительности и анализ долгих запросов.
3) всем настроить ограничение по памяти(sql и1С). Ограничить рабочие процессы 1С(рпхост) 
4) Соглашусь с клиентом выше технологический журнал может помочь, но он будет тоже потреблять ресурсы надо это учитывать.
5) Логи баз, если пишутся то куда? 
6) TempDB есть? Где она лежит?
Пункт 5 и 6 должны быть на отдельных физически носителях. Что бы не проигрывать по производительности системы. Но этот пункт можно пока пропустить и перейти к мониторингу и от него уже смотреть.
Теперь про мониторинг:
1) Серверу 1С нужна частота процессора потому мониторим утилизацию процессора и общию загрузку в процентах.( 1с любит многогерцовые ЦП на многопотрчность можно особо не рассчитывать)
2) очереди к дискам на чтение запись ssd это конечно хорошо, но может не хватать рейд контроллера. Не понятно что ещё там же крутится.
Вопрос: Как смогли загрузить гадость на сайт?

Лучший ответ:
Фтп ...  вордпресс ... уязвимости? Неё сынок! Это фантастика!

Худший ответ:
Сайт у хостера/VDS? Если да, то слить все логи (даже вроде бы ненужные), собственно сайт (так чтобы меток времени не повредить), удалить все, восстановить бэкап.
- Смотреть логи, выявлять подозрительную активность
- Обязательно обратить внимание, кто владелец мусорных скриптов - это даст информацию о том, под чьими правами они были записаны - ftp, www еще кто-то.
- Возможно сбрутили FTP - это не так сложно, если пользователь угадываемый и пароль несложный
- Возможно нашли ошибку в коде самого сайта или движка (если сайт на движке)
Вопрос: Почему код срабатывает только один раз?

Лучший ответ:
Покажите структуру html
Почти уверен, что решением будет обработчик вешать вот так : $('#messages_area').on('click', '.delete_message_link', function(){

Худший ответ:
Это происходи по следующей причине:.delete_message_link
у вас находятся внутри #messages_area
При загрузке страницы скрипт отрабатывает и навешивает обработчик на каждый элемент с классом: .delete_message_link
После этого вы перезаписываете содержимое  $('#messages_area').html(data); и, соответственно, на новых элементах обработчиков события уже нет.
Решением может быть навешивание обработчиков повторно после изменения содержимого  $('#messages_area').html(data);
Вопрос: Как проверить существует ли email?

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

Худший ответ:
ftp://ftp.rfc-editor.org/in-notes/rfc821.txt 
VRFY 
Но это не обязательная к реализации команда протокола.
Вопрос: Существует ли «Брокер» для UpWork?

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

Худший ответ:
Вам нужен нужен менеджер проектов или тим-лид.
Вопрос: Что почитать про тестирование PHP?

Лучший ответ:
Ознакомиться:
https://habrahabr.ru/post/169381/
https://habrahabr.ru/post/335834/
Посмотреть:
https://www.youtube.com/watch?v=8u6_hctdhqI
Почитать:
Roy Osherove - The Art of Unit Testing - 2014
Джерард Месарош - Шаблоны тестирования xUnit. Рефакторинг кода тестов - 2009
Физерс М. - Эффективная работа с унаследованным кодом - 2009

Худший ответ:
Разберешься ты или нет по докам мы вряд ли угадаем. Мы же не знаем твой склад ума и умение
На самом деле статей куча: раз два три и так далее.
Выбирай что лучше воспринимается и делай.