Do You Really Need Permission?
You can often give yourself permission to adopt many agile techniques. For example, I sometimes run into people who don't refactor their code because they think that management won't let them. Refactorings are very small and simple changes, such as renaming an operation or reorganizing it into several more cohesive operations. With refactoring support in most IDEs, it's as easy as writing a loop or comparison statement. Surely you're not asking permission to write loops, so why would you ask permission to be allowed to rename operations? Similarly, other productivity-enhancing programming techniques, such as test-first design (TFD) and continuous integration, can be adopted without getting senior management involved. In fact, chances are pretty good that they'd be annoyed with you for wasting their time with such a trivial decision and might simply deny it out of hand. In summary, pick your battles wisely, and when you do decide to champion a cause, make sure you know how to effectively pitch your idea in "management speak."
A Financial Lingo Primer
One of the most important things that you can do as an IT professional is to learn and adopt common terms used by senior management and business stakeholders. Understanding these terms will improve your ability to communicate and will increase your appreciation of non-technical issuesthe best developers know that there is more to development than development.
• Diminishing Returns. As more investment in something is made, the overall return on investment (ROI) increases at a declining rate until it reaches a point where it begins to decline. For example, if a diagram isn't yet good enough for the situation at hand, then you can keep working on it until it is good enough, at which point any more work on that diagram is a wasted effort. Although the continued work still adds value, it doesn't add as much value as when you first started because you likely addressed the critical issues right away. The concept of diminishing returns is critical because it enables you to recognize that it doesn't make sense to try to "complete" a work product.
• Discount Rate. The rate at which future cash flows are adjusted to reflect the time uncertainty of moneya dollar tomorrow is worth slightly less than a dollar today. Minimally the discount rate is at least the expected rate of inflation and it is required to calculate the NPV of a project.
• Internal Rate of Return (IRR). The discount rate that makes the project have a zero NPV. For a project, the IRR is equivalent to the interest rate at which you would need to invest your money to get the same value as a project. IRR is used to compare the value of projects. For example, say you have a project that initially cost $500,000 and generated net benefits of $300,000 in the first year, $400,000 in the second year, $250,000 in the third year, and $100,000 in its fourth and final year of production the IRR is 45.3%.
• Net Present Value (NPV). The NPV of a project is the sum of the present values of the annual cash flows (the revenues less the cost) minus the initial investment. The cash flows are discounted to take into account the time uncertainty of money. For example, with a discount rate of 10% per year, one dollar a year from now is only worth $0.91 today (1/1.10). NPV is a critical concept because it enables you to compare things that have varying initial costs and cash flows.
• Opportunity Cost. This is the cost of passing up a choice when making a decision. For example, if you could have spent $10,000 in additional testing and avoided a mistake that ended up costing you $15,000 to fix, then the opportunity cost of not testing was $5,000 ($15,000$10,000). The concept of opportunity cost enables you to communicate the value in taking, or not taking, a course of action.
• Payback Period. This is the length of time required to recover an initial investment through the discounted cash flows generated by the investment. The shorter the payback period, the lower the financial risk of a project.
• Return on Investment (ROI). ROI is the number of times the net benefits (revenues minus costs) recover the original investment. The greater the ROI, the better the project. For example, assume a project initially costs $500,000, generates revenues of $250,000 a year with an annual operating cost of $50,000, and runs for ten years. With a discount rate of 0% the NPV of the project is $1.5 million (($250,000- $50,000) x 10 - $500,000), therefore, the ROI is 3. With a discount rate of 5% the NPV is $1,044,347, therefore, the ROI is 2.088.
• Time to Market. The length of time it takes to get a product from idea to marketplace. In the case of a software development project, the time it takes you to get your system into production. The longer the time to market, generally, the greater the risk.
• Total Cost of Ownership (TCO). TCO is the total costs over the lifetime of a work product. TCO captures the true costs of an item, such as a document, component, or system, not just the initial investment. For example, for the aforementioned system, the TCO with a discount rate of 0% is $1 million ($500,000 + 10 x $50,000) and with a discount rate of 5% the TCO is $886,087.