Becoming a programmer is a cumulative process that builds up your skills day after day and year after year, and programming can be fun and rewarding (mentally, spiritually and financially). This guide does not promise to give a magically easy way to becoming a programmer, and the ordering of the steps is not sacred, but you'll get a general outline of how to become a programmer in one of the modern programming fields. Determine your area of interest: You can start learning with any programming language (though some are definitely "easier" than others), so you'll want to start by asking yourself what it is you want to accomplish by learning a programming language. This will help you determine what type of programming you should pursue, and provide you a good starting point. If you want to get into web development, you'll have a whole different set of languages that you'll need to learn as opposed to developing computer programs. Mobile app developing requires a different skillset than machine programming. All of these decisions will influence your direction. Regardless of your decision, you may want to consider starting with one of the high-level, simpler languages. These languages are especially useful for beginners, as they teach basic concepts and thought processes that can apply to virtually any language. The two most popular languages in this category are Python and Ruby. These are both object-oriented web application languages that use a very readable syntax. "Object-oriented" means that the language is built around the concepts of "objects", or collections of data, and their manipulation. This is a concept that is used in many advanced programming languages such as C++, Java, Objective-C, and PHP. Read a lot of code: Specifically, read a lot of code by excellent programmers. Not just good programmers, like the guy down the hall, but excellent ones. Due to the huge amount of open source today, this is easy to do. When I was learning Java, I read code from the Github. I've read lots of good code since.The more experience you have under your belt, the better. I recommend getting involved with an open source project (Github) or volunteering with a local nonprofit organization to write software that helps them out. This will benefit you in the following ways: You'll gain exposure to what it is like building an application to a specification. You'll experience the full development lifecycle, including maintenance. You'll work as part of a team. You'll learn "basic hygiene" practices, such as version control and documentation. You'll get a feeling of accomplishment, which will help keep you from getting discouraged. You'll be able to list programming experience on your CV. Learn your tools thoroughly: I think the greatest loss of programming time is not in debugging or rewriting code, but in the innumerable seconds lost here and there by developers who don't really know their tools. I am referring to: the IDE, the language, the build system, and the VCS. Of these, the IDE and the language are by far the most important. You should, after a few weeks of practice, know almost every keystroke combo in the IDE, so that you touch the mouse only when it saves a lot of keystrokes. If you know the keystrokes, you know the commands. If you use the mouse only, you know only menus on which you tend to click on the same one or two entries. Knowing the IDE is pure discipline. Plan your code before you write it: I think this is the most difficult item on this list. In exchange, it probably delivers the most benefit. I'm not thinking of formal design — at your stage, that's unlikely to be necessary. But you do need to plan out the code in some manner other than carrying it around in your head. The simplest approach is to write up a small document What are the requirements for this code? How will you implement it? What do I need to know that I don't know now? What are the objects I will need or need to create? And write this out. Only then begin to code, you'll find the code much easier to write, to document, and to get correct. Save your notes — they're great reference material. Practice...and practice never give up: While the stack you learn doesn’t matter a whole lot, what does matter is learning by doing. This means dedicating some real time to perfecting your new craft. You must set aside a significant amount of time every day, every week, to learning.You can’t become a software developer after 10 hours of practice. It’s just not possible. Some people say it takes 10,000 hours to become an expert. Now, you don’t need 10,000 hours of practice to get your first software developer job. But you do need to dedicate some serious time. Find a Community: Finding a community to learn with can make or break your success as a software engineer—especially when you’re just starting out. When you are surrounded by a community of like-minded people, you have an automatic support system: a group of individuals you can call on when you get stuck, or lose motivation. (Both of which can happen to the best of us!). Build Projects: Don’t just read tutorials and watch videos—put your skills into use. Solve problems along the way, just like everyday software developers do. When you do this, you not only further your learning, you also show potential employers that you can hack it. (Because the end-goal is to get a job, right!?). I am not a member for long time in this forum. My experience in programming field pushed me to write this simple tutorial for the newbies that want to start programming, because i saw many post about "How or where to start Programming","Which is the best language to start programming". So i decided to write this tutorial in order to help the community of this forum independently of old or new memebers. In my opinion this is the right steps in order to get the programming knowledge and become great programmers in the near future. Feel free to post a reply to discuss. I've been looking forward to hear a reply from senior memebers that this post can be added as a friendly helpful tutorial.