How to practice new technique when there is no programming jobs related to that technique? Such techniques as sql/wpf etc..
You just have to come up with a project of your own which you can solve with the new technique. Is there some task you need (or want) at home that might work?
From my own experience: I wrote an app to scan my music files and display the results in a grid. The first version used reflection to populate the grid so I didn't have to rewrite the front end if I changed what information I wanted to display.
More recently I converted it to WPF (the first version was in WinForms) and I've also implemented very basic Dependency Injection so I can use the same front end to check the tags on my photos.
I find that the best thing to do is to come up with an idea for a little application that "showcases" the technology. Doesn't have to be anything innovative - in fact, copying an existing app is probably best as you'll spend less time on design issues.
There's nothing like trying to build something realistic to really understand a new technology. Tutorials are all well and good, but information gained from them rarely stands up when you hit your first realistic application.
Learn or practice?
For learning new techniques it's important to communicate. Join a local group, or talk to other people interested in related subjects. They might give you ideas, explain, discuss, tell you what's good and what's bad.
Reading is of course a given; there are lots of good books out there on just about every subject you can imagine. And of course blogs, newsgroups, SO.. :)
For practicing new techniques... well, practice. Create a test/pet project and/or join/assist/use an open-source project. If possible, don't do it alone. Having a friend on a small project can be beneficial. Or perhaps someone you met at your local community? Or online?