Principles, principles and again principles. In every science, in every field, in every aspect of life - everything is based on principles. Know the 10 principles and not 10 000 impementations.
Simplicity, reusability, security, maintainability, design patterns, architecture patterns, principles like KISS, SOLID, DRY and many others.
Functional programming, OOP
The Internet, Web, networking, TCP/UDP, HTTP, HTTPS
This question on Quora has some good answers.
Every software engineer should know how to debug, log, test, measure benchmarks, handle error/exceptions, write good comments, documentation, make Pull Requests and other git basics, make a transactions, optimize, fix bugs, refactor code, refactor architecture, receive notifications about system health, errors, new versions released, maintain and support the system in general.
Primarily:
If a problem is not completely understood, it is probably best to provide no solution at all.
English skills and ability to name variables, functions and everything else correct.
After that Social science, psychology, management, writing, patience.
Also business skills, business analysis, system analysis.