Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Неконкуренция в России?

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

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

В трудовом договоре могут предусматриваться дополнительные условия, не ухудшающие положение работника по сравнению с установленным трудовым законодательством и иными нормативными правовыми актами, содержащими нормы трудового права, коллективным договором, соглашениями, локальными нормативными актами, 

Единственное похожее ограничение в ТК есть вот такое:
Руководитель организации может работать по совместительству у другого работодателя только с разрешения уполномоченного органа юридического лица либо собственника имущества организации, либо уполномоченного собственником лица (органа).

То есть генеральный директор фирмы может пойти работать к конкуренту (вернее к кому угодно) только с разрешения владельца фирмы. Касается это только одного человека в фирме. Его замы уже могут устраиваться как угодно.

Но, следует иметь в виду, что есть и другие меры защиты работодателя от недобросовестных сотрудников — коммерческая и служебная тайна и горячо всеми любимый копирайт. Например, если вы свой плеер только разрабатываете, ещё не выпустили в паблик, то его основные фичи можно подвести под коммерческую тайну, и ушедший к конкуренту работник не будет иметь права сказать «а мы ещё вот такую фичу лепили». Отвечать в этом случае будет он лично (если сможете доказать, что именно он разгласил, а не просто в голову его новым коллегам она пришла). Ну и по умолчанию исключительные права на весь код, который пишут работники принадлежат работодателю и свой код он с собой унести не может, в том числе используя свой мозг в качестве флэшки. Опять же если сможете доказать, что в плеере конкурента используется ваш код. Отвечать в этом случае будет и работник, и его новый работодатель. 

Если же вы как работник смотрите на ситуацию, то если не были допущены к информации, составляющую коммерческую тайну и не «сливаете» наработки новому работодателю явно, то беспокоиться особо не о чем.

Худший ответ:
Патентуйте ПО, железо, наработки — так проще и реальнее.
Вопрос: Yii2: Как выполнить добавление в одну таблицу с включенным режимом транзакции?

Лучший ответ:
Это $transaction->rollBack();
    foreach ($this->firstErrors as $key => $value) break;
    if (empty($value)) $value = 'Неизвестная ошибка';
    return array('message' => $value, 'status' => false);
 заменяем на что-то, типа этогоthrow new HttpException(500, 'Неизвестная ошибка');
А уже в catch'а делаете свои проверки и генерируете сообщения от ошибке, если нужно.
И все должно работать.

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

Лучший ответ:
page-break-inside: avoid
для tr

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

Лучший ответ:
Если смотреть в сторону AngularJS, то почему бы не использовать бэк в виде node.js, ко всему прочему, можете настроить подключение через websocket.

Худший ответ:
JS, то есть Ангулар в качестве фронтенда и что-нибудь(Рельсы - хороший вариант) в качестве бэкенда. В принципе, все правильно выбрали.
Вопрос: .NET, WPF, какую версию .NET выбрать — 3.0 или 3.5

Лучший ответ:
Выбирайте 4.0.

Худший ответ:
Присоединяюсь к тем, кто агитирует за 4.0. Я вот начал недавно новый проект на четверке с WPF. Одни положительные впечатления. Правда, до этого на .NET ничего не писал. Очень легко пошло, несмотря на то, что это запись и обработка видео. Тут правда заслуга не .NET, а OpenSource библиотек и предыдущего опыта в этой области. Но что касается пользовательского интерфейса — сплошной сахар, который однако иногда трудно добыть. В том смысле что все очень гибко и не всегда очевидно, но когда сделаешь — становится все очевидно и логично. 
Например, сделал асинхронное заполнение ListView данными в несколько потоков буквально за полчаса из которых основное время это гугление бингение поиск по справке WPF и .NET. С предыдущим инструментом это отняло бы день или два. И намного больше кода.
Вопрос: javascript-библиотека трехмерных преобразований

Лучший ответ:
У тебя в примере в CSS везде стоят префиксы -webkit- и логично, что это работает только в браузерах на основе этого движка :)
ФФ поддерживает эти стили без префиксов, а для ИЕ нужно добавить -ms-. Так что всё работает и так и WebGL тут явно не нужен.

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

Лучший ответ:
вынесите из функции srand и вставьте в main

