It has long been acknowledged that the development of scientific applications is in need of better software engineering practices. Here we contrast the difference between conventional software development of CFD codes with a method based on coordinate free mathematics. The former approach leads to programs where different aspects, such as the discretisation technique and the coordinate systems, can get entangled with the solver algorithm. The latter approach yields programs that segregate these concerns into fully independent software modules. Such considerations are important for the construction of numerical codes for practical problems. The two approaches are illustrated on the coating problem: the simulation of coating a wire with a polymer.