Let's say we have a table of users which stores:
- Id,
- First name,
- Last name,
- Email,
- Address,
- City,
- Phone, and
- Mobile
And let's assume that our client needs the following information, at separate points:
- User name,
- User name and email,
- User postal address, and
- User phone number
We can obviously develop a set of functions (in the service layer) like:
- getUserName(id), which would return first and last names,
- getUserNameAndEmail(id), which would return first and last names, plus
email,
- getUserPostalAddress(id) ..., and
- getUserPhone(id) ...
or we could develop just one function:
- getUserInformation(id), which would return all user information regardless of what is needed where.
There isn't any obvious technical reason to choose one method over the other as both have clear merits: The first way, we only transfer the data we need from server to client, but the second way we only build one function and reuse it every time we need any user information.
It's a question of data volume and bandwidth. If the client and the server are connected via the internet, and our data are large then we should probably choose the first method, as we don't want the customer to experience any unnecessary lag. But if the client and the server are on a local network, or any high speed network then the second method is probably the best way to go, as we gain some development time.
Of course our data may be extremely large, and the first method be preferred even on a local network, so to clearly understand why your development team chose their practices you must first understand the data you are dealing with. Finding (asking for) some concrete metrics would be a good first step. You will most probably discover that your fat data solve more problems than create.