Also some open source software would be great instead of 3-4k$ visual studio.
I would consider myself and low level intermediate programmer, a chemical engineer by education but I have always been intrigued by programming and willing to learn on my own. With my current job (industrial automation) it is also beneficial to code custom apps to simplify tasks i.e. custom xml editors and windows forms apps to do random things. I will list a couple of things that helped me build a foundation and get me where I am today (which is by no means expert level).
If interested in programming for windows I would recommend checking out visual studio express. Its free and has all the tools you need for beginning program development. I primarily used visual basic in the beginning but I am learning C# at the moment to help a few friends with a project in Unity. Microsoft Virtual Academy and Channel 9 also have a ton of courses depending on what you want to do.
Your question is very vague. Would you like to do Windows programming? Linux? Apple? Android? The language you choose will be the determinant in what you can do with it. My recommendation for a beginner language would be Python or Java. These languages are VERY open-source and well documented.