I was talking with a coworker who focuses on Business Intelligence. He described the job as taking something boring like accounting (sorry accountants) and making it sexy. Like a professional stylist for a career. I thought that was pretty funny, but as I ruminated on that idea, I realized that my customers have no idea what I do for a living. How could I create a dashboard that keeps me on the road while I’m hip-deep in a new project, and still provide insight for non-technical customers.
1. User Tasks- Looking for the old TODO in the source code. This lets me know if (I/my team) trusts the code that we are writing. If the codebase is littered with TODOs and HACKs then it’s probably time to do some refactoring to make sure that we are properly addressing all requirements and side cases.
2. Warnings- Of course, every time you build you will be forced to close out any errors, but what about warnings? Your code can run great even with thousands of warnings, so what is the point in closing warnings? I think it comes down to attention to detail. I don’t adhere to every recommended practice every time, but if I’m going to break the rules, I don’t mind adding a justification to explain the exclusion.
3. Resharper/CodeRush notifications- If you aren’t using a refactoring productivity tool in Visual Studio you are wasting your time. Gamers have precision joysticks, devs have VS plug-ins. If you’re already using this tool, you know that refactoring opportunities are highlighted. Are you taking advantage of this low-hanging fruit?
4. Unit Tests- I rely on my unit tests to get me through the day. We all write pseudo-code or prototypes to try out ideas, a lot of this code can be reused. Once your projects have a baseline of unit tests, the code coverage stats in Visual Studio (Tests | Windows | Code Coverage Results) can identify areas of your codebase that could be further exercised with unit tests.
5. Code Metrics- The Code Metrics feature in Visual Studio (Analyze | Calculate Code Metrics for the Solution) provides a Maintainability Index to identify possible problem areas. Additional metrics include Lines of Code, Cyclomatic Complexity, and Class Coupling.
These metrics provide a little more insight for customers, team members, and managers who want to see the data behind a technical risk, or progress report. This dashboard can also help us stay focused on the path ahead as we guide our projects to success.