Худший ответ:
Этот вариант подойдет, если не требуется криптостойкий ГСЧ.
Используйте bitset:#include <iostream>
#include <bitset>
#include <stdlib.h>
using namespace std;
int main()
{
    const auto slen=8*sizeof(rand());
    bitset<slen> a(rand());
    for(auto i=0;i<slen;i++)
    {
       cout << a[i] << ' ';
    }
}
Вопрос: Какой Линукс меньше и мягче:)?

Лучший ответ:
dd-wrt или pfsense для вас будет, возможно, лучшим решением. 
а так есть еще куча решений.

Худший ответ:
минимальный образы убунту и центоса запускаются на машине с 256 имегабайтами памяти и работают у меня роутерами и впн серверами.
Вопрос: Не корректно работает overflow: hidden при border-radius в сафари?

Лучший ответ:
Я на круговых элементах использую вдобавок к overflow: hidden маску изображения с круговым градиентом, замечательно работает:-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);

Худший ответ:
Потыкал, нормально всё...
Mac OS Yosemite, Safari 8.0.6Скрин
Решение:-webkit-mask: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
Вопрос: Вопросы на собеседовании программисту Python

Лучший ответ:
Проектирование, потоки?
Спроси что такое гринлеты, Twisted, Tornado, в чём отличие мультипроцессинга от потоков, в чём их отличия в модулях Python(тест пройден если человек скажет что GIL работает в обоих случаях, а сами модули имеют одинаковый набор функций).
Про проектирование достаточно сложно говорить. Попроси придумать простейший Singleton и объяснить какие альтернативы этому решению есть. Скажет что-то про мета-классы, про то, что сами по себе модули являются синглтоном — тест пройден.
Спроси что такое кольцевые зависимости. Дай пример кода с такой проблемой и попроси решить её или аргументировать почему выхода нет. Тест пройден если человек переместит все run-time используемые импорты в конец файла или перепроектирует систему, предложив вариант без кольцевых зависимостей.

Худший ответ:
Еще можно про декораторы с параметрами спросить. Меня вот на одном собеседовании просили написать бесконечное генераторное выражение.
Вопрос: Непонятный момент в javascript (поведение функции)

Лучший ответ:
Функции - это объекты, можно добавлять им свойства и методы как любому другому объекту.
В чем проблема?)

Худший ответ:
В javascript функция это объект со скрытым методом call. Соответственно, вы просто к тому же объекту добавили новый метод.
Вопрос: Как осуществить организацию серверов на предприятии?

Лучший ответ:
Не плодите зоопарк (Proxmox+Hyper-V)
HP DL320e Gen8/E1240v2 - контроллер домена (AD, DNS, DHCP)
HP DL360p Gen8/E5-2630 - Hyper-V - file server, контроллер домена
HP DL360p Gen8/E5-2630 - Hyper-V - Debian+postfix (habrahabr.ru/post/115630/)
Настраиваете репликацию виртуальных машин с одного Hyper-V на другой.
Если сервера еще не купили пересмотрите требования к памяти\дискам.
Для бекапа нужно что-то еще :-) NAS какой нибудь простой, а лучше с отчуждаемыми носителями.
Эта схема будет нормально работать.

Худший ответ:
Нужна схема для решения задачи:
Существует DC1, есс-но с полным набором необходимых сетевых служб.
Дополнительно поднят Lync, Exchange, + доп ПО с интеграцией в AD.
Нужно дополнительно включить в схему DC2 с полным управлением своего подразделения,
без возможности управления и вмешательства со стороны DC1,
но при работающих в подразделении общих Lync, Exchange, + доп ПО
с обменом данными в среде DC1?
Доверительные отношения? Или тут не все  так просто?!
Вопрос: Указатель на функцию члена класса. Как решить?

Лучший ответ:
Вам нужен std::bind для каррирования вашего метода. Нестатический метод обязательно принимает неявно первым параметром указатель на объект, у которого он вызывается. Тот самый this. Т.е. метод без параметров на самом деле является функцией с 1 параметром. Вот этот параметр и нужно зафиксировать, превратив метод в настоящую функцию без параметров.#include <functional>
#include <iostream>
#include <string>
#include <map>

class Foo {
public:
	Foo(std::string msg): m_msg(msg) {}
	void event() {
		std::cout << m_msg << std::endl;
	}
private:
	std::string m_msg;
};

