Trial and error is the best way of learning. Don’t stop if you get stuck, persist and try find a way to get it done. Provided you are using good software development practices (Common Sense) and not creating technical debt.
Comment on your code, test your code extensively, use continuous integration and git version control.
In computer science and web development there will always be someone who knows more than you about a topic. The best thing is apply knowledge in a pragmatic manner to help others as best you can, to collectively improve our level. Too many king shit coders think they matter.
These days I’m using django, rails, laravel, yii framework Frameworks. Using Ansible and to a lesser extent Fabric for server provisioning and deployment. Using Vagrant and not Otto for local dev environments. As a task runner I use Grunt but I should be using Gulp (or straight NPM). I used to develop native Android apps. Now and then dabbling lightly with perl, meteorjs, scrapy and the latest frontend stuff.
The environment excites me and by creating this blog I’m trying to give a bit back to the community. It also lets me vent my opinions.