Geeks , Suits and Their Database Choices


Who chooses the database for an application? how do those decisions get made in a company ? Is it a suit or a geek or both ?

Conventional wisdom says geeks are the best qualified to decide on a database, and suits are better for selecting applications – especially packaged applications. I think the conventional wisdom is still largely true – but would add that suits have a more important role to play in selecting a database today than say a decade ago.

Say, there is a conversation happening between a suit and a geek about budgeting for building a custom order management application . And to get to my point quickly (?) – lets say the last remaining question on the table is which database to buy. Since it is a technical decision, the suit is mostly looking at the geek to start the thought process.

BEGINNING OF THE FICTIONAL STORY

The geek says – “well, it is a transactional application – so unfortunately we cannot consider these modern technologies like MongoDB which are not ACID. We should consider one of the traditional relational databases.”

Suit asks “what does that mean in terms of time and money?”

Geek : “Oh these things are expensive. Think big $$. We probably need to nail down schema design and put some strong change control in place for the project.  Once we start development, schema changes will set us back big time in schedule. Probably best to stick to a waterfall methodology. On the bright side – there are plenty of people who know this technology, and there are many tools and utilities to manage it”

Suit asks ” err…as you know, we don’t exactly know what to expect from customers since it is a brand new market. Can we deploy quickly and then change as we learn more?”

Geek : “I hear you – and if it was not a transactional system, I could have saved you a lot of time and money by choosing something way more agile and less expensive like MongoDB. See for order management transactions, you need this thing we geeks call ACID. We get that only with these expensive relational systems which have been around for decades. We have done a lot of these projects on relational . With some good project management discipline – we can deliver the first code drop on the date we planned even if we have to do it in a waterfall and not agile as methodology. But the iterations you want as we learn more – well that might be the thing that is not easy to accomplish. Once we nail down a schema , and we learn months later that we need to change it, it is not very easy to change in short time”

Suit : ” ok got it – not ideal, but then if you tell me there is no other way then we should go with your recommendation. Lets revise our business plan to make it realistic with what technology can do”.

Geek : “ok – looks like we have a plan. I will call a few vendors and get quotes and will work on a project plan”.

THE END !

These kind of conversations happen all the time in enterprises around the world – I have participated in many of these as a suit and as a geek. Neither the suit nor the geek said anything wrong in this fictional conversation above. However what is interesting is what they DID NOT say – and those nuances could have completely changed the climax of this story, and maybe in some cases saved the business a lot of time and money.

Taking MongoDB itself as an example – it is not correct to say “its a modern NoSQL database, and it is not ACID”. MongoDB is ACID within a document . And a document can be quite rich in what data it holds. An order – something that in the relational world is made of a header table, and item table, a schedule lines table, and many master data tables for holding names and addresses and so on – can be held in one document, mapping to one object in the application program. Documents can be nested too . So while MongoDB is not ACID across an entire big sharded cluster – not many apps really need it to do so either. If the application needs multi-step complex transactions – by all means consider a relational DB for persistence, but if not – there is usually a way to make it work nicely in a non-relational DB too (often with nice side benefits like scaling horizontally and keeping data well organized for access using geo tagging, as is the case with MongoDB).

The big questions that were missed in the fictional story above are specific details around business priorities and business logic. Lets consider the simplest case of any order management system – making sure that orders match quantity of finished goods available for sale. It is totally possible that there is only one widget to sell and two customers see it on their screens and want to buy it .

The geek might want the database to make sure only that one customer gets to buy the widget – and the other customer should get an error on his screen. And hence the geek might make a recommendation that a relational DB with fully ACID functionality is the right persistence layer for this scenario.

However – the Suit might think rather differently from the geek, if only someone asked him !

Case 1:

I always want my customers to place an order, even if there is an out of stock possibility. In case I don’t have stock for that customer – I can find it from somewhere else. Or I can make it up to him with a discount for something else. By keeping the customer happy – I have higher chances of getting repeat business. Maybe he was planning to buy this widget and a necklace for his wife – if I did not let him order the widget, he might have probably been annoyed enough to not order the necklace either which is more profitable for me.

What is a big priority for me is to make sure I get this app online at the earliest and keep tweaking it till I get it right. I also want to make sure the user gets extremely good response time on his browser anywhere in the world.

Case 2:

The reconciliation effort of having 2 customers both ordering the last widget is a horrible idea for my business (say I am selling antiques where no replacement exists for a piece)  . My customers actually understand that I sell unique things and that they need some luck and not just money to buy my wares.

That is my priority – I can live with changes that take a little longer to implement, given they are few and far apart.

ENDCASE