int main() {
	auto foo = new Foo("Foo");
	auto bar = new Foo("Bar");

	std::map<std::string, std::function<void ()>> keyEvents = {
		{"foo", std::bind(&Foo::event, foo)},
		{"bar", std::bind(&Foo::event, bar)}
	};

	for(auto callback: keyEvents) {
		std::cout << callback.first << ":";
		callback.second();
	}

	keyEvents.clear();
	delete foo;
	delete bar;
	return 0;
}

Худший ответ:
Можно через функтор (std::function). я не помню уже точно, но видел такую реализацию. копайте в эту сторону.
Вопрос: Нормальна ли скорость загрузки страницы 500мс?

Лучший ответ:
А можно просто запустить debug и все встанет на свои места. У меня связка phpstorm + xdebug + wincachegrind отлавливает проблемные места. Много чего интересного можно узнать ;)

Худший ответ:
Можно понавтыкать функций вывода времени в разных частях кода и посмотреть где прошло больше. Типа:$mk = mktime();
//Do....
echo mktime() - $mk;
//Do....
echo mktime() - $mk;
//Do....
echo mktime() - $mk;
Вопрос: Как выбрать монитор для Mac mini?

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

Худший ответ:
Возьмите бюджетный 4K от самсунга
Вопрос: Как записать в коллекцию mongodb более 4 миллионов документов?

Лучший ответ:
Монга использует mmap и соотв. не позволяет работать с базами >2Gb на 32-битных системах.
Для нормальной работы требуется 64-битная платформа, ос и сама монга.
Если у вас есть только x32 и не-крошечная база, то монга просто не для вас.

Худший ответ:
Если у вас только 32-разрядная система, то можете попробовать шардирование. Но всё же рекомендую перейти на 64-разрядную.
Вопрос: Как правильно обновлять страницу через PHP?

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

Худший ответ:
Не обновляйте страницу - обновляйте данные
https://www.google.ru/webhp?sourceid=chrome-instan...
Вопрос: Вопрос по программе на Си

Лучший ответ:
Естественно ошибка возникает в return (item->next == NULL)? 1: 0;
у вас при вводе 1 в item содержится NULL, а вы пытаетесь его разименовать и обратиться к несуществующему смещению «next»

Худший ответ:
А на какой строке ошибка вылетает? Точно в этом куске кода?
Проверил ваш кусок кода на gcc (CentOS) — без ошибок.
Вопрос: Возможна ли иммиграция без высшего образования, но с сертификатом специалиста?

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

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

Лучший ответ:
www.huffingtonpost.com/joseph-farrell/the-fascinat...
superdevresources.com/psychology-addictive-mobile-games
www.online-psychology-degrees.org/mobile-gaming-ad...
но, думаю, понятно, что если бы это можно было описать универсальным алгоритмом, то...

Худший ответ:
Все тоже самое что и в первом варианте, но можно добавить оплату реальными деньгами за каждый пройденный уровень, или за другие действия. 
З.Ы: Денег можно платить мало, но не совсем например 0,001 доллар, сильно занижать не надо-это побуждает пользователя играть.
Вопрос: Вопросы на собеседовании программисту С++

Лучший ответ:
Спроси про использование const в разных частях объявления функции.
Чисто так, можешь спросить на тему того, что быстрее работает в Unix: потоки или процессы. Вопрос чуть спорный, но можешь сделать немного выводов.
Спроси как человек относится к препроцессору, дай пару опасных макросов вроде a+b (ведь верным будет именно (a+b) ), попроси найти проблему.
Да, попроси рассказать о ++, --, о результатах выполнения кода int i = 5; ++i + ++i;. Верным ответом будет: как компилятор захочет, какая будет фаза луны, 13, 14.
Помучай по темплейтам, если З/П от 60к, то он должен хорошо их знать.
Спроси про Boost, как он к нему относится, попроси не лукавить(скажет что-нибудь про 2-страничные ошибки — всё ок).
Спроси как он относится к Qt.
Вообще, на C++ столько ловушек, что ужас. У Страуструпа их не мало описано, поэтому можешь оттуда брать примеры и давать их. Даже если человек вспомнит ответы, это уже будет значить что он читал Страуструпа и понял всё что там есть, а это огромный плюс.

