High level vs Low level approach to development
We had a discussion in the virtual office earlier today when we were working together to change a report in one of our applications. The report output used Portable Document File (PDF) format and we use a library called fPDF that allows use to create PDF documents via PHP for web based application and one of our developers asked:
Why not use a library that can convert the HTML output into PDF?
It's a good question and can certainly be done, relatively easily, when the HTML is well structured and created using HMTL5 / CSS3, but it has it's limitations.
Using a PDF Library like fPDF allows developers the control to output and allows them manage virtually any aspect of the document, where as a conversation of HTML to PDF doesn't.
Taking the high / low road
I said that we need the control of the output and using a pre-built component or library to manage the conversion would take away functionality. I went on to explain the differences ...
Using a low level approach, you have to define and create the universe in order to build anything, but allows you to define the laws of physics within the universe.
Using a high level approach, you use a universe that someone else has created and are constrained by decisions the previous programmer made, when defining his laws of physics within his universe.
So whilst low level takes longer - after all, according to Genius it took God seven days - it allows you to define the laws of physics (or rules), rather than using someone else's. It reminded me of a project I developed back in 2009; we chose Java J2EE to create a desktop application for creating cash flow scenarios, using data extracted from various accounting software. We need to create a user interface that worked like a spreadsheet, using pivot tables and all sorts of wizardry that chartered accountants like to use for projecting cash flow, enabling business managers to make informed decisions.
We made an important decision, early in the development, to create a custom model that extended the Abstract Table Model used by Java Swing Tables (which, whilst would take longer to develop) and would give us more flexibility and enable us to create custom functionality that extended that native behaviour. It was a good decision and saved time in the long run.
Development decisions can sometimes seem innocuous, but development teams have to consider how a solution might be used and / or extended over time, so great care should be taken when making decisions of using pre-built code or libraries. Short cuts will often come back to bite you in the arse!
If you like to get in touch, please telephone our offices on
+44 (0) 1364 582017 or complete our
on-line form and we'll get back to you
as soon as possible.
Stay in touch with what we're up to at Ayrmer Software by following us on one of our
social media feeds: we'd be delighted to welcome you as a follower on
become friends on facebook
or add us to your circle on Google+.
You'll also find us on Linkedin, of course.
Our expertise lies in our ability to interpret your business requirements and provide a solution that meets your needs; find out how we achieve this level of understand. It's what makes us different ...
Find out about how we approach software development to ensure that the solution matches your business requirements.
Our philosophy is based upon the needs of your target audience and understanding their requirements that ensures we deliver an intuitive solutions that focuses on the User eXperience (UX), whilst developing lightweight, robust, secure on-line database applications.
Legal information required by the Companies House Act in the United Kingdom that include: place of registration, registered number, registered office address.
Find out more about how we ensure that we have a clear understanding of the scope of the project, enabling us to present a solution that will meet your business requirements.