What we discussed above is just one of many tradeoffs in an application’s design – albeit a very common one. The devil is in the details. Those important details do not come into light without geeks and suits sitting together and understanding the business priorities and trade offs before choosing a database.

A database is a foundational component of an application. And unlike a decade ago – now there are plenty of choices of databases. If our fictional conversation happened in 80s or 90s, probably we would have picked a relational DB as the answer in either case. And since that was the case – there was not much of a reason for geeks to have any deep conversations with suits to find the best database for the job. That is also why databases are now a $30B plus market – customers did not have much choice and all applications worked on relational databases even if they were not a perfect fit.

Not any more – now a customer can choose whether to use SQL (still plenty of great use cases for SQL exist) , or they can choose a more modern database like MongoDB ( or others – there are other choices too depending on the nuances) for other requirements. But either way – to exercise the bounty of choices, it is imperative that geeks and suits both work together to find the right database.

What would be cool to see in a modernized SAP Business Suite ?


I grew up as a consultant in SAP R/3 – programming and configuring several modules , across many continents and for a lot of customers . As I see the excitement build up for SAP Teched next week , I keep thinking of what more SAP can do to make the ERP system more modern .

I know a lot of people think moving ERP to SaaS is the answer . I don’t think that needs to be a priority for SAP at all . Even if SAP had a super duper SaaS ERP today , I don’t know a lot of SAP customers in America or Europe with “wall to wall” on premises ERP who will jump in with both feet . SaaS is a good long term option – but they have a lot of time to get there for core ERP . If at all SAP builds a grand new SaaS ERP – I think they are better off selling it to net new customers and not to instal base ECC customers .

Vertical apps – given SAP has 26 or so industries they have solutions for – seem like the most logical answer . But those are also incredibly hard to build . So I am looking for what horizontal functionality could help modernize the suite .

What was the original message of ERP? In the 90s – it was to give one view of your business . SAP ECC is an incredibly complex and comprehensive system – and it has all the data anyone would ever need . But – it doesn’t give “one view of business” . SAP can create a financial statement for a company code or a profit center in ECC , but that alone does not make “one view”. It is an important view – but only a limited view . A sophisticated “one view” needs to be built custom at each customer today .

It is easy for a user to drown in data in a Buisness suite. Imagine a world where the CXOs can look at a financial statement , which shows exceptions that need attention and they can just navigate to that one transaction that caused that exception . That itself will get them drooling . Now imagine if they can also get prioritized recommendations of what can be done to fix the exception ?

Suite has all the information a business user needs – and an excellent security model to go with it . What is missing is flexibly organizing an enterprise view of a slice of the business and seeing the exceptions . There are many parts of suite that facilitate drill down today – but that is not exception based . You need to drill down endlessly to find the issues . That is when users give up , consultants make a living and MS excel becomes default answer .

What about the lay user ? The biggest problem for a lay user in ERP is searching for information . If an AR clerk knows an order number or a customer address for a shipment that wasn’t paid for – she will need to know specific search helps or reports to find related information . If you look at a standard selection screen on sapgui – you probably won’t expect a lay user to find a way to use it meaningfully . Making it html5 doesn’t solve it – it needs a new UX from scratch to make a difference . Why not give a system wide free form search that all users can use ? Suite has an extremely good data model – granted it has meaning only in ABAP dictionary and not at database . But there is a way to make it work – so why not do that ? Just for search alone – I am sure there are customers who will pay a premium .

What about less tables in data dictionary and less data footprint due to compression ? Geeks like me absolutely love it – but with storage prices going down steadily , and infrastructure getting commoditized – it doesn’t come across as a compelling message by itself for a buyer . At best – the nested tables and less data should be positioned as a way to get to better usability features in future .

While on the topic of simplification – we should also remember the reason SAP became popular was the ability to extend standard code with custom ABAP code. Back in the day it was user exits – and then many other things came in as technology improved . But there is a problem with user exits in general – most of them are at a line item level of a document . This means a database cannot help speed up the code since the logic needs to be executed in abap server in a loop for each line . Will “run simple” mean that suite will now have a lot of additional BAdIs that will understand set operations ? That would be super cool .

Technical simplification is of little to no interest to business – and SAP messaging and product strategy should reflect that .

In the same vein – when people think of a modern suite helping them close books faster , there needs to be a sensible expectation . Not all parts of suite are real time . And even when everything is optimized to be real time – there are things like depreciation that only happen periodically . So while it is correct to say close will be faster – close itself won’t be real time for near future .

