I strongly disagree with his "developers need to brag" section...in my experience, those developers that brag the most are those whose code is a negative contribution (pardon the oxymoron).
Also, if you're generating a bunch of good code and solving hard problems, people are going to notice you.
Maybe "brag" is too strong of a word, but it all depends on what kind of company you work for. Keeping quiet pretty much ensures that only your peers and possibly your tech lead will know what quality and quantity of work you're churning out, unless they decide to share.
If you're working for a small company where the CEO sifts through source control to see what's changing, producing good code will certainly suffice, but if you work in a large company with a multi-tiered management structure, keeping quiet only pushes the responsibility to promote your work to someone else - and you can't always rely on that happening.
If you're working for a small company where the CEO sifts through source control to see what's changing, producing good code will certainly suffice, but if you work in a large company with a multi-tiered management structure, keeping quiet only pushes the responsibility to promote your work to someone else - and you can't always rely on that happening.
In the cases where you can't rely on that happening, then that means no one else gives a damn about what you are doing. This would be very odd in a multi-tiered organization, since often times development projects are decreed onto the programming staff by strategic direction committees. If no one cares, the project is make-work; warning. Either it is going to contribute next to no value to the organization, or no one has a clue what value it is going to contribute. Either way, you'll be hard pressed to convince everyone who needs to be convinced what you are doing is that valuable.
To borrow a PG idea, to everyone above you in the management hierarchy, you are represented -- as an aggregate of the rest of your group -- by either your lead or manager. A lot of the interaction between your group and the rest of the company will be done by them. They need to be your advocate; if they're not doing that, then your entire group is getting shafted, and need to find a better advocate.
Maybe you're right, but upper management knows what are the critical applications and those who deliver fixes and improvements to those apps, will shine. This happens at big companies too (at least it does in AutoZone, my current work place), perhaps this is the exception to the rule, but it's what I've experienced.
Your results should speak for themselves but not in the way an engineer might think. Your technical expertise or the virtuosity of your software is not relevant to the business at large (though it is relevant to the business at hand).
What matters is the value that your work delivers to the business. If you write software that consistently delivers value and has significantly positive impact, it should speak for you. If you work on unimportant projects with little or no benefit or impact to the company, it will not help you, and you should also wonder why you're wasting your time on it anyways. Certainly when it comes time for the business to execute cost-cutting measures like in times like these, they will wonder why.
Then there's politics which can render all of the above moot. It's unfortunate, but that's how humanity rolls. If you work in a large company and wonder how some totally useless and unimportant projects that cost the business money hand over fist manage to survive even during tough times like these, well, now you know why.
I call this the "degrees of separation" rule. How far is your job from the point where the company makes money. Sales and accounts receivable (as much as we like to make fun of them) are pretty high on the totem pole. After you get past the politics, they tend to enjoy some form of stability. And it's not uncommon to hear of a salesman/woman work 10 years in the same company.
On the other hand if your job is writing software for a widget company than it better be vital part of every widget. You don't want to be the guy that is made redundant because what they assumed was good work contributed nothing to the overall business.
Or what if the good work you did contributed quite positively to the business, but in a way that wasn't directly connected via the dots back to you. For instance, what if you write a kick-ass piece of software that doubles the sales team's efficiency, but no manager ever gets farther than congratulating the sales team on a miraculous performance because the believe nothing behind the scenes changed. What if they continue to believe this, in spite of your appeals that it was your software that helped the sales force along?
A company managed this way is a company that will have little left but a sales and marketing force eventually, because the executive staff will have pruned everyone else as being redundant. Arguably, this could happen even in a shrinkwrapped software company, where the software isn't just a vital part of the business, it is the only part.
Hire someone incompetent, or see someone incompetent get hired above you, you may find you'll be made "redundant" even if you are the last developer hacking on the product. It is employment at the will of your employer, and nothing says they can't terminate you due to their own incompetence.
Also, if you're generating a bunch of good code and solving hard problems, people are going to notice you.