How can I improve my English?

Some of the effective ways I found to better learn English are:

  1. Write. Write a lot. Start a blog. Write about interesting stories from your past. Ask your readers to point to the issues in your text (also your code). Maybe start specialised blogs for writing about a topic that interests you.

  2. Read. Read a lot. Especially fine literature, though not too archaic. I really like reading original and quality Children and Young Adult's Literature in English (e.g: The Hobbit, The Treasure Island, E. Nesbit, Roald Dahl, Mary Poppins, Sherlock Holmes, etc. - can't think of more right now.) There are many public domain and freely distributable fiction online in Project Gutenberg,

  3. Pay attention to what you write and how you phrase yourself. Don't write too hastily.

  4. Chat with English speakers on IRC - I like Freenode for that and they have an ##English channel, but other channels accept somewhat off-topicish discussion, especially some #not-channels or channels like #perlcafe , or #perl-cats (sorry, I'm an old school Perler bastard), which are intended solely for off-topic discussion.

  5. Watch/listen to some films to see how people use the English language in speech. There are many clips on YouTube and similar sites and you can learn a lot from them. There are some larger scale videos available online, offline and on torrents naturally.

  6. Most importantly - remember that improving your language is hard work, but it's also fun, because hard work is often fun and rewarding and makes you happy. The opposite of fun and pleasure in general is not necessarily work. If people did not enjoy hard work for pleasure, then large scale operating systems that are completely free-and-open-source-software such as GNU/Linux or the *BSDs could not happen.

You can find some other recommended online resources for learning English and improving it in the “Awesome English” curated list of links on GitHub.