Another aspect of faster close needing an expectation setting is when we think of end to end processes . When we close books – there are things like consolidations and inter company eliminations and so on that need to happen. Those don’t always happen in suite . So they need an external system talking to suite and that means that even if suite is real time , you can’t exactly have a real fast close as a business process . This is all still better than the slow closing process today – but if customers have an unreasonable expectation of real time close etc, they will be severely disappointed .

What about good old reporting ? This is the biggest miss for SAP suite today in my mind . SAP has all the knowledge and IP and technology to embed BI in suite apps . Yet we still see the same abap reports today in ECC that I have used in 90s when SAP had black and white screens . Hana live would be a whole lot more palatable to customers if there was BI content on it . I hope one day we will start seeing SAP bring these two worlds together .

What about Hana enterprise cloud for hosting ERP ? I don’t think SAP will be a great data center company and hosting margins are not comparable to software margins . A Management utilities layer built by SAP and licensed to partners who are already in infra business seem better to me than running infrastructure themselves . The IBM announcement seems to be in this direction and I liked it .

I make a lot of fun of “social” and it’s fluffiness . But I will be the first to admit that in the context of ERP , collaboration is actually the killer functionality – right after search functionality . Vast amounts of time and money is spent on rigid workflows and email and calls today and it is the epitome of inefficiency around ECC users everywhere . SAP already has Jam – they just need to sell it everywhere .

Last point – APIs . A modern suite should be able to provide a rich set of APIs to developers to build quickly around it . HCP is already a recommended approach to build extensions . The Apigee partnership provides management . ECC already has a lot of BAPIs (granted – they have God awful interfaces that only abap developers understand, and that needs to be simplified ). All the raw ingredients are already there – including BI and ETL . All that remains is a bit of engineering to make them work together and build a message around using HCP for the install base customers . SAP has a huge developer ecosystem that can make use is all this . I am betting on my friend Steve Lucas and team telling us more about this soon . There is nothing about SAP today that makes me more excited than Hana Cloud Platform .

Rant over and I wish all my pals an exciting time at Teched . Have fun ! I heard that the Keynotes are going to be run like never before 🙂

It’s about time we set a higher bar for analytics


First off – I have no interest in being nuanced here about data vs information , big data vs regular data , BI vs Analytics vs Reporting and so on . Use the terms you like in the following rant . If all we missed today was the nuance between these terms , we would have been in a better place already .

There might not be a more tired part of technology out there today than Analytics . It’s been a top CIO concern for as long as I can remember . It is a top concern for me personally as an executive running a business at my employer . There are very few people who are truly happy with their ability to make sense of data . And no wonder BI companies young and old are all thriving and marketing their hearts out that they are already in “next gen”.

Big data – and the Gartner 3V model – brought good focus on information management side . But it did not exactly democratize “data based decision making “.

We don’t need to get into high volume or velocity or variety of data to see the failings of today’s BI . The thought leadership in analytics is along the lines of “ask good questions to get good answers”. This is a much needed part of analytics for sure – we should have the sophistication in our systems to answer the best and most complex questions . However – that should be more of a table stakes thing in the world of data .

For analytics to take a leap into “next gen” – pretty visualization is not enough either . It is a little more along the way into future than the ability to answer complex questions . An answer is not good if the user does not understand what the system is trying to say . So yes – let’s find more and more ways to visualize data . It’s a good thing that some companies got started with it and are making progress .

Before I leave the topic of visualization – I have to say this . For a given question and its answer , computers must be able to provide a default representation that is the “theoretical best” , without a user being asked to create a representation from scratch every time . By all means – allow the user to change things around , but there is very little value in making a user guess what is the best representation visually . The type of chart , positioning in screen , scale , default filters are all things that software should be able to figure out by itself . Personalization is important – but again it should be treated as table stakes by now .

But there is a gap that still remains at the core . If the best we can do is “ask good questions to get good answers”, we are still stuck in the world of art , and refusing to move a bit closer to science .

My hope is that we start building systems that can
1. look at available data and start by
2. offering clues to what kind of questions can be asked of it ,
3. what kind of meaningful patterns the software can be seen already ,
4. and what kind of data would be great to add to currently available data set to make even better inferences .

Sure , the person who can ask better questions will still retain their edge in making better use of the data – but if the system can prompt decent questions to users , I think this whole promised land of “data driven decisions” would be a lot closer to where we are now than if we inched along the current trajectory .

This might be really hard to do as a generic horizontal platform capability in near future . But if vendors focused on taking this approach for targeted vertical apps , a lot of these challenges can be mitigated . Such learning can then be used to build horizontal general purpose solutions over time if it makes sense .

It all starts with setting a higher bar of expectations of analytics – incremental innovation won’t cut it .