First off, keep things simple. Don't dive into Linux, Emacs/VIM, etc. right away if you don't already know them. Your goal is to learn programming.<p>Next, you probably have an idea about where you want to be with your business. Is it mobile? Is it web? I'll assume the latter, because even if it's the former, you're going to need both eventually.<p>Even though it's not programming, you need to know HTML/CSS. Start there, even though it's not programming. You can get your feet wet editing and you can add programming shortly.<p>Start with a simple but capable editor. If you're on Windows, start with Komodo Edit or Notepad++. On Mac, something like TextMate. You can always 'upgrade' to Emacs/VIM later.<p>Once you're comfortable with basic HTML, you'll probably want to make it do things. You can start with JavaScript. This makes programming exercises simple and quick. Just refresh the page.<p>Once you decide you need a bigger challenge, then a larger world of choices becomes available: what server side language (Python and C# are two options), what server (Linux is pretty standard), what web server (Apache or Nginx are good), what database (Postgres, MySQL, MongoDB, etc...) are some of the many choices to be made.<p>I would first survey the above and decide what you think you might need, then pick the language based on that. Let's say you pick Python. Start playing with it from the command line or with your editor like you did with HTML. Once you understand the basics, then pick a web framework (like Django) and start making it produce the HTML that you now understand.<p>It's a stepwise process. The goal is to pick off small, achievable pieces, and then use them to build something more substantial. The core of it all, though, is programming. Programming is how you make the gears turn the way you want them to. Eventually, everything will start making sense and you'll just add to your repertoire as the needs arise.