You are a software engineer and wanna learn some drone programming? Check the ArduPilot/APM development site. There you can find Mission Planner.
The future (in my opinion) are the autonomous drones. I would invest my programming energy in learning how those work. In fact a few promising projects go in this direction.
E.g. HEXO+, AirDog (main purpose, attach a GoPro and use them to film). I read somewhere that they may be based on the ArduCopter project.
Costs for various drones
So the cheapest option seems to be the AR.drone 2.0, which is also very popular and you may even find used models on amazon, for even 190 US$!
Which one should you choose?
Parrot AR.Drone 2.0 SDK in C#/.NET
Ruslan-B/AR.Drone on GitHub – The AR.Drone 2.0 controlling library for C#/.NET and Mono, with video support. Built over the original AR.Drone SDK 2.0.1 – using lastest drone firmware.
If the cost is an issue, you may wanna buy the cheapest option and begin learning from there. Go for AR.Drone 2.0 and try the AR.Drone library by Ruslan-B. It may be even easier to learn (just my opinion – need to test). If you already own an AR.Drone 2.0 or can borrow one from a friend it makes sense to give this a try.
To consider: the last commit on Ruslan-B code was on August, 26th 2014. Maybe the community and support for this may not be that big. But the project looks mature and stable (to check) so it may not be a big issue. Eventually, questions and support can be found on stackoverflow.
MissionPlanner SDK in C#/.NET
diydrones/MissionPlanner on GitHub – the most commonly used ground station written in C# for windows but also runs on Linux and MacOS via mono.
If you wanna learn the cool and advanced stuff directly, check the ArduPilot/APM project. The drone will cost more money, but on the other hand the projects look more active, and there is a big community.
To consider: The main flight code for ArduPilot/APM is written in C++. Support tools are written in a variety of languages, most commonly in python. So far only the MissionPlanner is available in C#. Check what each project does, and see if it’s ok for you.