Мир IT делится на большое число наук и профессий, связанных с ними. Одних только программистов можно насчитать около 5-10 групп, каждая из которых занимается своим направлением и слабо разбирается в направлении других. Например:
- Веб-разработчики (фронтенд и бэкенд);
- Разработчики программного обеспечения (C, C#, C++, Basic, и др);
- Микропроцессинг (Asembler);
- Промышленное оборудование (АСУ ТП);
А еще есть тестировщики, настройщики, техническая поддержка и даже маркетинг по теме IT. Все они прямо и косвенно связаны своим бизнесом и работают на благо своей компании.
В данной статье опубликую темы для обучения по разным сферам IT, с которыми обязательно стоит ознакомиться, если вы имеете отношение к миру IT или планируете строить карьеру здесь.
Общие темы
Данный раздел поделю на две группы. В первой будут находиться темы, с которыми стоит ознакомиться, даже если вы не имеете отношение к айти. Эти знания будут полезны в современный цифровой.
Во второй — конкретные нишевые данные для айтишников и профессий, близких к ним.
Для каждого
- Различие HDD и SSD — те самые жесткие диски. Поможет сэкономить деньги и купить нужный продукт, а также вовремя выявить поломку;
- Принцип работы железа — та же причина;
- Что такое триггеры и транзисторы — электричество, игра с питанием, напряжение, вольтаж и все, что с этим связано лишним никогда не будет;
- Как работает память, ее организация, какие виды памяти бывают — лаги, тормоза, зависания. Сможете самостоятельно определить причины и провести профилактику;
- Что такое сжатие данных и разница в сжатии изображений,видео и аудио;
- Манипуляция данными и железом;
- Основы компьютерной архитектуры;
- Разница килобайта и килобита, для чего это нужно, как это было придумано и тд;
Для айтишников
- Понятие алгоритма и абстракции;
- Системы счисления и хранение данных — что это такое и зачем это все нужно (двоичная, десятичная, шестнадцатиричная);
- Принцип работы булевых операторов на уровне железа;
- Как представляются различные данные в виде двоичного кода (звук, изображение, текст), как осуществляется их кодирование;
- Как хранятся числа в памяти (целые и с плавающей точкой);
- Как работает процессор, из чего он состоит, его взаимодействие с остальными частями системы;
- Понимание принципа исполнения программ на уровне железа;
- Знать что такое пайплайнинг или конвейер;
- Представление о том, что такое многопроцессорная архитектура;
- Что такое машинный язык и зачем он нужен;
- Логические операции и операции побитовых сдвигов (арифметика);
- Как реализовано и работают коммуникации с другими устройствами в системе (т.е. коммуникация процессора, памяти, контроллеров и устройств, привязанных к ним(модем, монитор, жесткий диск и тд));
- Что такое контроллер и зачем он нужен;
- Коммуникационные рейды — что такое бит, байт, килобайт;
Операционные системы
- Знать предысторию возникновения, общая архитектура ОС, ее компоненты, их взаимодействие;
- Что такое shell, что такое файловый менеджер, что такое менеджер устройств, что такое менеджер памяти;
- Разница между скейджоролом и диспетчером, зачем они нужны;
- Что такое виртуальная память и пейджинг;
- Процесс запуска операционной системы;
- В чем разница между user-mod и kernel-mod;
- Концепция процесса, понимание разницы между программой и процессом, как реализована многопоточность и что такое прерывание (понимать шаги, выполняемые процессором во время прерывания);
- Приоритеты в многопоточности — понимание того, как процесс с высоким приоритетом может работать быстрее чем другие;
- Знать что такое семафоры и дедлоки;
Интернет и сети
- Понимать что такое сети и зачем они нужны;
- Что такое протоколы, объединения сети;
- Понятие интернета, его архитектура, как работает адресация;
- Знать принцип работы веба;
- Что такое http, разница между URL и URI;
- Что такое xml и html;
- Что такое консорциум w3c, зачем он основан
- Разница между маршутизатором, свитчом и хабом;
- Знать что такое mac-адрес и маска подсети;
- Понятие клиент-серверной архитектуры;
- Что такое peer-to-peer архитектура, что такое CGA и почему он больше не используется;
- Что такое домены и его уровни;
- Что такое хостинг;
- Протоколы, разница между OSI и TCP/IP;
- Что такое протокол, где он находится, зачем он нужен;
- Уровни протоколов;
- Понятие пакета, понятие порта;
- Что такое проброс портов, зачем это нужно делать;
- Сетевая безопасность;
- Виды атак в сети;
- Иметь представление между трояном и червем;
- Принцип DDOS-атак для защиты своего пк от участия в ней;
- Зачем нужен Firewall, почему всякие бомж-программы просят его отключить;
- Знать что такое прокси сервер и зачем используют, знать что такое VPN и как он работает;
- Понимание шифрования, что такое https и ssl;
- Как используются ключи и тд;
- Знание системы измерения сложности алгоритмов (асимптотический анализ);
- Алгоритмы сортировки, поиска, сжатия, нахождения кратчайших путей, работа с разными структурами данных(графами, деревьями и тд), фиббоначе, динамическое программирование;
Языки программирования
- Предыстория япов, как они появилось;
- Что такое ассемблер, как он возник;
- Как появились трансляторы, компиляторы и интерпретаторы, а также понимание разницы между этими программами;
- Знание парадигм программирования (подмножество, императивный, декларативный, ООП);
- Что в себе должен содержать завершенный язык по Алану Тьюрингу;
- Что необходимо знать, перед выбором определенного языка;
- Знать что такое структуры данных, зачем они нужны;
Понятие переменной
- Понятие типа данных;
- Что такое константы и литералы;
- Что такое операторы и операнды;
- Что такое control flow или инструкции по контролю поведения кода;
- Комментарии, понятие процедуры, принцип работы области и областей видимости;
- Функции, параметры функций, способы передачи параметров в эти функции;
- Принцип работы компилятора, что такое лексический анализ, синтаксическое дерево, парсеры, генератор кода;
- Знать что такое токен;
- Понимать как работает рекурсия, что это такое;
- Что такое класс и объект;
- Что такое инстанс;
- Что такое конструктор;
- Три принципа ООП (наследование, инкапсуляция и полиморфизм);
- Знать что такое композиция, когда нужно использовать ее, а не наследование;
- Принцип многопоточного программирования, разница между процессом и потоком;
Software Engineering
- Представление о том, как писать софт (любой софт, а не только калькулятор на JS);
- Имплементации алгоритмом и структур данных;
- Умение понимать плохой код и хороший (Изучение шаблонов проектирования алгоритмов структур данных, ос, железа);
- Что такое прототипизация, модульность, зачем это нужно;
- Иметь представление о тестировании, понимать зачем нужны тесты;
- Продумывать дизайн и архитектуру перед разработкой чего-либо;
- Ставить требования перед написанием софта, а не придумывать их на ходу;
- Знание что такое UML-диаграммы, как их использовать;
- Зачем вообще придуманы парадигмы программирования;
Абстракция данных
- Понимать как и какие типы данных лучше хранить;
- Преимущества одной структуры данных над другой;
- Знать как работает память;
- Концепция указателя, ссылки и значения;
- Что такое арифметика поинт рф;
- Что такое прямой и обратный код;
- Расположение битов в памяти пк и их направления;
Быть универсалом и разбираться во всем этом крайне сложно да и нет в этом никакой необходимости.
Информации реально много. Это своеобразная шпаргалка, отчасти для себя. В списке есть ряд тем, с которыми я часто сталкиваюсь и хотел бы лучше в них разбираться.
Источник: https://telegra.ph/CHto-prochitat-chtoby-razvivat-svoi-navyki-06-14
Комментарии