Since filtering is a frequency selective process, the important thing about a digital filter is its frequency response. The filter's frequency response can be calculated from its filter equation: Where j is the square root of minus one (defined as a number whose sole property is that its square is minus one). The frequency response H(f) is a continuous function, even though the filter equation is a discrete summation. Whilst it is nice to be able to calculate the frequency response given the filter coefficients, when designing a digital filter we want to do the inverse operation: that is, to calculate the filter coefficients having first defined the desired frequency response. So we are faced with an inverse problem. Sadly, there is no general inverse solution to the frequency response equation. To make matters worse, we want to impose an additional constraint on acceptable solutions. Usually, we are designing digital filters with the idea that they will be implemented on some piece of hardware. This means we usually want to design a filter that meets the requirement but which requires the least possible amount of computation: that is, using the smallest number of coefficients. So we are faced with an insoluble inverse problem, on which we wish to impose additional constraints. This is why digital filter design is more an art than a science: the art of finding an acceptable compromise between conflicting constraints. If we have a powerful computer and time to take a coffee break while the filter calculates, the small number of coefficients may not be important  but this is a pretty sloppy way to work and would be more of an academic exercise than a piece of engineering.
