If you're a programmer, like me, you love to learn all the new and fascinating things out there. I myself as a .Net programmer, and formerly a Java Programmer, find all the new stuff coming out to be really cool. You have MVC for .Net that came out, Silverlight, Silverlight 2, WPF, LINQ, and the ever number of other ORM's out there.
Here is the problem: We are an asset to the company who is paying us. They want a product, that meets their requirements. We want to write highly efficient code, and lets all admit, we like it when we can use a bit of complexity in our code, to make it look better. Maybe to impress or confuse the next programmer. I've done it, you?
Have you ever gone back and refactored good, working code, to make it do the exact same thing, but more appeasing to you? Have you ever spent more time trying to figure out LINQ, when you're a subsonic expert. Ever modularize everything, to make a beautifully flexible piece of software that can handle any of the changing winds, for a small little company with 2 users and strict requirements?
All the new tools coming out, go against the business value of programming. You are spending your client/companies money, to over write software, charging them more, just so you can feel like a software Jedi. When I write software for my company, I make sure it works. I check for bugs. And I release it. You'll never see me writing overly complex code for a piece of software that has one simple use.
Try to remember your clients money, and try your best to write good, stable software, using good techniques, but quit over complicating it. You're going to put yourself out of a job if you keep taking a month to write a contacts database.
Writing code with high business value, in other words, getting more done in less time, is important to do.
Important
However, more importantly, talking business value. In my less experienced days, in requirements meeting, I bet I sounded like a little kid. As I talked with the stakeholders, I kept saying things like:
"Yeah I can do that! We can use ASP.Net with a SQL Server backend, then using the new SQL Server CLR features we can write our functions in .Net!"
Me: "Lets upgrade this project from .Net 2.0 to .Net 3.5"
Client: "Why?"
Me: "It's newer. Better"
Client: "How?"
Me: "Its better. It has new features."
Client: "How will it make our already great solution better?"
Me: "uhhh, I gotta go"
Between programmers, this all makes sense, and its exciting. To clients, you look like a fool who just wants to spend money for no reason.
If you want to be promoted to Project Manager, or if you ever want to move behind being the programmer (Monkey) you need to learn to focus on business value.
Your meetings should never go to technical. To get the job, or to impress the executives, you should always speak in terms of business value. This makes you look smarter and more capable. For Example:
"I think we can take advantage of some the new features in the .Net programming language, to speed up development and get this project out quicker then we originally anticipated. On top of that, we have a few more ideas on how to increase the efficiency of the users, by adding a couple of smaller features. "
Right there. Nothing fancy. Shows the stakeholder you are concerned about their time and money, and you want to do the project right, and have an idea of WHY you are doing the project. Programmers get so into the program, they forget WHY they are being told to make it.
Use percentages. "We think by implementing bar coding, we can reduce employee time on finding products by 30%"
Speak numbers, speak percentages. And know when to use which.
To get ahead, and you have to sell yourself, and your abilities. If you ever talk to salesmen, they'll agree, don't confuse your customers. While you are blabblering about all the cool stuff you can do, then are thinking, "oh god how much is this going to cost me?" Be confident, speak to them about how your software can help them. Then, when you get the job, go write the software, and don't spend a month on making it .5 seconds faster.