Here is a general steps:
1. language(s).
2. operating system libraries.
3. networking libraries, packages.
Example:
1. C->std C library, system calls->socket library
2. C, C++ ->std C library, system calls->windows libraries
3. C, C++ ->std C library, system calls->middle ware package libraries (rpc, tibco, vitria, CORBA/COM/DCOM etc.)
4. JAVA -> system package -> EJB -> middle ware packages (J2EE, CORBA etc.)
...
When you get some experience and during daily work, you will be exposed to OOADP, system architecture/design and software engineering. This is what makes you outstanding and not everybody can do well.