What a programmer must be able to do

This is a list of skills that a programmer should be able to do in order to feel well regarding the majority of tasks in IT. On my opinion, if you learn all the points listed below you can work as a software developer in any country in the world.

  1. High-level programming language (with OOP)
  2. Script programming language (Python or PHP)
  3. HTML/CSS
  4. JavaScript
  5. С
  6. Assembler
  7. Advanced user of UNIX operating systems
  8. Advanced user of Windows
  9. Relational database (MySQL, Postgres or Oracle)
  10. NoSQL database (Mongodb)
  11. Mobile development
  12. 3D graphycs API (OpenGL or DirectX)
  13. Webserver (Apache or Nginx)
  14. Understanding of multithreading
  15. Understanding of asynchronous programming
  16. Creation and import of DLL
  17. Calculation with GPU (CUDA)
  18. Regular expressions
  19. Parsing of texts, expecially HTML
  20. Creation and distribution of modules on any programming language
  21. Building projects into a working application and its distribution ways
  22. Version control system GIT
  23. Any IDE
  24. Terminal commands Windows Shell and Bash
  25. Understanding of HTTP
  26. Understanding of TCP
  27. Discrete maths
  28. Common algorithms of data processing, data structures
  29. Basic algorithms of cryptography