MQL is similar in syntax to C-based languages (e.g. C++). I learned as I went through reading the mql4.com references and discussion boards, examining source codes of other EAs and Googling questions I had. Chances are, if you have a question or a problem, somebody else has had the same one, and posted about it online. It's a very long process to get 'good..' Even with a development background, it took me a couple months to become familiar with the language. After you get a handle on the language/syntax and how MT4 executes EAs, I recommend you draw out what you want to accomplish and create a plan of the steps it will go through: in programming, we call this writing pseudo-code.. Since EAs are handled linearly (it is executed one line at a time from top to bottom), this is pretty easy. Luckily there is a ton of open source functions free to add in to your code, etc.. Just don't go trying to sell an EA with someone else's open source code in it - it's illegal and also not cool.
I don't agree with Professor53... you can build 10 crappy EA's a night, but they will be just that, crappy. A *good* EA takes a lot of thought and effort, or else everyone would be making fortunes. My own personal EA has been in development for just under a year and sits at over 10,000 lines of code (including libraries, after condensing it several times).
My major pro tip, which many people don't do is, think of all the what-ifs... This is a computer program that is managing thousands to millions of dollars - plan for everything from order sizing to balance/equity protection, order maximums, FIFO rules, etc.
Lastly, ONLY build an EA if you have a strategy that works manually - don't start building one and try to plug in crap as you go to try and make it work. I wasted a lot of time doing this before I sat down and planned out my system and knew it worked before I started programming it.
Be first, be smarter, or cheat.