Time: You need to spend a lot of time thinking about it and not giving up.
Diligence: You need to always use it, and not procrastinate or go back to GUI. You need to learn more and ask others "how can I improve this?"
I'm using both vJass and WurstScript. vJass and Wurstscript are higher level languages that become transformed into JASS when you save your map.
WurstScript is a higher level language that can do something like this:
[jass=wurst]
u = CreateUnit(Player(0), 'hfoo', 0., 0., 270.)
u..setX(500.)..setY(500.)..setFlyingHeight(500., 0.)
[/jass]
vJass is a lower level language, closer to JASS:
local unit u = CreateUnit(Player(0), 'hfoo', 0., 0., 270.)
call SetUnitX(u, 500.)
call SetUnitY(u, 500.)
call SetUnitFlyingHeight(u, 500., 0.)