As an agency grows and its talent reservoir expands, as it has dramatically for customedialabs, so can the challenges associated with a collaborative work process.
On the technical side of project development, work can be distributed amongst several programmers depending on the size and scope of the final product. This distributive work environment can lead to several issues:
Quality Assurance: Quality assurance should be an integral part of the
development process. Detecting issues in software early can result in problems
being more easily managed. It also gives the programmers a “clean slate” from
which to work. However, if the pieces of a project are spread across several local
machines, running comprehensive quality assurance is impossible and running
multiple individual tests is too time-consuming to be productive.
Project Managers Feedback: Project Managers need to be able to see the status of a project at any time without having to ask each engineer what they are working on. This way they can handle issues as they appear rather than discovering problems at the end. If a section of a project is behind schedule and the project manager can’t accurately see the status of the work in a central location, they can’t allocate additional resources to meet the deadline. Because projects are scheduled around several consecutive deadlines, missing one can derail the entire timeline, which, among other things, erodes client confidence.
Client Feedback: Typically, clients provide feedback throughout the development process rather than coming up with every tiny detail during the discovery phase. In a distributive work environment, providing feedback is not feasible for a client if they are unable to see the project as a whole.
Lack of Holism: The lack of a holistic view is not a disadvantage specific to the issue of client feedback. The programmers experience a significant disadvantage when they can’t monitor the health of the code periodically throughout the development process. Building on a healthy code encourages experimentation because programmers can try different solutions and check immediately if they will function correctly and improve the code.
What’s the solution? Continuous Integration.
Continuous Integration means that several times a day, programmers submit any new code they have developed to a common branch of the code base. We use Git to create and maintain multiple branches of our code. We have a Continuous Integration server (Jenkins) that polls GIT for changes in order to consolidate all revisions and additions. It also runs automated tests and, ultimately, deploys the project to an internal location. From this location, all departments, including project managers, engineers and quality assurance specialists are able to review the application. The automated tests and continuous internal review expose any existing bugs and produce a clean build of the program. Throughout the development process, the development code is periodically integrated into the master branch. The final point of integration occurs after a thorough manual test, making the application ready for delivery to the staging/production server.
The process itself is beneficial and, at customedialabs, we have created additional improvements that further streamline the process to make it work to our advantage.
1. Central Location: We are creating a common location where all the projects are deployed and become accessible through standardized pathways. There will be universal internal access to the most updated versions, thus providing project managers with a way to keep better track of where the project is in the development process.
2. Experimentation: We use the system to experiment with new code by creating a new branch, developing custom code, testing the branch on the development environment. If the code functions and adds value, we incorporate the branch into the main branch. If not, we cut it off and adjust.
3. Soft Launches: Because there is always a clean build, soft launches are easily accomplished. For instance, when an internal demonstration is needed, we deploy the project to a staging server that only the stakeholders have access to. This way the relevant parties can see the progress and make informed choices about the steps they want to take.
4. User-Friendly Interface: Finally, we are creating a dashboard that will be the main platform for accessing all the info. This will make finding information quicker and more user-friendly.
The process of Continuous Integration provides considerable advantages to the development teams, creative teams, QA team, project managers, and, most importantly, the client. It unites a distributive environment and productively organizes a whole from the sum of its parts.