I’m a software developer. I wasn’t careful enough and fixed a couple of bugs in our system that nobody in the team could fix. And that was the beginning of the problem. Today I have to fix the most of toughest bugs while another team members are creating the cool new features with cool presentations and getting all credit for getting the job done. As far as I know from some data has leaked—I’m also the least paid team member. What can I do?
This answer isn't geared towards software development specifically, in fact it's a lesson I learned in the military from one of the most outstanding professionals I've ever met.
Whenever I enter a new arena and I want to stand out, I ask for the dirtiest, least desired, most hated/reviled job or position I can do that doesn't conflict directly with my goals. Then I kick ass at it. I don't just do it well, I do it as well as it can possibly be done given my skills and the tools available to me. The reasoning is that anyone can build something new or keep something going that already works well. If you take the worst of the worst and you do it in a stellar fashion, people will take notice.
As @VietnhiPhuvan mentioned, these "cool things" will be forgotten in a couple of months. Next year when they're adding features, refactoring or looking to upgrade what is already there, your code fixes will still be there. When there's a problem with the software that they can't figure out, they'll look to you. You can make a stellar career in software development as a direct result of your efforts in diagnostics and repair of existing software.
None of us really likes the grunt maintenance work. We all want to do something cool and new. Maintenance is a fact of life though, and if you're being put on it, you can look at it as the opportunity to knock it out of the park. Yes, you'll shoehorn yourself in for a bit, but you'll establish yourself as a dependable, capable and competent coder. Once you've fixed some really hard issues effectively you'll be able to lobby for cooler projects and pay increases.
That segues into my supplementary concept. No one is going to love you if you don't "love yourself". Your performance review is your chance to show just how awesome you are. If your company doesn't do performance reviews, then you need to do one for yourself. Keep track of everything you do. Keep track of the metrics that are involved.
Fixed "X" bug. Resulted in 95% reduction in null reference exceptions. Fixed "Y" race condition. Resulted in 25% reduction in thread resource conflicts.
Keep it in a file and keep it in a hard copy folder as well. As emails come in from various team leads, managers, business reps, sales, whatever, copy/print these into your file. The guy I mentioned before referred to this file as the "I love me" file. Do everything you can to make this sucker grow fat. Once you have some substance to it, it's trivial to go to your supervisor/manager and make a case for a raise, different position, alternate tasks.
You are the only person who can lobby for better circumstances. Your supervisor or manager is the one who can seal the deal and make it happen. So take these tasks and kick ass at them. Don't worry about what other people are getting with respect to opportunities and projects. In time, you'll be in the forefront of consideration for these because of your demonstrated skill, product knowledge, and "quirks" knowledge.
If you get to that point, and the company does not consider you worth the extra money you feel you deserve, then you'll have an excellent resume built up with your "I love me" file. Those are exactly the kind of metric bullet points that hiring managers want to see in new hires. I promise you if your current company won't consider the value, there's another company who can.
Fixing the tough bugs is one of the best things you can have a reputation for.
However, what you need to do is talk to your boss (not your coworkers) about how you can fix the things no one else can fix and that as a result you deserve a pay raise. In no way should you mention what other people get and in fact you don't know what they get unless you saw the actual payslips because people often lie when they mention their salaries. What other people get is irrelevent anyway.
Next talk to him about the work you would like to be doing in addition to the bug fixes.
But really you should get over this idea that it is somehow better to work on cool stuff. The real work isn't always or even often in the cool stuff, what you want is to be the person who contributes to the bottom line not the one who pursues only what is fun and cool. Now sometimes that is cool stuff but more often than not it is not. Right now as a superior troubleshooter, you are the more valuable asset, you just need to make your case to your boss. You are assuming you are doing scut work when you are not. You need to make your boss see that you can do what the others could not do and that makes you more valuable.
In addition to the other answers, I just wanted to add that yes, it often does happen that the reward for good work is more work. Sometimes the guy that gets promoted is the guy with the big mouth that can't do useful work, so they just promote him to manager.
The dirty fact of life is that there is not always a direct positive correlation between how much work you do and how you get rewarded. I learned this lesson as a child when my parents would give me more housework than my older sister, because she was a rebel and would make a mess of things, whereas I was the well-behaved one that did everything perfectly without complaining. It is said that the reward for a job well done is more workload.
Pay attention, understand that there is a game going on and if you're just "doing your best" and hoping good things will fall in your lap, you're not even aware of the game, leave alone having a chance to win.
In your case, if you're really the only one that can handle the dirty bugs, why would they ever give you anything else to do? Ask yourself, do you like doing this? If yes, then fantastic, enjoy! If no, then stop doing it. Try to move toward other projects. If they don't give you anything else to do, it may be the case that you've already cast yourself as "that guy". Move to another company, and don't make the same mistakes again.
Now go ahead, everybody thumbs me down, you know you wanna!
What can I do?
First get clear in your own mind what the problem is and about the outcome you desire (not doing any bug fixing, sharing the load with others, getting more credit, getting a raise for doing this work, whatever).
Then talk to your boss about it.
Whenever you have a question about what has been assigned to you, talk with the one who could potentially change the assignment. I'm assuming that's your boss here.
Bear in mind that writing code is just getting ready to make money later. Fixing bugs and keeping your code and servers up and running day to day and supporting customers is the actual process of making money. Rest contented that you are saving your company!
It is important to only fix the bugs that everyone agrees impact on your customers and must be fixed. Since fixed bugs easily get forgotten quickly (as people don't like them) keep a record of all the bugs that you fix, plus an estimate the value of fixing them to your company, which is ammunition for your pay review.
Also try to get TDD, regression testing and unit-testing with good coverage to be an enforced part the development process. This will push the responsibility of making sure that cool things do not break other stuff or generate hard to find bugs.
What can I do?
You don't have to do anything. Nobody is putting in the mind control devices, nobody is holding a gun to your head.
Don't be a dick about it. Most of the time, the people who get the crap work isn't because of any better reason than nobody else wants to do it, and certain people don't complain - so they get the work. Usually all you need to do is complain a little bit and you'll get a more equitable arrangement.
Beyond that, you hold a bit of leverage. If you don't deal with the bugs, there's nothing they can really do but do the bugs themselves (which is what you want) or fire you. Nobody likes firing people. It makes managers look bad, and is a whole lot of paperwork. It costs the company tons of money too.
But it (probably) won't get to that point. Giving you credit for the bugfixes or some tasks in the cool new stuff is a small thing compared to doing the nasty work themselves. People are lazy. People largely avoid confrontation. Exploit that.
New features, fancy user interfaces are the mostly visible and let's say tangible. Especially for non technical people. It may compared to football or basketball. Some players do hard work in defence and have huge impact for a team success but usually the most remembered and paid are top scorers.
However, if you're constantly fixing the toughest bugs, it means that someone else didn't complete his work and you're assuring to function it properly. You should clearly present it. Keep track of bugs, they are hard to fix but easy to forget. Otherwise, show initiative to implement new features.
Actually, you are sitting in the catbird's seat. You just don't realize it. From now on, anytime someone asks you to fix a bug, require them to request it via email. That is Step 1, very basic. Then Step 2: You respond, "I'm very busy with other important stuff. How important is this? How many customers are affected/complaining? How much money is involved?" If they say it's only 1 customer out of 1000, then tell them it's not important enough for you to work on, since you are the company's top bug fixer. If they say it's really important -- and give numbers to justify their concern -- then you go to Step 3. Ask "Can't Mr. X or Ms. Y fix it?" Don't accept "they're too busy" as an excuse. That's not a reason; you're busy also. FORCE the requestor to admit, in writing, that Mr. X and Ms. Y and the requestor have all tried unsuccessfully to fix this important bug. (At the very least, you force them to admit that they can't be bothered to fix an important bug.) Only then do you agree to fix the bug, because now you have all the written info you need to prove your worth to the company.