I am really confused with this. I believe that the more I am getting experience, the more I am becoming an expert at finding mistakes and fixing them quickly.

Now my boss got website from a programmer who does very very bad coding.
Now he sends the list of problems to fix.

Suppose it's the stylesheet problem, and the old guy does not know how to fix it, but due to my experience I know straightaway what the problem is, and I can fix it in two minutes and many similar problems like that.

But after fixing all that I realise that I fixed all problems in 15 minutes which other guy was not able to solve. 

I get 25$ per hour, so I feel very bad charging 6$ for that list of things which took many years of experience to learn.

Is it OK to charge 6$ or should there be some way to charge things?

Such a good question because it is a problem we all face as freelancers. When I made the transition to being a freelancer, the hardest thing for me to develop was a time tracking discipline. For the first year or so, I just focused on project-oriented work, and really only bothered with timers when I was "in the zone" of coding. In time I learned what a huge disservice to myself it was for me not to track as much of my day as possible.

Even as I write this comment, I have a timer running entitled, "Blogging on Stack Exchange." But more on that in a second. First let's address your question.

As it relates to time tracking, one of the things I found as a freelancer is that there were certain clients who tended to have lots of little issues. As an amateur, and because I felt I was being a "good guy," most of the time I wouldn't even bother billing the client. Taking two minutes to fix a problem, which sometimes is all it takes, seems hardly worth the effort to start a timer. What I found however, is that over the course of a month, it was not just one 2 minute problem, it was 10 or 20 two minute problems. Taken by themselves, it was no big deal. Taken in aggregate I was leaving money on the table. But more than that, the client had no visibility into the quantity of work I was doing for them. As a result they tended to either a) undervalue my work, b) take advantage of me, or c) just take me for granted. 

This is not a good relationship to have with anyone, especially a client. 

Next, and as someone else pointed out. Nothing really takes two minutes. There is email, the phone call, the logging into the bug tracking system, and all of the other artifacts of a good process. The process, the customer service in speaking with the client on the phone, is all part of the value you provide, and thus should be something you are compensated for. And clients should know how much time is spent by you on the phone and answering email. There was one time I presented an invoice to a client that showed how much time was spent on the phone with them. They later told me that they had no idea, and that they worked to curb their tendency to default to calling me on the phone when they had a question. A fact I appreciated given how disruptive a phone call can sometimes be. 

I also agree that you should bill in reasonable increments. I bill in 15 minutes increments, which is just a fancy way of saying, "I have a 15 minute minimum on any issue you want me to tackle." There are many reasons for this, but for me, the biggest reason is the hidden cost of context switching. For me to go from one task to another is not instantaneous. If only it were. Moving from one task to another often can involve me stopped to check email, go to the bathroom, look at G+/Facebook/Twitter, etc. One could say that I lack discipline, but for me this is integral to the process of me switching gears. Therefore, if I have 4 tasks on my plate that each take 15 minutes each, it doesn't take me an hour to complete them, it takes me about 1.5 hours. And that additional 30 minutes, is the hidden cost of context switching. And my clients pay for that through my minimum billable increments.

Many people have also mentioned and talked about the additional value you provide as a more experienced programmer. That fact that it takes you half as much time to perform the same task as a colleague is reflective not only of your superior experience, but also of a better process you have built for yourself in managing your clients. This all speaks directly to the value you provide and you should compensate yourself fairly for it. This requires you to understand what your competitors are charging relative to the quality of their work. Personally, I maintain close relationships and friendships with the other freelancers in my field, which gives me insight into this problem and allows me to adjust my rates accordingly. If you find that by and large you produce the same quality work in less time, then by all means charge more. If your clients can't afford it, then look for new clients and move up in the world. Leave the penny pinching clients, and the clients who don't value work provided to them by their freelancers to smaller fish. Refer those clients to other freelancers you trust and make them someone else's problem while you work on building up a clientele that pays you more fairly. 

The last thing I wanted to share was something no one else really touched upon that I could see. Sometimes comping the client for the 2 minutes of work is the right thing to do from a client management perspective. Sometimes, giving them that time is what helps you build trust with the client, and firmly establishes you as the go-to person for them. It might also help you secure larger and more profitable projects in the future. Knowing when to charge and more importantly when not to charge is the hard part. But when I make the decision not to charge a client, I do go out of my way to tactfully tell them that this is "on the house." I tell them that I appreciate all the business they send my way, and that I don't mind taking care of this one issue for them. Its the least I can do, I tell them. They are usually very appreciative, and I feel it helps strengthen our relationship.

Now permit me to return to the timer currently running on my desktop entitled "Blogging at StackExchange." This is not directly related to your question, but helps underscore the importance of maintaining a discipline with keeping accurate track of your time.

From a business perspective, the most important metric you can track is profitability. Knowing how much time is spent doing billable vs. non-billable work is very important. It helps you establish and understand how much overhead exists in running and maintaining your business. It also helps you to identify ways in your business and process you can improve. If you realize at the end of the quarter that you spent a lot more time than you thought "blogging at Stack Exchange" and it came at the expense of actual billable work, then you might want to consider spending less time doing it. With regards to profitability though, what I find is that there is A LOT more time that goes into a project than the time that is spent coding. Not only is there all the email, and other tasks mentioned before, but their is the time spent securing the deal, billing the client, negotiating contracts, and the like. Much of this time is not billable, but knowing how much time you spend doing this might help you identify ways to streamline your business, and increase profitability at the same time. Let's say for example you charge $100 per hour, but that you spend roughly 50% of your time doing administrative non-billable work. Perhaps there is a person out there you could hire at a rate of $50/hour to take that administrative work off your hands. Then you could spend more time coding, AND increase your bottom line at the same time. Its a win-win. You are giving someone else valuable work, you provide a better service to your clients almost certainly, AND you make more money. 

And there you go, 0.79 hours spent "Blogging at Stack Exchange." I will chalk that up to my marketing budget. :)
