A Deep Dive into our Software Engineering Team

Jun 24, 2021 3 mins

Our engineering team is a group of passionate and talented individuals who work hard and play hard.

What technologies do they use? 

The main tech stack the team uses is JavaScript-driven, leveraging ReactJS in the front-end and NodeJS in the back-end. This allows for cross-functional capabilities and interoperability throughout the stack. Javascript is also well represented in terms of the talent pool and more than capable of serving most web application needs today. For more computationally heavy tasks, the ream relies on technology like python for its wide availability of libraries or C# for better performance.

The application is entirely containerized through docker use, allowing the team to deploy quickly in different systems or provide a local testing/development environment that any developer/tester/product manager can quickly bring up. This helps speed up the software development life cycle, which enables them to create working prototypes much faster.

The team has decided on AWS as the infrastructure of choice due to its broad global market penetration for availability and in-house expertise. Being on a matured and established cloud platform allows them to focus more on the product rather than spending time optimizing the infrastructure. Due to the containerized nature of our application, ECS (Elastic Container Service) and EKS (Elastic Kubernetes Service) are primarily used and managed because they allow for easy scalability, high availability, and disaster recovery. The infrastructure deployment also follows the principle of infrastructure as code by using AWS Cloud Development Kit (AWS CDK). This allows the team to migrate and create new environments easily in a different region whenever needed. 

How do they accomplish their daily activities?

As a part of a cross-functional development team, the engineers will participate in a sprint. A sprint is a time-boxed period during which the team needs to complete a set amount of objectives. 

In every sprint, a lead engineer will understand the big picture and break down stories into tasks that other engineers can pick up. A task will have a story point, usually representing the number of days an engineer may require to complete the task. Once an engineer is done with their task, they will be required to make a pull request (code review request) to their fellow engineers. Pull requests will serve as a feature for engineers to discuss and provide feedback on the implemented task. It can also be leveraged to modify the task if necessary. Once a pull request is approved, the task will be marked as ready to be shipped for quality assurance testing. 

The sprint will end with a review, serving as an opportunity for engineers to showcase their completed tasks to the entire team.

What’s our software development process?

The methodology followed within Bambu is the Hybrid Agile model, which combines Agile methods and other non-Agile techniques, such as the Waterfall model. It is often considered an intelligent approach adopting Agile-Waterfall methodologies as this method is able to retain the clarity and maintainability of the Waterfall method while embracing the adaptability and flexibility of Agile.

The first step: Requirements Analysis Phase. 

User expectations for a new/ modified product are determined. This involves recording the needs of the clients and conducting analysis to ensure clarity and completeness of the discussed requirements.

 

The second step: Design Phase. 

A high-level design schematic is crafted and signed off by the client’s business stakeholders to ensure the designs are aligned with the given requirements.

 

The third step: Implementation Phase (coding). 

Developers are provided with the approved design schematics. The software design is translated into efficient source code.

 

The fourth step: Testing and Documentation Phase. 

The test plan execution is done in each sprint to minimize the risk of failures. Performance of tests will ensure that the product performs as expected.

The fifth step: Maintained Separation Phase

Separate logical environments for system development, testing, and production are maintained so that no single individual can move object codes. 

 

The sixth step: Deployment Phase

After the project team completes product testing, the product is ready to go live. Change management and incident response plans are crafted.

 

The seventh step: Maintenance and Support Phase

The application system is monitored to ensure data integrity and efficient performance, faults are identified and rectified. 

 

The eighth step: Maintenance Phase

This stage consists of completing change requests, technical support and resolution, and tracking open issues on the systems deployed to production.

Devs hard at work – Photo taken Pre-Covid

 

Being able to achieve success of such high caliber requires skills, patience, and resilience. We applaud our software engineering team for their triumphs! For more insights into Bambu, you can also read “Uncovered Success – The Story of Bambu”, where we interview our CEO, Ned Philips.