Risk is defined as the possibility of any negative occurrence that may happen due to external or internal factors, and that may be mitigated through preventive actions. All projects are subject to risks. In fact, there is an infinite number of things that might prevent you from achieving your goals when working on a project. Risk management minimizes those threats that could cause project failure, and allows you to stay in control of your project’s schedule, budget and quality requirements.
According to the classic PMBoK guide, risk management can be divided into four processes:
- Identification. Detect risks that might prevent you from achieving your project’s goals.
- Analysis. Determine what risks are the most dangerous.
- Planning. Plan for the most dangerous risks.
- Monitoring and control. Maintain the project’s plan and continually identify risks.
In this article, we’re going to speak about risks associated with website development, and how we at RubyGarage reduce the likelihood of encountering these contingencies.
Risk: Scope of work
As a rule, information about contractors and clients, and a project’s deliverables and milestones is included in the scope of work (SOW) . It’s challenging to define a relevant scope of work, because every contract and all requirements are different, and it takes time to write thorough documentation describing the scope of work. Here are common risks related to the scope of work:
Scope of work is poorly specified. The risk here is in missing important details or simply making a mistake when defining the scope of work.
Scope creep. Scope creep refers to unexpected changes and uncontrolled growth to a project’s scope. Scope creep can mean failure to meet time constraints, additional costs, and even project failure.
Adding unnecessary features. According to PMBoK, the addition of features that were not originally requested in the scope is called “gold plating.” Gold plating is a source of additional risk (additional costs, human resources, time, testing, etc.) and is considered bad management practice.
While project managers try to minimize or eliminate SOW changes, some changes might be urgent and necessary for a project. In our workflow we stick to Agile methodologies that advocate an iterative approach to implementing any changes. Such an approach is realized via sprints, i.e. development cycles that typically last 2-4 weeks. During a sprint, the team decides which features should be implemented next in the product, how they should be tested, how they should be confirmed (by defining acceptance criteria), and so on.
Agile methodologies resolve the problem of a scope creep by replanning the scope at the start of each iteration, and continually estimating change during a project’s development. In this way, the problem of scope creep becomes a moot point. This approach works effectively in a continuous testing environment, when scope changes are driven by defects found in an application. In this way, a project team immediately fixes issues at the initial stage and keeps projects within deadline.
Risk: Human resources / Team
Human resources shouldn’t be underestimated. One of a project manager’s responsibilities is to facilitate smooth communication and establish cooperation between a customer and a development team. Here are some common risks that can be posed by human resources:
Team change-over. Scenarios may vary: developers might get sick, go on vacation, or outright leave in the middle of a project.
Time to learn. It may take time for a team to study a new programming language, piece of software, or hardware component.
Poor team cohesion. Inner conflicts can cause a team to put spokes in each other's wheels.
Hiring process. It takes time to hire specialists with key skills, and in some cases the hiring process may take too much time.
Disengaged stakeholders. Stakeholders are the people with an interest in a project, but who don’t directly participate in its development (end users are stakeholders as well). Their role in a project is defined by their level of influence and interest; stakeholders with high levels of both make critical decisions for a project. A classic mistake in project management is failing to identify or adequately engage stakeholders; this can lead to lack of commitment and failure to build a successful product.
At RubyGarage, we’re conscious of the importance of human resources in achieving a project’s success. We select, hire and train our staff to develop dedicated employees and excellent team workers. A great benefit of an in-house staff is the company’s direct responsibility for the performance of its employees. Our RubyGarage team consists of 70 people working in 5 departments, and our company has over 5 years of expertise in web development. By working with an established company like RubyGarage, you get a team with proven management.
Additionally, we have three levels of human resources risk control at RubyGarage. First, we have an in-house psychologist and run a retention program to develop a better working environment. Our psychologist helps us to consciously generate a positive workplace environment, providing a better atmosphere within our team.
Second, we make sure that there are other developers with the same level of skills who can substitute if one of your programmer leaves on holiday or gets sick. Third, our development team members are managed by project managers who smooth out issues and miscommunication within our teams.
Risks of a technical nature are present in every IT project. We’ve picked out a few risks that are important to keep in mind when managing web development projects:
Application isn’t scalable. Scalability is the ability of software to be scaled in order to cope with an increasing load and/or to be easily duplicated in another place. If an application has been developed by a previous team who didn’t build it to scale, then you might face difficulties in meeting performance requirements.
Application isn’t stable. There are plenty of reasons why applications crash: browser incompatibility, incorrect memory usage, fatal production bugs, and more. What’s always the case is that crashes cause disappointment for users and hinder your app’s success.
Here at Ruby Garage we implement various techniques to boost application stability. One is a version control system (VCM) – software that allows developers to manage their work collectively and avoid rewriting each other’s revisions to the code. In a nutshell, a VCM lets team members access revisions and quickly find a chunk of code that caused a bug.
Also we use Git to ensure the quality of our code. In general, VCMs are used as part of the overall workflow approach called code review. In terms of risk management, such an approach allows us to identify and fix errors at the earliest stage, when they do not yet lead to losses, and easily maintain the code in the long term.
Moreover, our development team applies automated testing. We use automated tests to test each and every piece of newly written code, checking its quality and ensuring proper functionality at minimal cost. In fact, we stick to the principle that no code should be written before tests are created to check it. That allows us to minimize (if not eliminate) risks of typos, syntax mistakes, and other unforeseen errors in the product code.
After a project’s release, we connect an application to crash reporting software, such as Airbrake or Crashlytics, to track what piece of code causes crashes and immediately implement debugging.
These are several common risks in website development, and some common approaches to solving them. RubyGarage’s project management team relies on the classic PMBoK guide during our work to foresee risks and mitigate them. We also reduce the risk of failing to meet deadlines through efficient communication within our teams and through technical checks such as automated testing. If you want to discuss how we handle risk management in greater detail, then connect with us on social networks or send us an email!