Our business analysts pushed hard to collect data through a spreadsheet. I am the programmer responsible for importing that data. Usually when they push hard for something like this, I never know how well it will work out until a few weeks later when I have time assigned to work on the task of programming the import of the data. I have tried to do as much as possible along the way, named ranges, data validations, etc. But I usually don't have time to take a detailed look at all the data and compare to the destination in the database to determine how well it matches up.

A lot of times there will be maybe a little table of items that somehow I have to relate to something else in the database, but there are not natural or business keys present that would allow me to do so. Make the best of this, trying to write something that can compare strings and make a best guess at it and then go through the effort of creating interfaces for a user to match the imported data to the destination.

I feel like if the business analyst was actually creating a data model, they would be forced to think about these relationships, and have an appreciation for the need of natural or business keys to be part of the spreadsheet for the purposes of smoothly importing the data. The closest they come to business analysis is a big flat list of fields, and that would be fine if it were like any other data dictionary and include data types+relationships, but it isn't. They are just a bunch of names. No indication of what type of data they might hold, and it is up to me to guess. When I have pushed for more detail, they say that it is just busy work.

How can I explain the importance of data modelling? How can I tell them what it is and how to do it? It feels impossible, because they don't have an appreciation for its importance. They do however, usually have an interest in helping out in whatever way they can, it's just this in particular has never gotten a motivated response.

  • 4
    This question appears to be off-topic because it is about convincing an analyst about the importance of data modeling. It has nothing to do with with a programming-related task. – Jim G. Dec 4 '13 at 15:11
  • 1
    @JimG. Programm ing is stackoverflow, this is Programm er s, and IMO it is the task of the programmer who is the lead on a particular project to help the team work together effectively. – AaronLS Dec 4 '13 at 17:11
  • This for example, is not a "programming-related task" as it deals with requirements gathering and time estimation, not programming: programmers.stackexchange.com/questions/147937/… – AaronLS Dec 4 '13 at 17:14

Provide your business analyst with a data template that both of you can live with. It's not necessarily his job to do database and system interface design; it is yours.

  • And ours alawys specifies Pipe delimited text file. And we have told them why we do not want Excel files. – HLGEM Jun 28 '12 at 20:41
  • I didn't mean data model in terms of a database design. I meant in terms of business entities. And yes, the interface design should be my job, but unfortunately they get the cart ahead of the horse sometimes and decide to build a data collection interface with a spreadsheet that doesn't take into consideration any of the intricacies of the data model. – AaronLS Jun 28 '12 at 22:23
  • You need to give them some constraints. I can imagine all sorts of difficulties like misspelled entity values that must be merged... There has to be some discipline on the part of the business analysts to give you clean data, but you have to tell them what the rules are. – Robert Harvey Jun 28 '12 at 22:25
  • @AaronLS: Call it business entity model or entity relationship model - in the end there should not be too much difference between them. – Doc Brown Jun 29 '12 at 8:48

Personally, I feel it is much better not to have such a "business analyst" in your team when that person does not have any programming or data modeling background. Ideally, let a programmer who is part of the development team doing the requirements analysis - that will prevent you from a hell lot of communication problems. However, if you can't change the situation, suggest the BA to take a few lessons in data modeling.


Buy the Business Analyst a cup of coffee. Start by asking them to explain to you why the they gather the data in the spreadsheets in the manner that they do.

Its just like writing code, you need to understand the problem you are trying to solve before you write the code to solve it.

A lot of developers often miss this because they feel that technical proficiency is more important than anything else (and this is coming from a developer). Explain to him or her how your approach can help them meet the objective and get the job done more efficiently.

There may be a reason for these spreadsheets that you have not considered. For example, Business Analyst are often communicating with non technical senior management persons (what the developer often doesn't see) and trust me, the essentials of data modeling means very little that audience.

Not the answer you're looking for? Browse other questions tagged or ask your own question.