@dhromed said:Build things, build things; then build more things. Not necessarily applications, but also scripts, programs, algorithms. Try some math problems that require the raw calculating power of a computer to solve. Make it efficient. Then make it more efficient. Then learn another language that actually does it right. Include experiments with XHTML and CSS.Yeah, build things is the best tip you can give.Just build something you've always wanted to build. The first time it will only function for 10% (if you are lucky) but the learning experiance will be great. Just because something is build already does not mean you cannot build it yourself. I've implented compression stuff, IRC/MSN/HTTP/FTP communication (very interresting if you want to learn about sockets and TCP protocols), a scripting engine+compiler (with bytecode), a half working Wiki. A very interresting tool that checked modify/access dates of a large tree of files to see what has been accessed after running a program (What does that program use?). My hobby programming stuff usualy always start with something I need. Sure for 90% of the stuff I did there are libraries. And I use those now. But making them yourself sometimes provides loads of learning material. Now I understand what those libraries do, and why.