Originally published at onix-systems.com.
Offshore software development outsourcing provides small, medium-sized, and even large businesses with access to specialists, reduces the development costs, and accelerates the time to market. However, choosing a suitable and reliable partner may be challenging. Those who have never worked with a remote software development team or experts may be confused and hesitant.
Onix regularly answers potential and actual customers’ questions about our workflow. What are the steps in program development at Onix? What software development methodology do we use? What specialists do we have onboard to develop software of different types? Can we ensure smooth and transparent cooperation? How do we mitigate project risks? What about information security? These are only a few of the concerns of our clients.
We feel it’s time to describe Onix’s software development process step by step and explain in greater detail how our project managers, designers, programmers, and other specialists work to complete software projects for our clients on time and within budget.
The Phases of the Software Development Process at Onix
Before any services are provided, we negotiate and sign a consulting agreement, including the work schedule, payment method, and other organizational details. We sign a non-disclosure agreement whenever a client requests it.
Afterward, we distinguish four stages of software development projects:
- discovery and planning
- product design or redesign
- front-end and back-end development, where quality assurance is an integral part
- maintenance and support
Discovery and planning
This stage of software development starts typically with a video call for the client and Onix’s team members to meet and begin the discussion of the project goals and requirements. After the initial requirements analysis, two scenarios are possible.
When there is only a high-level idea of a software, website, or mobile application, the discovery phase starts with product ideation, evaluation, and research of the potential users, market, and competitors. The client and our team need to understand whether the product can be feasible, viable, and successful on the market, as well as to determine its primary and secondary features.
We at Onix firmly believe that it’s safer and more cost-effective for startups to build a minimum viable product (MVP), a basic version with core functionalities, rather than build “the whole nine yards” without knowing whether anybody will use it.
Alternatively, clients often approach us with the need to rebuild, extend, or improve an existing product. In this case, we start with the product evaluation, including exploratory testing, code review, and audit of the user experience and user interface (UX and UI). These activities can help determine, e.g., the reasons for low conversions or customer retention or other problems hindering business growth. Having evaluated the system and identified any issues, we brainstorm suggestions on how to fix the problems and improve the product.
Depending on the product complexity, the discovery stage may take from one to several weeks. Onix’s team would meet the client in person or via video calls, chat online, exchange emails, read various documents, analyze user feedback, draw wireframes, and conduct other activities that promote a thorough understanding of the business model, data model, user flows, and all features and integrations in the project.
Onix commits to ensuring excellent user experience from the first interaction with the client, and all team members are working towards the goal throughout the software process. We research the businesses’ requirements and end-users’ needs equally rigorously. When the functional and non-functional requirements are written, UX designers provide usability consulting. Wireframes and prototyping, whose primary purpose is to evaluate a product idea before its layout has been fully designed, are all about product usability.
The discovery phase results may include a list of prioritized features with modules, flows, and use cases, UX prototype, project specification, recommended technology stack, budget estimate, product development plan, and recommendations for updating or building the product most effectively. Onix’s experts may organize a presentation or video conference to walk the client through every point.
These deliverables facilitate subsequent activities, such as a research-based UX/UI design phase. Alternatively, the research and ideation can be an independent service, after which the client may choose to continue the product development with us or elsewhere.
If they want to continue the cooperation, Onix assembles a team to design and implement the product. Once the project manager (PM) and stakeholders define clear deliverables and checkpoints for measuring the project’s progress, we are ready to proceed with further product development stages.
Product design or redesign
Good UX design lies at the core of most successful software products. It means users will intuitively know how to use a website or app and will enjoy smooth, seamless, and productive interactions. The UI design is about creating, testing, and organizing the product’s visuals.
We create UX/UI design based on the defined business goals, functional specification, wireframes, prototypes, etc., as well as the knowledge of current problems of an existing product. Even if it is an MVP, Onix’s UX designers properly address the product’s utility, usability, aesthetics, stimulation, identification, and value.
The design phase is a standard part of Onix’s software development projects, but clients often order UX audits, full UX/UI redesign, or a new design, including branding, as a separate service. Onix’s designers:
- develop the brand and style guide, if needed
- finalize high-fidelity mockups for all resolutions and a clickable prototype
- create UI assets like icons, banners, patterns, illustrations, and animations
- prepare texts and images for the interface
Product front-end and back-end development
At this stage of software development, Onix implements the database architecture design and final visual representation of your software, web, or mobile app in code. Proper documentation speeds up software engineering processes and helps ensure the product’s high quality. Clear requirements help prevent the scope creep and feature creep that lead to the loss of time and money. The right technologies combined with quality code help ensure stable and secure architecture, the system’s proper performance, and future users’ satisfaction.
Quality assurance and product acceptance are integral activities at this stage. The procedure includes usability, functional, compatibility, performance, and penetration testing. Usability testing and code reviews help detect problems, distractions, or bottlenecks in the system’s work from the development phase and on. Automated unit testing reduces the number of bugs by up to 90%, and our QA team ensures 80–100% automation test coverage. It lets us spot defects and check the whole system consistency multiple times before deployment.
Onix also applies continuous integration that includes build and deployment automation, keeping the build fast and self-testing, maintaining a code repository, and testing in a production-like environment project. All of this makes the development process transparent and helps produce deliverables rapidly and increase the product’s quality.
The development phase includes regular result demonstrations, retrospectives, and project plan adjustments based on client feedback. Throughout the process, the team writes and maintains proper project documentation, release plans, and changelogs.
Before the product launch, the QA team verifies that all required deliverables have been produced, meet the specification, and comply with applicable industry standards.
Maintenance and support
After launch, software products require constant care to be successful. Security updates, bug fixing, and regular maintenance are essential to their smooth performance, and continuous testing and adjustments should ensure a high level of user satisfaction. Onix helps its clients with after-release support and quickly responds to their requests for changes.
Besides the actual system maintenance, the main tasks are to measure the product’s success, learn, and act on the lessons. UX assessments are another part of the process. Our specialists review analytics, help garner and analyze user feedback, etc., and incorporate the generated insights into the product’s future iterations.
In the case of MVP, whose purpose is to test the target audience’s response to a product concept, it may be the beginning of a full-fledged software development. If the target groups’ response is reassuring, the team will build the rest of the features and improve the product. If not, they conduct further discovery activities to identify problems and desirable features.
Clients whose systems were not built by Onix still approach us at this phase of their software development life cycle, e.g., to request a UX/UI audit or to fix a technical problem. These requests, that often mark the beginning of a new partnership, bring Onix’s team and the client to where we started — the stage of research and planning.
Members of the Development Team
Onix has UX/UI design, programming and engineering, quality assurance, and project management departments with almost two hundred IT specialists possessing various skills. This guarantees that all necessary roles and responsibilities will be filled perfectly in virtually any project that our clients might order.
We usually suggest the following cross-functional team lineups:
Onix keeps the number of persons to fill all necessary roles to a minimum. A PM selects the most suitable specialists for every software development project based on its specifics and the client’s needs, coordinates and motivates the team, oversees their work, and tracks progress throughout the software development process.
Project Management and Software Development Methodologies
Management and support are ongoing across the entire software development life cycle (SDLC). The PM acts as the link between the client and their software development team and is in charge at Onix’s side of completing the project in a timely manner, orderly, efficiently, and according to the contract.
Different projects require different SDLC models and methodologies. They help organize the project management and teamwork to produce high-quality software as quickly and cost-effectively as possible. Onix’s teams have vast experience in using different approaches.
For example, we may use the waterfall model when there’s no need for quick changes, typically on fixed-price short-term projects. It’s a linear sequential flow: when the team completes one stage of software development, they start working on the next one. With thorough documentation and minimal risks included in the budget, it’s very straightforward. We always meet deadlines. If the project scope is getting over budget, we negotiate possible adjustments.
Early software development planning and detailed specifications are highly desirable, but project requirements rarely remain the same in long-term and ongoing projects. More often, Onix’s development teams follow the more flexible Agile methodologies, such as Scrum, Kanban, and Lean methodology.
The Agile method creates continuous release cycles. Cross-functional teams work on iterations of a fully functional product over a certain time frame. Continuous evaluation and QA efforts, starting as early in the software development process as possible, help deliver high-quality solutions quickly and adapt to changes faster. The method also promotes greater transparency for the client and team.
We often build MVPs, an essential element of the Lean Startup business model that implies several repetitive cycles of improvement in the software development process.
Agile and Lean models are good for small- and medium-sized projects where rapid changes are required. Little planning is needed to get started; instead, the client and the development team closely discuss each iteration to make the necessary additions and modifications all along the development process. The iterations are stored in a backlog, prioritized by business or customer value. Team members from all departments are almost equally involved and can share ideas and communicate with the client, product owner, and other stakeholders.
When the knowledge of the product features is limited, or the client wants to go live with an MVP, Scrum practices are applicable. Short daily standups, status reporting, sprint-demos, and other activities facilitate open sharing, coordination regarding risks and expectations, and progress towards common goals.
The Kanban method is convenient for managing bugs and effective implementation of new features. Due to this optimization, it accelerates time to market. It’s also great for projects in the maintenance phase.
The Spiral model is suitable for large, complex, and high-budget projects. A project goes through four stages: planning, risk analysis, engineering, and evaluation. These are repeated over and over, providing multiple rounds of improvement.
Onix’s software engineers also combine the elements of these practices in a project. Individual highly skilled professionals and the corporate culture of team-play and support further facilitate the best results.
Our solution architects consider all the risks from the onset. The contracts’ risk management policies facilitate the delivery to the agreed timetable and within budget.
We always try to balance the triangle “time — cost — features” based on the interests of the client. For example, if their sensitive spot is the budget, we proceed step by step, adding one feature at a time. If there is a deadline for the product launch, we may engage more team members to increase velocity or reduce the number of secondary features in the release.
For reducing quality-related risks, we engage QA engineers as early as possible in the software development life cycle. They work closely with other project team members, review project activities, test the work logic, and continuously support product enhancement. The QA staff are responsible for:
- reviewing requirements
- planning and designing tests
- updating test cases
- bug reporting and verification
- developing and monitoring corrective and preventive actions
- investigating complaints and non-conformance issues
We also automate testing so as not to miss errors.
We attach great importance to clear and honest communication with clients: they should always feel in control of the software development process.
During the initial interaction with each client, we agree on the optimal time for video calls or live chat. Google Calendar helps us coordinate efforts with clients in different time zones. Ukraine’s GMT+2 is favorable for cooperation with all European countries. Even the 7-hour time difference with the East Coast of the US provides fairly convenient web conferencing slots and shared working hours. Onix’ American customers even like to assign a task in the evening and wake up the next morning to see it completed.
Onix uses various communication, collaboration, and project management tools. We use Slack and Skype for daily chats, Zoom and Google Meet for video calls, Jira for task management, and InVision for demonstrations, to name a few. Instead of lengthy documents, these tools save time, promote trust, and increase work efficiency.
The client’s primary contacts always speak and write in English well.
Every stage of software development starts with an online kick-off meeting with the team in charge. Regular meetups of around 15 minutes enable us to catch up with the clients and ensure a productive and proactive two-way communication.
As part of their duties, PMs regularly send reports and updates to keep clients informed on their project status and anticipated progress. This helps to:
- spot problems, uncover latent issues, and minimize risks early
- register what we have accomplished and what resources have used
- track the team member’s efficiency (how many hours an individual works, on what tasks, and how much the work costs the client)
- track budget expenses
- monitor timelines
- modify the process when needed
- foster the atmosphere of accountability among the development team, leaders, and stakeholders
To maintain high-quality customer service, Onix conducts client satisfaction surveys. If needed, clients can also contact our CEO at any time.
Confidentiality and intellectual property management are regulated by agreements with each client. Onix doesn’t have access to confidential data: during the development, the teams use purposely generated fake data.
In the projects that Onix develops from the ground up, we adhere to industry standards for data transmission over encrypted channels. Data is stored in password-restricted databases, and the passwords are not stored in cleartext. In line with the GDPR, we do not store private information either.
Occasionally, customers require special information security measures, and we comply. In cases where we perform a full scope of project work, we request full access to all project resources to ensure steady development. A project’s PM and tech lead are responsible for authorizing each team member to access those project resources that they need for their task and then revoking the permissions once they’re done.
We hope this article has succeeded in clarifying some of your concerns and cleared up some of the misconceptions that are often associated with offshore software development. Onix provides web and mobile development, UX/UI design, quality assurance, and consultations to clients worldwide. Two decades of successful custom software development prove our comprehensive understanding of the clients’ needs and expectations, business goals, best user experience practices, and effective use of cutting-edge technologies. You can see some of our projects illustrating the effectiveness of Onix’s software development process and our employees’ competence.
However, the best way to check our convenient workflow, open communication, compliance with requirements and deadlines, and the high quality of software engineering is to experience them first-hand. Give us a chance to become your outsourcing partner.