posted 13 years ago
Much of the time, you will not be writing all the code. You/your team will work on the GUI, and another team will work on the back end/database side, for example.
You say to the database team "we want a bunch of customers...how can we get them?".
The other team could say "call this method, with these parameters, and we will return <something>".
If the database team says "we will return an ArrayList", then you (and they) are stuck ALWAYS using an ArrayList. In six months, the DB team may come up with some brand new way to list the elements that is faster, smaller, better...but they can't give it to you because you are coded to expect an ArrayList. You could spend weeks re-coding to use a LinkedList, testing, debugging, and releasing, costing many thousands of dollars.
However, if they said "we will return a List", they can return an ArrayList, a LinkedList, or anything else...and you don't have to touch your code. It will just WORK, and you can reap the benefits for free.
Which sounds like it makes more sense from a business perspective?
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors