Drucode's best practices

It took us time to develop cost-effective development process. The idea is simple: deliver value with each iteration.

Your own technical team

Every project awarded to us, we approach as a product of our own and realize the importance of putting up the right project team. Engineers should know how to work together, feel comfortable doing so and share the same philosophy.

We found the way to offer our clients a fair price for efforts of the experienced product development team. Our model is simple: no unnecessary staff, administration, nor sales staff to pay out commissions on. Only people, that matter to your project.

What is the development process like?

Value oriented programming

Drucode team knows that only continuous improvements and timely updates make online products successful in a long run. Constant productivity of a technical team and agile development - are the keys to success. They give opportunity to deliver new versions of product quickly and easily. Code quality improves gradually as team collaborates on each feature. On most projects, Drucode uses classic Scrum methodology for development.

Scrum methodology is a part of Agile development framework, with its strict, well-defined rules. There are certain roles (such as Product Owner, Scrum Master, Development Team), certain way to organize scope (Backlog and User stories) and to plan work (Sprints).

Our work consists of iterations (sprints). Each sprint scope is prioritized using MoSCoW method. Engineers carefully plan their work for the upcoming sprint. Deadlines can't be missed.

Sprint - is a certain amount of features that team has to complete in a specified period of time. We find two/three-week sprints to be the most productive.

Product owner takes care of product strategy. Drucode takes care of technical side. That's why we use “user stories” - non-functional product requirements. Those are defined by the PO and brought to life with technology by Drucode.

Product owner is one of the key players in the whole process of software development. He (or she) is reponsible for the product backlog management, task prioritization and important roadmap updates.

Planning It Out

Gaining understanding

We try to get the full understanding of customer's business, philosophy, strategy, goals and expectations. Meetings are held in person: either in our or customer's office. Usually it takes us 1 or 2 days to learn all we need to proceed.

Putting up a team

At this stage guys self-organise into a team. Depending on a skillset, level of interest and availability.

Determining project features

It is easier to understand a project fully, if all features are well-determined, structured and prioritized. We start from essential ones.

Composing a roadmap

For team to stay focused, it is important to realize all stages, that the project is to go through. That's why we create project roadmaps: simple and efficient way to keep the team informed on important milestones, dates, events.

Designing it

Describing use cases

In the very beginning, we need to understand how users will interact with the product. To find it out we write/draw possible use cases.

Designing UI mock-ups

We try to simulate user's expected behaviour and make it comply with the use experience we'd like to deliver. At this stage UI mock-ups are designed. That's how smart, user-friendly interfaces are born.

Developing graphic design

We believe in importance of beautiful, aesthetic designs. People must enjoy using the product, easily understand how it works.

Roadmap update

In the process of UI prototyping, fundamental features may be re-evaluated. The entire team gets a better understanding of product's strengths and weaknesses. As a result, product strategy may be altered a bit.

Developing it

Creating a product backlog

Once list of features is determined - it becomes an early version of a product backlog. The list is put into task registration system. Further backlog organisation, prioritisation is performed. Now we are ready for the first sprint planning.

First sprint

Team decides which backlog items will appear in the first sprint. During each sprint it is important to conduct daily stand-up meetings. All project team members should participate. Such meetings help to keep a track on the progress, identify possible difficulties at the early stages.

Demo and retrospective

Usually it is a 4-hour meeting at the end of each sprint. Purpose of such meetings is to present sprint results, discuss project metrics, define mistakes and find the way not to make them in the future.

Pair programming as an accelerator

Pair programming can save you time. Depending on the challenge, working together at one computer gives better results, than working apart. Sometimes for the problem to be solved, it needs to be looked at from a different angle.

Deploying it

Securing the data

In most cases, clients that come to work with us- already have data for their websites. Or sometimes, while supporting the project, we face the task of protecting client's information. To secure the data on the client side, we use several proven techniques. The main directive, we adhere to in such matters, is the integrity of client's databases. All updates are implemented through the code. For each of the stages of development process, we use individual instance-environments.

VCS

Version control system. In our work we use Git. Thats a decentralized, flexible and very effective tool. Git was developed by Linus Torvalds, - the creator of Linux. There is great number of companies that rely on this system in their projects, including such giants like Google, Microsoft, Facebook and LinkedIn. In the capacity of our branching strategy we have been successfully using a model described by Vincent Driessen in his article A successful Git branching model.