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 graphics 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, especially 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. Teminal 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