Programming Standards | Our Methods & Techniques
By far the most commonly used method of software development in Hong Kong is what’s known as Test Driven Design, or TTD. The basic concept here, is that the software developer will need to generate an initial app design concept and gain a thorough understanding of the requirements before writing the code.
Typically, this begins with the creation of unit tests at the outset, that are later used to test that the individual components match the initial brief. The tests normally test specific functions of the code, so where a test case involved making a teller deposit onto a client’s balance then the test would involve this process. Results would determine whether the code was fit for this purpose or required further development.
With the tests designed well before the code is written, it is possible for app development teams to remain aligned with the target functionality of the given app. With the code completed it will then be put through a series of test frameworks to ensure that each element is doing what it needs to in the context of the platform. This process helps developers to edit and change source code, enhancing its functionality during the build, whilst remaining confidant that the functionality is on point.
It is important to remember that these tests are not done with any kind of real data or access to wider parts of the software at this stage. Typically, mockup elements, and data is generated, created to simulate real world environments on a localized infrastructure. By separating out test elements from production we can ensure the safety of production systems and production customer data during the deployment phase.
Often these tests are paired with another app development style referred to as “Pair Programming” in test driven design models. What this means is that two different app developers will take turns developing individual parts of a software application, providing feedback to each other, in doing so minimizing errors. The two developers in question gain valuable software development experience from each other and glean important insights into how the other works, increasing their level of experience. Adoption of this approach can lead to a higher quality end-product, due to the level of quality assurance and periodic review.
Agile and Waterfall project
Code Libraries, Frameworks and Patterns
Another thing to bear in mind is that app developers will, to simplify the project, incorporate many different frameworks, code libraries and patterns into the software. As you could imagine, developing many of the same components over, and over again is extremely tedious, and not a valuable use of a senior software developers time. It is far better for those core app developers to work on core components of a program, which will add greatest benefit to the project. A good way to cut down the time spent on monotonous tasks is to recycle different parts of the code, using the same elements to perform specific functions each time. This is standard practice amongst our software developers here in Hong Kong and allows them to maximize efficiency during an engagement.
There are many different types of “reusable” code, and the standard course of action is to maintain a library of different code components incorporating frequently used functions. These modules will help reduce the time spent addressing common scenarios, such as caching data or handling exceptions. Often, our software development team will purchase libraries from third parties where they are confident these code components will perform as expected and reduce development time.
However, there will always be circumstances in which a pre-built module would not be a viable solution to a given issue. In this instance software developers are required to write the code themselves, from the ground up. Later, integrating the bespoke code into the wider platform, and carrying out the appropriate level of testing. This is where talented app developers shine through in an organization. There are notably other ways to leverage upon the work of others to benefit a software development project, one such method is referred to as software patterns.
Conceptually, software patterns allow industry experts to validate their experience, with others in the development field. It is likely that where you are encountering a problem with a piece of code that someone else has also experienced then same problem. Where many industry experts and developers have come together and reached consensus around a solution to a problem, then it may be something that you can leverage to your advantage. Software patterns are not always related to a specific piece of code, but rather more generally approaches to a given set of challenges.