The amount of claims customers fire against the software development industry; is very striking. Those claims usually revolve around customers receiving software products/services below the promise.
Frustrating results can come down in various forms. The most common are:
-
Unstable product with inferior quality.
-
Exceeding projects time frame.
-
Project delivery failure.
-
Coping with requirement changing failure.
-
Shaky Code Architecture.
-
Delivering false features; does not meet the business requirements.
So, is it ever possible to have a successful software delivery? The answer is yes, still not everyone can do it.
In today’s article, we will walk through MD-Labs’ approach for successful delivery. It isn’t new nor exclusive. It’s simply; the correct application of the Scrum process. According to MD-Labs; the successful software delivery depends effectively on 2 main pillars: Team & Process.
The first pillar: Team.
Initially; delivering any complete software project is not a one man show, it always demands a team. Every efficient team must include various roles. All these roles are required to grant the success of any project, despite the project size. But what differs between enormous projects and small ones is the percentage of need for every role.
In this list; you will learn more about the roles that should be in every software development team:
-
Business Analyst.
-
Scrum Master.
-
UX / UI Designer.
-
System Architect.
-
Developers.
-
Quality Control.
But what is the importance of every one of these roles? Let’s find out together.
Business Analyst:
Although general business knowledge is mandatory for the development team, the team must communicate every business specific need with the client. This practice builds-up solid business knowledge, but it is not applicable. It requires multiple meetings to discuss every feature of the software project. That is why every team needs a business analyst.
The business analyst’s job is to fill this knowledge gap; by running a few activities:
-
-
Collect necessary business knowledge from business owners.
-
Document this data into clear inputs for the developers.
-
Conducting business research to validate the project requirements.
-
According to the agile procedure, this phase out-put is the User Stories. Each story describes a list of requirements to be implemented, written in a simple form for everyone.
Scrum Master:
The Scrum Master's essential responsibility is the smooth delivery of the project. He can fulfill that responsibility via 4 key practices: Break down the project into phases, help clients set priorities, track the project progress, and manage obstacles and risks.
First practice, break down the project into phases. It facilitates the client’s early feedback on the phases’ features. That allows fixing a feature that doesn’t meet the client’s expectation for any reason. Next practice, help clients set developing priorities. By determining which features to include in each delivery phase, and when to deliver them. Afterward, track the progress of the project. To secure the project's success, it is crucial to do so daily. This tracking ensures the commitment to the project’s timeline and phases delivery deadlines. The last practice, manage obstacles and risks. Successful Scrum Master should communicate the obstacles back to the client as early as possible, to remove the obstacles or mitigate the risk.
UX/UI designer:
Software developers value functionality when evaluating any piece of software. However, end-users always prioritize software that is simple and visually appealing. To create a software that is appealing for end-users, you need to do 2 things: design a user journey & integrate visual brand identity into it.
The UX designer designs the entire user journey for end customers on applications. Designing experience differs from mobile applications, websites, to dashboards. The same software even differs, if the user views it from a desktop or a mobile. Details of user clicks and how much he uses his fingers to achieve a certain task.The time required for registration process to start the software. The UX designer must take all those details into consideration while designing the user journey.After the client’s approval, comes the UI design process. Applying the brand identity to the user-experience being designed is part of this process.
System Architect:
The most experienced team member is the Building the System Architect. His key role is to design a solid, yet fixable system structure.
But what is the actual need for a system structure? It needed to accomplish a set of goals. Such as:
-
-
List the business needs claimed in the analysis process.
-
Ensure the code maintainability, to facilitate the handover of the project code between developers.
-
Grantee the code extendibility, to accommodate any changes or extending of business requirements.
-
A well-designed software architecture; limits updates when project requirements change. Allowing to follow the best timeline and achieve goals, without distrust and rebuild the entire project.
Developers:
Every software project needs more than one developer. Usually, multiple development technologies are engaged in a single piece of software. There are 3 main types of developers: back-end, front-end, and mobile developers.
Back-end developers’ responsibility is the servers’ implementation. Those servers are hosting both the project’s data, and the business logic behind the manipulation of those data.
Front-end developers’ responsibility is the user interface's creation. Covering everything from website front-end designs to various admin dashboards.
Mobile developers’ responsibilities are the mobile applications’ development, as well as the apps’ integration with servers. That integration is crucial to manage & store applications users’ activities data.
Quality Control:
Testing is a crucial task in the software delivery lifecycle. The most skillful developers can slip minor issues in the software. Those issues usually pop-up when users execute abnormal scenarios, according to developers’ perspective. Thus can affect the perception of the software stability from the customer side.
Here comes the Quality Control team. Their essential responsibility is detecting as much as possible of those issues, to robust the application to customers’ unexpected behavior. Also, they aid the scrum master to make sure that the design covers all the customers’ requirements.
The Second pillar: Process.
The process is breaking software development work into smaller steps, the development team can execute in parallel or in-order. Neglecting those steps may result in the failure of the project.
In this part of our article, we describe the process MD-Labs follow to deliver any software project. MD-Labs’ key process steps are:
-
Kick-off.
-
Business Analysis.
-
UX/UI Design.
-
Release Planning.
-
Implementation Iterations (Sprints).
Every step in this list contains a series of sup-steps to follow. Let’s explain in depth each step of the process.
Kick-off:
The kick-off meeting is a necessity. It services 2 purposes: announce the project’s start, and set and manage expectations of both sides; customer & team. That shall facilitate the delivery process.
In this meeting; the delivery squad presents key information to the software project owner:
-
-
The data they expect to collect from the owner.
-
The Various technologies they will use in both development and delivery.
-
The process they are following to guarantee a successful delivery.
-
The project’s timeline forecast.
-
The project’s milestones.
-
The project’s communication matrix.
-
A list of projects’ meetings, and who are attending every meeting.
-
The escalation matrix in case of conflicts.
-
Business Analysis:
As mentioned previously, the business analysis step output is the User Stories. Those stories describe the system in- detail, and in a clear format for both stakeholders & developers.
This phase from the project delivery lifecycle includes the following practices:
-
-
Represent the stakeholders of the project.
-
Define the users’ personas.
-
Collect the requirements through interviews and workshops.
-
Analyze the similar systems available in the market.
-
Complete the system’s missing requirements.
-
UX/UI Design:
The UX Design function is fulfilling project requirements, creating wireframes and mockups based on user stories. Through the following specific sub-steps:
The 1st out-put is a project’s clickable prototype. Showing the entire project’s features, as well as the user's journey through them. Next step, after securing the customer’s approval, comes UI design to apply the brand identity to the project’s mockup.
The Final out-put of this phase is a complete and clickable user interface; that covers all the project’s requirements.
Keep in mind that the team can spread this step across multiple scrum sprints, depending on the project situation. Without the need to complete the full design before implementation starts.
Release Planning:
Typically, software projects have a precise timeline, with multiple timed milestones to fulfill. The Release Planning step plays a vital role in ensuring a balance between business needs and delivery timeline. Development team works to achieve this balance, via a series of releases. The goal of each release is to address specific business needs, or gather specific feedback; within an exact timeline.
Release Planning has two forms, planning for the next release or the next sprint.
At the start of any software projects, the business analysis step provides clarity; of both business requirements and initial priorities. Later in the project’s life cycle, market/user feedbacks appear, and priorities may differ, introducing different perspectives.
Planning for an individual release is important. It eases the absorbing and updating of the software delivery, according to these feedbacks. It even enables marketing maneuvers when different competitors are acting in the market. Same apply for sprints planning, it allows revising project priorities, through the grooming meeting that is held at the beginning of every sprint.
Implementation iterations (Sprints):
The glimmer of the Agile process appears in the sprints step. Scrum process defines this step. But what is the sprint?
The sprint is a specific time window, 2 weeks in the MD-Labs process. To guarantee smooth & successful delivery as planned, every sprint includes the following repeated sub-steps:
-
-
Grooming Meeting: This meeting involves the product owner and the delivery squad. The main purpose of this meeting is to define the next sprint features, according to priorities and man-power availability.
-
Daily Stand-up: This is a daily, 5 minute meeting, involving only the delivery squad. The scrum master gets status insights to make sure that delivery is on track. He asks every team member to answer three questions: What did you achieve yesterday? What will you be working on today? Are you blocked on something or someone?
-
Demo Meeting: This meeting occurs at the end of every sprint, involves the product owner and the delivery squad. The delivery squad presents the sprint’s outputs; and gathers the owner’s feedback.
-
Reflective Meeting: This meeting is the sprint’s closure, involving the delivery squad. The key function of this step is to collect the team feedback, to enhance the team performance in the upcoming sprints.
-
Conclusion
MD-Labs' team has been working tirelessly to enhance the delivery process.
The combination of Process and Team pillars guaranteed a seamless and successful Software Delivery; in every project. By applying the same process, you can achieve similar successful deliveries.