Using NoSQL? Architect for Reporting, please!

As Product Managers, we are always hungry for information. Particularly information that's actionable. The best and most readily available source of this information is your own product. To do that you need to make sure your product has telemetry built into it.  After all, how can you  manage your product if you don't know how it's being used?

I've worked on a number of products that didn't have any telemetry built into them initially.  When it was finally integrated, it was as an afterthought.  I'm here to tell you, not getting intelligence out of your own application is one of the biggest sins a PM can commit.  But it's not just our fault; unfortunately, A lot of engineers won't think about building this telemetry in either.  As PMs we need to make reporting, telemetry, and quantitative analysis of product performance and feature utilization part of our stories and epics.  That's not the only hurdle though...

Database challenges

During my career I've often worked with highly transactional systems. In the early 2000s that meant a relational database that was configured in an OLTP manner. These days though, that usually means a NoSQL database. While the latter are wonderfully proficient at handling transactions, they often are lacking in reporting tools. 

As I mentioned earlier, in many cases reporting is a secondary concern for engineers when they are architecting a highly transactional system. Their primary concern is supporting a high throughput, not giving you reporting.  As such, they're likely to choose a database provider based solely upon its performance characteristics, not on its reporting connectivity.  That choice might put your telemetry at risk because a number of NoSQL databases have a pronounced lack of support for reporting.  MongoDB didn't add support for reporting until 2015. On the other side of the fence, BI and reporting tools (Pentaho, Cloud9Charts, etc...) are just starting to add support for NoSQL databases. In most cases you are still stuck having to ETL your data into a relational database.

So if you go the NoSQL route, make sure that you make your own telemetry a priority. After all, no one likes flying blind.