I have been programming for one year and a half. I must say, programming does really take up a lot of my time and really test my patience to the maximum. It is just not sitting in your cubicle, earphone plug into your ears, eyes focusing on the monitor, and your head thinking of the most logical solution. As a programmer, one should not just stick to one speciality. Although that speciality may involve deeper learning and higher experience of knowledge but knowing your tool in detail is an advantage. This is because tools will evolve to help your tasks more simpler and exciting. I said exciting because sometimes the tools will drive you nuts.
As a programmer, if you can follow one simple step that i am about to describe here you will be fine. I am advising to programmers to understand their tools better. (After all, it is your bread and butter to earn a living... unless you think of changing your career)
For ABAPers, you might only reach to the stage where you only request your application to be transport to the production server and done by Basis guys. In .NET environment, this is quite different.
First, you need to know what are the things you need to build. Does it involve database (most application involves database creation). What are the fields or tables you need. What is it for. To whom you should to talk for greater clarity and whom will be using. This is important as it will be the user using it. No point talking to a manager (telling what he wants) and at the end of the day it is the downline using it (complaining that this is not the right things... well, this happens).
Second, strike out one or two prototype and showed it to users (is this what they want).
Third, once user approves it and is convince that you really understood them. Well, what are you waiting for? Go ahead... do programming!
Fourth, once you have done programming and tested. Send the whole thing for testing.
Fifth, any modifications or request just take good care of it or according to early requirement. (Otherwise, you can charge them more... do not be a fool to simply say YES to all amendments... why? Users ARE fickle minded. Just give them a small reminder that any changes after initial and second agreement will bear sudden small amount of charges... hey you are a professional and earning to support you and your family... why should you give them free if you can do it)
Last, after all the headaches... it is implementation. Implementation means deploying your product to the customer.
All the sixth steps are simple to be put down into here. Try doing it.
It would be fun! You get to meet a whole new world of friends (kind of bosses, kind of employees). It is also fun to see how the employee reflect yourself in working. At least, you are learning the ropes. Programming can be fun but it has many responsibilities that the steps has hidden. Fun and stressful. Well, money is hard to come by... if you imagine that... maybe it will change your mind to be even more hardworking...
Money can be spend in a few seconds but it might take months or years to churn out a software to get your money... if you are fast... you are pro.... As pro as you are, you will be bound to face criticism... eat it up... it is good for you... just like vitamins... I believe in every job we do, there will be criticism. Programming is never simple but it just need your passion, dedication and responsibilities. Sound simple?
the sky is not the limit...