Best Practices
We use best processes and crucial quality assurance
techniques into our development cycle to analyze every piece of the software to make sure
it is of the utmost quality. We believe in bringing to the market place the most
outstanding, jaw dropping software solutions that have never been seen before. We
as a team always ensure to adhere following points in our organization.
- We primarily focus on system requirement study and ensure it has been conducted
in an accurate manner and has been documented properly. We follow below steps to
ensure above is conducted properly.
- Start studying and interact with person operating individual areas of the system
- Depict system on paper
- Hold a meeting on every logical end and discuss on depicted system to ensure the correctness of new system. Iterate the process until all gaps has been filled and correct detailed has been prepared.
- Exploiting agile methodology for development and delivery step. Apart from that
we ensure that
- Every person involved in development should have adequate knowledge of business and can simulate business scenario and visualize the system.
- The design traceability from the high level design to the detailed design to the completed code is being maintained.
- That that there is clear requirements traceability shared across time to time.
- Every piece of code is unit tested.
- We prioritize scalability, availability, and performance enhancements very high in relation to product feature requests. If requires we categorize them as bugs also is way to make sure that fall high on the priority list.
- Always prioritize severity 1 & 2 bugs before accepting any product feature requests from you.
- We do keep tracking and reviewing all production & QA bugs on regular interval. More often or not we keep review production and Q.A logs to ensure there should not be security threat or performance issue cause application malfunctioning.
- Every 2-3 months get the entire organization together to discuss the product roadmap, discuss successfully delivered work, answer questions, motivate the teams, and above all to publicly praise and reward the star team members within the team.
- Foster a culture that supports a healthy balance between work and family life for everyone within the organization. Let people go home to their families at reasonable times. Ensure that people are taking vacations on a regular basis.Value results driven work over duration driven work.
- Everyone on the development team should have a professional development plan. This plan is a contract between the employee and management to ensure that the organization will provide all required resources and opportunities for the employee to realize the career goals.
- Make data driven decisions, but do not require that every decision be made with complete data. Identify the experts in the organization and trust them to make the right decisions based on past experiences. For example, picking the right initial architecture should be based expert judgment, past experience, and some amount of prototypes. But scaling that architecture over time should be completely data driven from the metrics collected on the production systems. Always be measuring, analyzing, and optimizing based on the data.
- Balance time to market vs. perfect architecture. What is a reasonable architecture to solve the problem today. If cost, resources, or time constrains the architectural design then have a story of how to undo the trade offs made in the design to meet the time to market demands. What is the plan for getting rid of the technical debt?
- Focus on eliminating waste in all SDLC processes. A good place to start is with any process outside of analysis and writing the code, ask the question is the process adding value?
- After any and every production incident there should be a root cause analysis performed with clear action items and associated owners to prevent the issue from re-occurring. This is not a witch hunt to find someone who to blame, but rather a way to identify what process or lack of process created the environment for the issue to have occurred.