Что должен уметь программист

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

  1. Владение одним языком высокого уровня (С ООП)
  2. Владение скриптовым языком программирования: Python, PHP
  3. Владение HTML/CSS
  4. Владение JavaScript
  5. Владение языком С
  6. Владение ассемблером
  7. Опытный пользователь UNIX-системы
  8. Опытный пользователь Windows
  9. Владение одной реляционной базой данных (MySQL, Postgres, Oracle)
  10. Владение одной нереляционной базой данных (Mongodb)
  11. Владение инструментами мобильной разработки
  12. Владение библиотекой для 3D графики (OpenGL, DirectX)
  13. Владение одним вебсервером: Apache, Nginx
  14. Понимание многопоточности
  15. Понимание асинхронности
  16. Умение создавать и импортировать DLL
  17. Опыт вычислений на GPU (CUDA)
  18. Владение регулярными выражениями
  19. Опыт парсинга текстовых файлов, в частности HTML
  20. Владение инструментами создания и дистрибуции модулей на каком-либо языке
  21. Владение инструментами сборки проекта в готовое приложение и его дистрибуции
  22. Владение системой контроля версий GIT
  23. Владение какой-либо IDE
  24. Владение консолью Windows Shell и Bash
  25. Понимание протокола HTTP
  26. Понимание способа взаимодействия по TCP
  27. Знание дискретной математики
  28. Знание часто используемых алгоритмов обработки данных, структуры данных
  29. Знания базовых алгоритмов криптографии