1

Этап 1

Отобрать список знаний из пункта "Веб-программирование и скриптовые языки"

2

Этап 2

Отобрать список знаний из пункта "Методологии разработки"

3

Этап 3

Отобрать список знаний из пункта "Архитектура и стиль кода"

4

Этап 4

Отобрать список знаний из пункта "Форматы"

5

Этап 5

Отобрать список знаний из пункта "Базы данных"

6

Этап 6

Отобрать список знаний из пункта "Тестирование"

7

Этап 7

Отобрать список знаний из пункта "Инструментальные средства разработки"

8

Этап 8

Отобрать список знаний из пункта "Криптография"

9

Этап 9

Отобрать список знаний из пункта "Операционные системы"

10

Этап 10

Отобрать список знаний из пункта "Сеть"

1

Этап 1

Отобрать список знаний из пункта "Веб-программирование и скриптовые языки"

2

Этап 2

Отобрать список знаний из пункта "Методологии разработки"

3

Этап 3

Отобрать список знаний из пункта "Архитектура и стиль кода"

4

Этап 4

Отобрать список знаний из пункта "Форматы"

5

Этап 5

Отобрать список знаний из пункта "Базы данных"

6

Этап 6

Отобрать список знаний из пункта "Тестирование"

7

Этап 7

Отобрать список знаний из пункта "Инструментальные средства разработки"

8

Этап 8

Отобрать список знаний из пункта "Криптография"

9

Этап 9

Отобрать список знаний из пункта "Операционные системы"

10

Этап 10

Отобрать список знаний из пункта "Сеть"

05 июня 2014
Цель завершена 16 сентября 2014
Общая

Составить набор IT знаний для расширения своего профессионального кругозора

Однажды я наткнулся на статью "Теоретический минимум для программиста", в которой есть перечисление знаний, которыми должен обладать программист. Но там перечислена куча знаний для программистов. Считаю, что абсолютно всё мне оттуда не нужно, но есть что взять в набор изучения. Я выбрал лишь те пункты, которые, по моему мнению, мне действительно нужны для того, чтобы считаться профессионалом в своей области. Не всё в этих пунктах на самом деле мне надо, слишком много там всего всего. Кое-что из того, что мне видится не надобным, будет убираться по мере разбора списка, кое-что оставлено для беглого ознакомления, кое-что изучено. Если что-то отсутствует, будет добавлено.

Отобранные пункты:

  1. Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/phpDaemon/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/ExtJS/node.js, ООП в JavaScript, HTML5/XHTML/doctype/табличная и блочная верстка/CSS3, RSS, canvas/WebGL, Ajax/Comet/WebSockets, вопросы безопасности (XSS, SQL injection, CSRF), highload, SWIG
  2. Методологии разработки, Waterfall/RUP/Agile/Scrum/Kanban/XP, TDD/BDD, CASE
  3. Архитектура и стиль кода, Макконнелл/Фаулер/Лебланк/Гамма/Александреску-Саттер/Буч, защитное программирование, паттерны, SOLID/GRASP/KISS DRY SPOT/YAGNI, UML, OOP (Smalltalk), OOD/OOA, метрики кода.
  4. Форматы, XML/XSLT/XPath/XMLStarlet/DOM/SAX, RTF/ODF, JSON/BSON/bencode, YAML, JPEG/PNG/WebP, AVI/MPEG/RIFF/WAV/MP3/OGG/WebM, SVG, Unicode, кодировки однобайтные/UTF-8/UTF-16/UCS-2/UTF-32
  5. Базы данных, Грубер/Дейт, ANSI SQL, T-SQL, ODBC, MySQL/PostgreSQL/MS SQL/BDB/SQLite/Sphinx, хранимые процедуры, триггеры, алгебра Кодда/А, Tutorial D, нормальные формы, оптимизация и выполнение запросов, структуры данных индексов, транзакции и ACID, CAP-теорема Брюера, NoSQL, key-value storage, шардинг, ORM (C++ ODB), ERD, OLAP
  6. Тестирование, юнит-тесты, функциональное, нагрузочное, интеграционное тестирование, тестирование UI
  7. Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), DWARF2 debug information format, дизассемблеры и декомпиляторы (IDA/HexRays/Reflector), системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ (lint), динамический анализ (valgrind, фаззинг), верификация и валидация ПО (Frama-C, RAISE (RSL), Coq), профайлинг, багтрекеры, документирование кода, системы сборки (CMake)
  8. Криптография, Шнайер/Ященко, Принцип Керкгоффса, симметричная (DES, AES), асимметричная (RSA), качество ГПСЧ, алгоритм Диффи-Хеллмана, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки, WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, PKI, HTTPS/SSL, доказательство с нулевым разглашением.
  9. Операционные системы, Silberschatz/Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Love/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер устройств, менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX
  10. Сеть, Стивенс, OSI model/Internet model, Ethernet, TCP/IP, TCP window, алгоритм Нейгла, сокеты, Protocol buffers/Thrift/Avro/ASN.1, AMQP, ICMP, роутинг/BGP/OSPF, ARP, атака Митника, syn flood, HTTP/FTP, P2P/DHT, DHCP, SMB/NBNS, IRC/XMPP, POP3/SMTP/ESMTP/IMAP, DNS, WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth/GPS, ACE, Wireshark

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

  • Необходимые для изучения будут выделены и запланированы для изучения. Учитывая, что список слишком большой, все эти знания в одну цель не засунуть. Для этих знаний или групп знаний будут создаваться соответствующие цели.
  • Достаточные для ознакомления будут поверхностно законспектированы здесь или в соответствующих целях (и в моем будущем блоге, когда он будет). Подробного их изучения не будет.
  • Ненужные будут отброшены.

Каждый пункт будет отдельным этапом. Итогом каждого этапа будет отобранный список изучаемого пункта, а так же комментарии по планам изучения знаний из списка.

 Критерий завершения

Весь список переработан. Необходимые мне знания из списка выписаны.

  1. Отобрать список знаний из пункта "Веб-программирование и скриптовые языки"

  2. Отобрать список знаний из пункта "Методологии разработки"

  3. Отобрать список знаний из пункта "Архитектура и стиль кода"

  4. Отобрать список знаний из пункта "Форматы"

  5. Отобрать список знаний из пункта "Базы данных"

  6. Отобрать список знаний из пункта "Тестирование"

  7. Отобрать список знаний из пункта "Инструментальные средства разработки"

  8. Отобрать список знаний из пункта "Криптография"

  9. Отобрать список знаний из пункта "Операционные системы"

  10. Отобрать список знаний из пункта "Сеть"

  • 6601
  • 05 июня 2014, 13:30
Регистрация

Регистрация

Уже зарегистрированы?
Быстрая регистрация через соцсети
Вход на сайт

Входите.
Открыто.

Еще не зарегистрированы?
 
Войти через соцсети
Забыли пароль?