Here's the three minute version of doing it:
1. Work hard on tangible stuff, document and claim credit for doing it, and notify people with what benefit the work provides. This sounds maybe stupidly obvious, but a lot of non-technical people don't understand the value in something. So, "Upgraded XYZ so our website loads faster, which is proven to make customers more likely to buy according to ZYX paper" - I know, what a waste of time, right? Wrong! It's going to make you a lot of money. Tell people what you did.
2. Before you go to ask for more money, prepare a BATNA (Best Alternative to Negotiated Agreement) - if they say no, what will you do? You need to know this. Having other offers is obviously good. Savings are good. You don't even have to mention your BATNA, but you need a Plan B. Most people don't make one of these, so if their first attempt doesn't go swimmingly, they're in trouble.
3. Go in and stress how much more you'd like to do going forwards. This is huge. Do not mention what you've done in the past, except in the context of how it proves how much more you can do going forwards. So go in and say, "Hi boss, as I mentioned in all my various weekly reports, I've been learning new stuff and kicking massive ass. [that was step one] Recently I've picked up some new skills, and I've been getting recruited for a bunch of projects [step 2], but I really like working here. Actually, I think I can deliver even more value here, if I take on new responsibilities. I'd like to train a successor to gradually take over my current role, while I do ABC-stimulating-enjoyable-task that will bring the business new money. I don't even want to be compensated much more for it - I'm going to be bringing in lots more value/assets/sales/cash/whatever, but a moderately small raise is enough for me because I like working here so much." Then lay out what you're asking for.
Business people learn how to do this. You're leaving lots of money on the table and not getting a chance to work on cooler stuff that you'd like to do if you don't do this.
1. Regularly update with the work you completed, and the benefit it provides.
2. Decide what you want, and what you'll do as Plan B if your current company won't give it to you.
3. Go stress that you'd be able to produce more value if you transition your role to a more highly paid and enjoyable one. Be friendly and complimentary. Whenever possible, try not to ask for more money for the same role from the same company - people hate price increases, so it's better to expand your role to something that's also more enjoyable and produces more in their eyes. If you want a raise for doing the same exact work, it's probably good to start looking outside the current company as well for other offers.
There's simply no way that you can convey to a company that they need to pay you twice as much as they did when they hired you 3 years ago. They simply won't believe it. Sadly, the only way is to demonstrate it for them by actually accepting a job somewhere else for twice the money.
The key is to remember that you're in this game for yourself first. It's nice to work for a good company with a good environment and a fun team, but at the end of the day it's not worth leaving tens of thousands of dollars on the table just to stay there.
I think most programmers dislike the idea of what they see as kissing their boss's ass so much, that they'd rather start their own startup to get what they want (more interesting work, potentially higher pay, more amenable working conditions, etc). I can't say I blame them.
You can at smart small companies. My salary tripled in the 5 years I spent at my first programming job. I admittedly took a really small salary because I hadn't finished school and had no real world experience.
Firstly, a lot of work that programmers like to work on really is invisible to pointy-haired types. I run an infrastructure group, and when I do my job well the CEO hears less about my work because there are no problems. It's much more difficult to sell the benefits of never hearing about my code than pointing to changes I made to a website that directly affects conversion rates, or something similar.
On a related note, your point 3 assumes that a) the developer wants to change roles and b) that change is going to be to something that can be justified through revenue. Again, there is a lot of work that is interesting to programmers and very valuable to a tech company that doesn't directly drive revenue. These changes are very difficult to sell unless the CEO understands the benefits of these sorts of changes, in which case you probably don't have to sell them anyway.
In my personal case, I've gone as far as pointing out that every single thing that our company builds, when deployed, is critically dependent on my code and the code that I am responsible for working - and it does work, every time. It's still amazingly hard to get sales people to value that.
Either they let you go and have an 'oh shit' moment as your replacement flounders ... or they just won't take you seriously because the stuff you do isn't visible to them ... you have to make a detailed and provocative case, basically outlining what happens if you leave, to get what you want.
Most programmers, working together with BAs and PMs simply don't have access to the information that says how their efforts contributed to the bottom line. And they work in teams that often include those BAs and PMs, so even if they could make a direct link to increased company earnings etc, then it would be hard to justify claiming credit over anyone else in the team.
And in some cases a good PM deserves more than a programmer.
According to the article, when asked for a raise, the best thing is to say they have to wait for their review like everyone else, and that's when you'll take note of performances.
Negotiation and business analysis skills are all helpful, but if you find yourself needing them to be duly recognized for your contribution, your work situation is fundamentally flawed.
Of course, here I am making assumptions of my own, e.g. you are a top talent in your field with the freedom to pick your employer.
That said, as someone who has been through this, I think your advice is a naively optimistic oversimplification of the forces that hold programmers back from getting paid more and, for the most part, people who follow your advice will still end up getting paid less than business analysts and project managers for cultural reasons expressed by some of the answers on that page.
The only difference is, with your approach, they may feel as if they have done everything they could, rather than suffering in quiet resentment (and, from a psychological perspective, this is not to be underestimated).
Depends on the corporation. Walmart only makes about $10,700/employee in profit, for example (about $6/hour if all employees work 35 hours). Since walmart typically pays $10-12/hour at minimum, employees are capturing about 2/3 of the value they create.
Of course, the numbers will be wildly different at a software company. Most programmers don't capture anything like 2/3 of their created value.
But I found data more useful to the tech industry. If MS or GOOG pays their employees $200k/year, then employees are capturing about half of the value they create . Worse than Walmart, but not that bad.
 This is actually a fallacy, since it assumes all returns are due to labor, not capital.