Худший ответ:
Тут (http://habrahabr.ru/blogs/cpp/75948/) ссылка на 385 вопросов и обсуждение.
Вопрос: Странная работа global

Лучший ответ:
Проблема, видимо, в том, что обращение к переменной осуществляется не в глобальной области видимости.

Скорее всего всё решится, если перед обращением добавить ещё один global.

<?php global $logpath; $logpath = 234; function a() { global $logpath; var_dump($logpath); } a(); ?>


P.S. Можно использовать вместо этого хотя бы синглтоны, или константы, которые глобальны всегда.

Худший ответ:
можно еще debug_print_backtrace() после <?php поставить, чтобы посмотреть в глобальной ли области создается $logpath = 234; или внутри какой-то функции.
Вопрос: Как убрать текст от индексации в анонсе?

Лучший ответ:
Для того чтобы поисковики не считали это дублем.
joxi.ru/l2Z6QYjfYezO2J Сергей Васильев Цитата или краткий анонс статьи на главной, с ссылкой на полную версию, не считается дублем и может помочь ускорить индексацию оригинальной статьи. Если речь о закрытии от поисковиков рубрик или страниц пагинации, то почитайте ответы здесь.

Худший ответ:
Для запрета индексирования служебных участков текста вы можете использовать тег . Тег работает аналогично мета-тегу noindex, но распространяется только на контент, заключенный внутри тега в формате:
текст, индексирование которого нужно запретить
Вопрос: Организация работы Call центра

Лучший ответ:
В крупных компаниях нет колцентров на 6 человек.
Если есть деньги то сип телефоны + гарнитуры в них, если нет то софтофоны на компы + гарнитуры.

Худший ответ:
Приветствую. А не проще отдать на аутсорс?
Вопрос: В чем разница между session_name() и session_id() ?

Лучший ответ:
@dez-fafara: Несколько некорректный ответ. Если посмотреть как отражается сессия в COOKIE то сессия представляет собой пару Ключ -> Значение. Где Ключ - это имя сессии, а Значение - её уникальный номер в системе, тоторый обычно создается через md5 алгоритм по времени инициализации сессии. В среде PHP ключ ( или имя сессии ) - это наименование переменной окружения в которой хранится уникальный номер сессии. По умолчанию Имя сессии в PHP - PHPSESSID. Функции session_name() и session_id() работают с Именем сессии и её номером. Обе могут принимать новые значения и отдавать текущие (запуск функций с параметром и без). Обе должны быть вызваны до начала работы с данными сессии. Их можно и не трогать, если настройки по умолчанию для хранения сессий вас устраивают, поскольку session_start() самостоятельно присваивает как имя, так и идентификатор сессии. Если данных о сессии нет (переменной с именем сессии не установлено) то создается новый Id. Если переменная есть, то session_start() продолжает вести уже существующую сессию.

Худший ответ:
Разница в том, что session_name это функция которая возвращает/устанавливает имя сессии, а session_id возвращает/устанавливает ID сессии. :)
Вопрос: Есть ли смысл делать интернет-магазин на Django?

Лучший ответ:
Есть

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

Лучший ответ:
Про одеск
1)Делаете пяток заказов по 5-10 долларов фиксед прайси получаете 5 оценок на пять звездочек(это обязательно).
2)Далее проситесь на заказы по 10 баксов в час, при этом бидя первым в работе(это тоже обязательно, чтобы ваша заявка была первой).
3)За полгода эволюционируете до 30 баксов в час, за 4 года эволюционируете до 80 баксов в час.
pumainthailand.com/otvechayu-na-voprosy-o-rabote-n...

Худший ответ:
> Я начинающий фронтэнд разработчик. 
У меня слишком много заказов приходит и мне не помешал бы верстальщик.
Напиши откуда ты и покажи свои работы.
Вопрос: Какую книгу по AJAX выбрать для изучения?

Лучший ответ:
Всё зависит от того, насколько глубоко вы хотите вникнуть в вопрос.
Если на уровне ремесленника — да, пара статей, шлёп-шлёп и готово.
Чуть посерьёзней — CORS, FileReader, FormData, WebSockets. Первое неразрывно связано с XMLHttpRequest, парочка за ним потребуется для кодирования бинарных данных (каждый конструктор для своих целей). Последний в списке — альтернатива для решения асинхронного обмена между разными компьютерами.
Серьёзное погружение потребует и таких вещей, как XML-RPC, SOAP + WSDL. Правда, это требуется редко и только в крупных компаниях, подсаженных на такие сервисы.

