for the past ten years i have tried without much success to program in c, c++, java and c# .net. my major problem has been inconsistency and lack of focus and direction. now, i want to start all over again with Python as my language of choice. what must i do to succeed and become proficient in python and possibly other languages? please, help me because i really want to be an excellent programmer regardless of the "difficulties".
Python is a good language to start with. Consistency, time devotion and practicing are inevitable if you really want to be a programmer!
Start hanging out here and at StackOverflow. Discipline yourself to log in at least three times a day to each. Answer questions (or ask them) every time you visit.
Go to Google Code, Source Forge, and other places where you can see professional grade code. Download and figure out how things work (choose things that interest you). Modify them to work "better" for your own interest. Discuss your changes with the committers for the projects. Check in your changes.
Go to school, study Computer Science. With your degree in hand, look for work.
Commit to a friend or relative to create some software for them. Force yourself to do it, because you promised (or they offered pay).
Programming is not just something you do, it is a passion. If programming is not a passion you are not going to find a magic pill or answer that will get you on track.
In 10 years if you feel you haven't gained much then you should assess why you are doing it in the first place.
Part of the problem with coding is that it's easy to lose focus and never finish a product. A lot goes into creating the perfect application, that one sweet bit o code that when all compiled together makes your pants fit just a little bit tighter.
Spend some time researching what you want to do and dedicate yourself to it. Get yourself hyped up and psyched out. You want to be passionate about whatever you are creating or it will show in the work (lack luster results). You need a clear plan of attack, from what the program is, down to how it will work.
You need to think about:
What the program does
How the program does it
Component-ize your work, set clear goals and meet them. Don't just say, "I want to create a video game" and get frustrated when you don't meet the goal, that goal is too generic and doesn't really allow you to feel the fruits of your labor.
"I want to create a side scroller like mario"
What should the program do:
The program should consiste of a dorky sprite named lario, he has your basic platformer skills, he can run and jump and duck. The world he exists in is playful and uses a lot of soft / pastel colors. Mario should progress through each level, each level should be part of a bigger world, and each world should have a theme...etc (this can go on for a lot of pages).
How should the program do it:
The program will be written in xyz language utilizing xyz technologies. Sprites will need to be rendered using xyz platform. Each sprite should xyz frames per second and we will need to have animations for jumping/ducking/running for the main character, as well as possible variations on the sprites for powerups...etc (this can go on for a long time)
Our users should have fluid controls, they shouldn't have to think about the fact that they have a controller in their hands. the game should feel second nature to them. This can be achieved by rigorous testing and ensuring that everything behaves as desired. We want playful music tied to the themes of each world, and the enemies and bosses should also tie into them as well. The level design should be intuitive and well thought out, platforms should make sense, and power ups should be plentiful enough that the user doesn't feel the game is cheapened by them....etc
the interface should consist of a simple HUD with the life bar at the top with the scoring to the right. Active powerups can be shown in a blue box on the top middle of the screen...etc
once you have the framework laid out you can start to piece it all together. So maybe your first goal is to build the rendering engine that will power your game. You've decided to go with DirectX and so you start by creating a simple engine that can easily draw many sprites on the screen.
Your second goal is map the main character sprite to the control pad, so you spend time writing the DirectInput code so that your application can utilize an xbox controller from the PC....etc
Once you have a set of clear goals that coincide with your overall goal you can start to feel progress is being made, and you can see the "light" at the end of the tunnel.
Even with all of this, programming is a passion, if you don't have the passion you don't. Maybe you need to think about how you can use programming to support your daily tasks on your PC and start there. Sick and tired of always having to move files around directories that you are always interacting with. Write a python script to automate it and add some functionality it didn't have before (like logging and backing up).
Write a program to backup your files and compare them to already backed up files and only backup the files that are different...etc
Who cares if someone has already created what you've set out to do. You're here because you want to do it, and do it better, faster, smarter...etc :)
Cheers and happy programming!