It's almost unheard-of not to have a computer nowadays, and those who can provide programs for them and build the underpinnings of the internet are almost guaranteed to be able to find work or money whenever they need it. Programming is a unique challenge, but well worth it in satisfaction, too. When you finally get your program working, it's the best feeling!
Some people choose to go to school for expensive computer science degrees, while some of the top app developers and programmers are self-taught. Unlike medical or legal professions, programmers can easily experiment with their own code at a very young age, and even teens who have taken up the hobby can earn considerably more than their peers.
Learning programming isn't about where you go to school or who your teacher is, but your own persistence, ability to grasp complicated ideas, and willingness to persist even when you don't fully understand the terminology being used.
Anyone with basic computer skills can learn to program, though the more you know, the easier it may be for you to think in the logical and abstract way that programming requires. The more free time you have, the more you can devote to learning programming, but it's more about the motivation you feel to learn and the quality of your programming sessions than how many you have. You'll also need to give your brain downtime frequently, as it's a mentally taxing process that can't be forced.
The easiest way to begin to learn programming is not by diving straight into complicated, abstract languages. Instead, you need to learn how to learn programming. This isn't a hard concept; think about how you learned to learn other school subjects. Perhaps you learned that when a sentence is presented to you with a blank space, you need to fill in the best word, or that when you see two numbers with a times sign in between, you need to multiply them.
Similarly, but more in-depth, you can learn concepts like tags, objects, styles, hierarchies, and others that will help you wrap your brain around the more difficult concepts later on. If you don't already know HTML, it's a great place to start.
HTML is a very active language – you can literally see what you're building as you go along, and simply adding a few tags can make everything look completely different. You will learn to open and close tags by nesting them properly, which will save you time and grief with more advanced programs. You can easily build your own website, which is a very satisfying and practical project that will grow with you. There are also many resources available for HTML, since it's such a common language, and knowing it can help you solve simple problems of how to display more advanced work.
Once you master HTML, consider CSS, a natural next step into the internet programming languages. Instead of building webpages, this language focuses on styling them so they look good. It involves more complicated concepts that build on what you've learned with HTML, and once you can build a webpage, your future web applications will be much better-looking!
With web programming experience behind you and several languages under your belt, you will be much more familiar with how to learn a programming language. It will become easier to write simple desktop applications, though there's one more step you can take to prepare yourself. Automator or AutoHotkey are a few examples of script handling programs on your computer, and though you can't build complicated programs, you can learn macros and scripting. It's not technically programming, but it's another way to prepare yourself for it.
PHP is one popular choice, and Perl and Python are others. These are just three options, though; some recommend learning languages like Ruby. The reason these three have been selected as good starting points is because all of them are common, and all of them are also command line languages so you can learn to handle input and output quickly.
If you've started off looking to script programs through Unix, learn bash. Bash scripts are endlessly flexible and can be used for everything from simple applications to fully-fledged ones, so this language grows with you.
Other choices for building full applications include C and C++, which will also be easier once you've learned other languages, though each language requires a slightly different way of thinking. Mobile app languages include Objective C and Java, but don't dive straight into them without knowledge of simpler languages or you'll only frustrate yourself!
This suggested order of language education will help you gradually increase your skills. You may never use HTML again once you learn to code with PHP, but you will still retain the ability to learn sets of commands and objects in other languages just like you learned HTML tags in your early days.
To learn by yourself, you can rely on some or all of these sources:
These are just some possibilities, but no matter how you choose to learn, the most important part will always be putting it into action. As soon as you learn something, try to use it. Even if you can't do much with it, it will help reinforce this new trick in your mind so you can draw on it later.
The more mistakes you make, the better, so write a ten-line program on your first day of learning a language, even if it only says “Hello, world!” and doesn't do anything. Little concrete successes will boost your self-confidence as you go about learning to program without spending a fortune.
Just a normal software developer who love to write code. Developing professional software since 1999. After working in the software industry for many years, I've started my own website to share knowledges and experiences.