Худший ответ:
Бери тогда сразу книгу по jQuery там это точно будет. И фреймворк изучишь и аякс и прочие приблуды. Хорошие книжки для начинающих с ниндзями на обложке)
Вопрос: Анимация вращения элементов на чистом js?

Лучший ответ:
Что Вы имеете ввиду, говоря "на чистом js"? Повлиять на стиль отображения элемента можно только используя стили(css), а как Вы их зададите(через js/изначально прописаны) уже не так важно. 
Jquery - не фреймворк, а библиотека, это разные понятия.
Поменять стиль у элемента можно на чистом js. Можете менять угол поворота элемента через интервал/requestAnimationFrame(как привел выше copal ).
Задавайте elem.style.transform = "rotate(" + deg + "deg)";

Худший ответ:
Это организовывается скорее на чистом CSS, а через JS можно сделать управление процессом с помощью классов.
Вопрос: Как сохранить float[][] в SQLite (Android)?

Лучший ответ:
Вам надо преобразовать ваш двумерный float[][] в длинный byte[]. Делается это сериализацией (serialization). Я не помню как там в джаве, но 100% для этого есть готовые инструменты. Можете из спортивного интереса написать и свой.

Худший ответ:
Сериализовать.
Вопрос: Как вывести страницу через php?

Лучший ответ:
Все ответы какие-то путаные.
Хотя на самом деле всё очень просто.
Если ХТМЛ пишется в том же самом файле, то тупо закрываем тег РНР и пишет HTML как есть <?php
echo "PHP";
?>
<h1>HTML is the King!</h1>
<ul>
...
2. Если в другом файле - то readfile:<?php
echo "PHP";
readfile('html.htm');

Худший ответ:
<?php 
//какой-то код на php например
$s = 1;
if ($s === 1) {
?>
<div>С равно одному</div>
<?php } ?>
Вот еще пример примерный<?if (!empty($arResult)):?>
<ul class="menu__list">

<?
foreach($arResult as $arItem):
	if($arParams["MAX_LEVEL"] == 1 && $arItem["DEPTH_LEVEL"] > 1) 
		continue;
?>
	<?if($arItem["SELECTED"]):?>
		 <li class="menu__item state--active"><a href="<?=$arItem["LINK"]?>" class="menu__link"><?=$arItem["TEXT"]?></a></li>
	<?else:?>
		<li class="menu__item"><a href="<?=$arItem["LINK"]?>" class="menu__link"><?=$arItem["TEXT"]?></a></li>
	<?endif?>
	
<?endforeach?>

</ul>
<?endif?>
Вопрос: Возможно ли работать удаленно и при этом быть официально трудоустроеным согласно ТК РФ?

Лучший ответ:
Работаю на удаленке - официально.
Все просто.
1) присылают тебе по электронной почте документы - распечатываешь, подписываешь, отправляешь (в 2 экз).
2) Работодатель подписывает, ставит печать, отсылает тебе.
3) По мере необходимости связываешься с бухгалтерией и делаешь нужные тебе справки итд.
Я будучи во Владивостоке, работаю официально в Москве, даже ипотеку себе оформить смог. Работодатель прислал все по почте (все справки).

Худший ответ:
ТК РФ, Глава 49.1. Особенности регулирования труда...
Вопрос: Какие дисциплины изучать программисту чтобы меньше зависеть от языков и технологий?

Лучший ответ:
1. Вопрос терминалогии - Вы все таки решили перейти на уровень выше. Чем выше - тем абстрактнее, чем ниже - тем ближе к железу.
2. Понимание общих алгоритмов всегда полезно. Литературы море - Кнут, Седжвик www.ozon.ru/context/detail/id/128304/, www.ozon.ru/context/detail/id/1317133 итд.
3. Самое главное: если вы хотите работать в IT - вам придется всю свою трудовую жизнь гнаться за технологиями и саморазвиваться. Это нормально. Постоянно будут выходить новые версии языков и надо будет уметь с ними работать. Язык это всего лишь инструмент для реализации задачи. Разные задачи оптимально реализовывать на разных языках. Знание общих алгоритмов (как кстати и паттернов ) полезно, разминает мозг - но без опыта реализации на конкретном языке нафиг не нужно.

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