I need your advice on how to develop my programming skills. Though I am very curious about learning new techniques, I somehow feel stucked at the moment and would like to get some opinions on that. I hope the following description will help to illustrate my current situation clearly to you.
I got interested in programming after writing my first HTML page some years ago. It was quite useless to me, because it didn't offer any functionalities besides displaying text :-]. That's why I looked for a way to equip it with "intelligence" and found an easy possibility with PHP. PHP was the first language I used, and I created the "standard" web applications with it (a forum, news with comments, gallery, ...). I did like it a lot because it was very easy to use and also helped me to learn how to interact with databases. I also heard for the first time of object-oriented concepts at that time, which - interestingly enough - was even more poorly implemented in PHP 4.x.x than nowadays.
At school we learned object-oriented programming with Java. We implemented trees, graphs, finite state machines, etc and I feel quite lucky about that time. It increased my curiosity even more. Besides PHP and Java, I also learned some basics of Perl.
However, I somehow feel that I am really missing a big piece every programmer should now, especially because I mainly developed web applications. I don't know how to program applications that operate on a "lower level" (I consider web applications being more high-level).
Though I received some basic education on computer sciences, I have never learned practically how to use threads, how to communicate between two different applications (locally or over the net), how to write a daemon or a very basic device driver or how to structure programs and interfaces best. I could easily extend this list for forever (which demonstrates my serious interests in programming, doesn't it?).
Of course I know these are things you don't learn from one day to another, however I feel that I will not even get close to this point because I simply don't know where to start. There are a lot of interesting questions here on stackoverflow (or on reddit) or blog posts on the Internet, but either they are too simple or to hard to understand for me. I sometimes think my programming skills are reduced to communicating with databases only.
What do you think would help me most to get out of this state of mind? What did really help you making progress? Do you have any recommendations on where to start?
Thanks for anyone who has made the efforts to read until the end. I really appreciate any thoughts.
Related:
- http://stackoverflow.com/questions/76364/what-is-the-single-most-effective-thing-you-did-to-improve-your-programming-skill
- http://stackoverflow.com/questions/47898/good-practice-projects-to-improve-programming-skills
and others. Pretty near a duplicate.