
Artists spend a great of the time is spent on specific software(s) in order to perform specific tasks. It is important to ensure that the these software are maintained and that the current version is in a stable state.
A lot of the software that are used within the production requires managing and improving iterations when software releases are being pushed out into the pipeline. Before developing tools and softwares having a better understanding of the design will hopefully provide clarity on what is being created and cater to the needs of the user. Planning ahead of time or during the actual production stages involves constant feedback loop from the software RND/pipeline team, supervisors and leads, the artists to continually improve the workflow based on a specific show or department or across all sites.

Flow charts are generally useful to outline what process is being executed step by step. The diagrammatic representations of an algorithm aid in writing programs and explaining the program to others.
Automation and user-testing is continuously ensured when deploying a software on a site-wide release for artists to use and interact with. Making sure that the entire production is not disrupted, that issues that might have occurred are mitigated and provide new features.
Software Development Process Breakdown:
- Requirements Specification
- Software Design
- User-Interface Mock-Up (Drawing)
- Design Review
- Implementation and Integration
- Check Project from Source Control
- Code Review
- Check-In
- Package for Release
- Testing
- Local Install
- Developer Test
- End-User Test
- Installation
- Package Install
- Maintenance
- Ticketing System
Testing
When deploying automated and user tested software it is necessary to make sure that production is not disrupted, new features are provided. issues are resolved and that the deployment of software is continuous. This is enabled by running automated tests on all shows, allowing an opt-in/out artist testing and create new automated tests where coverage is bad.
Testing is absolutely necessary in order to release and deploy the software so that the overall pipeline on all shows are stable. Automating tests can help save resources (money and time) and by user testing bad coverage can easily be pin pointed. Tests can also help differentiate environments and test packages individually and integrated with, preventing regression.
Version Control
Software development is not a linear process. Changes within the development will constantly happen with code modifications, overwrites and removals. Feedback from other developers and testers will also help construct and shape the content of the code. Therefore it is necessary to track the development of the work to ensure that older versions of the code are backed up and stored in libraries that can be revisited at anytime.

When working on team projects you will need a way to merge, share and review work together. Git, which is a distributed version control system, used to track and manage source code development. When cloning a repository remotely a branch can be created and edited locally. The branch will be ready to push and commit to merge back into the repository for review once the changes are tested and everything works.
In order to test the changes you’ll need to ensure that a build package from the root directory of the repository is incremented to the latest version. The procedure goes as follows- you edit your script, repeat the build package command and deploy the latest modified version of the package locally. This cycle continues up until the test works accordingly and the changes are ready to be committed. Which means that the work saved onto the server or submitted for code review is pushed to the repository so that other developers can see it.
Using a web-based version control repository hosting services (like Bitbucket or Github) allow multiple users to remotely work on development projects with no need for any centralised servers. Package management systems will create the snapshot of the changes committed that will merge the branch back into the main repository to be code reviewed and tested by other developers. Branches are pointers to commits which will continuously update whenever you add/remove commits.
A breakdown of the development of a tool that I was tasked to do can be found below as part of my Employer Set Project.