the visa part can be (as in many countries - except maybe as eu citizen in another eu country) a bit annoying.
as an engineer (programmer) you either need a degree or (documented) 10 yrs+ of work experience. if ou fulfill that you basically have to stick to the checklist of what to hand in in what form like sticking to an rfc. reason i mention this is that i heard of/from quite a couple of people who did not - going like "i did not have X so i handed in Y which is basically the same...". does not fly...
then you either need a company "sponsoring you' or have proof that you have enough income (ie. several contracts as a freelancer).
in the end it is less scary than many posts on the net make you (made me) think.