The Lexitech approach to software development
My approach is simple but effective and achieves
- better handling of changing requirements
- better cost control
- better tracking and management of progress
- better matching of expectation to functionality delivered
I use a pragmatic method distilled from relatively recent ideas in software engineering which are proving
highly successful:
Proceeding in a series of short cycles, the first of which involves working
with you to understand what you want to accomplish, I agree terms of reference and construct a set of
envisaged activities. From the outset I work closely with you, delivering incremental parts of the
application at every stage so you can see it as it progresses. This allows you to provide
feedback and increases the chance that the final deliverable is what you want (which is good for me
too ...).
This method is mostly inspired by Agile Development. Industry experience has shown that the traditional approach to software development, sadly, often leads to poor quality and failure. Agile techniques are increasingly demonstrating their value: they ensure the underlying computer code is built on a solid, structured foundation and have substantial benefits for future maintenance and enhancements.
I view a number of concepts as fundamental to the whole process. Amongst these are:
- Unit Testing with R testthat, JUnit, Ruby MiniTest and related practices such as Test-Driven Development (or TDD), popularised by Kent Beck with his book Test-Driven Development
- Refactoring – a controlled technique for improving the design of existing code, popularised by Martin Fowler with his book Refactoring
- Build automation using tools such as Rake
Refactoring (together with a good test suite) is critical to being able to respond to changing requirements whilst ensuring that the working parts of your application continue to work.
I draw heavily on frameworks and packages freely available in the Open Source and Free Software domain. The open source concept relies on community involvement in software source code. This has many advantages, one of which is to leverage work done collaboratively by many highly skilled developers around the world, free of licensing costs, and so reduce the overall cost of development to you. It also means I can build high quality applications significantly faster than would otherwise be possible.
Lexitech is temporarily dormant whilst I am working on a PhD at the University of Bristol, researching faster simulation methods for sample size calculation in Multilevel Models.