I’ve learned a lot in this project, yet I know my coding skills are far from perfect! Here are a few things I had the opportunity to learn in the KpiTrackr application.
- How and when to use Polymorhpic Associations
- Displaying Time/Date information in a user-friendly format using Moment.js
- Using the Google Charts API
- How to use Omniauth with Devise to log users in via external services. Google in this app.
- Uploading images via CarrierWave and storing them on Amazon S3 for Herkou deploy.
- How to Launch a Basic Rails App on Heroku + Debugging Heroku Deployments
I built KpiTrackr to make it easy for companies, teams, and individuals to collaborate around their key metrics. In my experience I found that, while automated visual KPI dashboards are faster to report from on week-to-week basis, this method of tracking led to a clear lack of a sense of metric ownership among team members. Thus, we often moved to a spreadsheet – much like majority of companies today. Spreadsheets were great for commenting about findings and highlight significant changes but terribly time consuming when it comes to adding or modify KPIs to an already very complex sheet structure. Massive spreadsheets that are difficult to navigate, particularity for heads of organizations who thrive on condensed high-level information. After a while the raw numbers across the numerous rows and columns simply fail to motivate employees, which eventually turns success tracking into a, tedious, non-collaborative environment. Spreadsheets simply don’t provide a platform to discuss high-level data-driven strategy.
So I set out to build an app that would provide employees with a sense of ownership through goal-oriented metrics tracking. Keeping KPI updating manual helps ensure that employees are actually looking at, engaging with, and analyzing their metrics. On top of this, manually updating metrics ensures focus and specialization within an organization because no one should have to update 50 different metrics since no one should ever have 50 KPIs. As a company, your metrics should be ever changing and highly adaptable, but they should also always be narrow and focused. For this reason, I’ve directly tied each KPI to time-based specific goals, where each KPI is directly owned by either a company, team, or individual. If the owner of a KPI is unable to influence it then either you’re tracking the wrong thing, you hired the wrong person, you assigned it to the wrong person, the owner of the KPI is doing too much, your employee needs additional training, or you need to hire more people. Everyone should be able to influence their KPIs, especially since companies are rapidly moving toward an employee promotion model basing off of metric performance. This sense of contribution keeps teams focused and motivated for a culture of data-driven innovation. Not to mention, that this sense of purpose is a quint-essential element retaining Millennial talent due to their search for meaning.
I built this app with the intention for all employees and team to be able to easily understand one another’s KPIs because this delivers a 360 perspective. This enables the development of cross-functional teams because it enables employees to better resource collaborators for projects and permits managers to better understand their employees’ work. Progress towards KPI goals are clearly displayed as percentage completion and reactive charts that change based on target KPI goal updates make interacting with the app thrilling. High-level to granular views of the organization as whole, teams within the organization, and individuals within those teams. By requiring Kpis to be goal-oriented, KpiTrackr instills metric ownership, while the automatically generated progress charts created from the manual performance updates provide a sense of satisfaction through visual representation.
I’m pleased to present the MVP for the KpiTrackr app live on Heroku.
I don’t know if I’ll continue to expand the features in the future but this app is intended to eventually allow the users to invite team members to create accounts and then connect those user accounts to the related company. In this domain I can envision having a robust permissions system, user profiles, and interactive searchable index pages. Currently all features can only be accessed via the super company user account to create and interactive the models.