Rules of Bright Development

code-review, TDD, SOLID, mobile, web, software 4 mins edit

Every year we work at Bright Inventions on many mobile and web development projects. It is a challenge to build a good quality software in an agile way and at the same time solve all potential problems and keep your workflow under control, but we do that. In fact, we manage to do that thanks to applying some important rules. Check below what makes our work bright and effective.

1. Code review

We have a team consisting of great talented developers who create good code, but it is always better when two pairs of eyes look at it than one. We always try to make all our Pull Requests to be reviewed by other members of the team. In fact, we believe that the whole team works for the success of the project and at the same time is responsible for making it better and better.

2. Pair programming

We like working together and we take advantage of that not only while doing code review, but also in pair programming. And pair programming is like an instant code review. Two programmers from our team are working on the same task and on the same machine swapping their roles. It is a great opportunity to come up with new fresh ideas and find some solutions much faster than while working alone. We also do not get stuck with a problem for a long time and we catch errors faster. The fact that two experienced developers are engaged in the task at the same time makes our work really efficient and reduces the probability of making mistakes. It may also speed up some urgent tasks on the sprint.

What is more, pair programming is extremely practical and useful for our new employees. While onboarding new staff a more experienced developer can pair with a trainee to effectively and fluently share knowledge connected either with a project or generally programming skills.

3. Continuous integration

We are great advocates of Continuous integration (CI). Our code is integrated into a shared repository several times a day. By a regular integration, we can detect errors quickly and make sure that every push is in a good state. If the commit fails to move to the next step, we can immediately find a problem and fix it. Thanks to the frequent integration we can spend more time on building features instead of debugging.

4. TDD

We believe that Test Driven Development is a good way of providing high-quality software. Applying TDD methodology makes creating maintainable readable code and reducing bugs much easier. At first, we always try to write unit tests to check particular segments and then the code itself. It prevents us from creating unnecessary code and helps to specify precise features that should be implemented in the project. And even if TDD takes at first much time and effort from us, over the time this process results in great benefits for our clients.

5. SOLID

SOLID consists of five principles in one: single responsibility, open-closed, Liskov substitution, interface segregation and dependency inversion. These principles help us to write clean elegant code which is easy to modify, maintain and test, which in fact has a great impact on the final success of a project and then extending it. Writing clean code in the beginning means that we do not have to invest so much time to add new features and modify it later.

6. Project management tools

As project management tools we use mainly either JIRA or Trello depending on our clients’ preferences. It lets us run our projects smoothly and effectively with Agile methodology in mind. I would say we are super agile in managing our workflow. We have all the tasks open and visible so that our clients could see what we are working on and can give us up-to-date comments.

7. Time tracking

To track the time and current workflow we use Mite. It is important for us to know how much time we spend on a given task or a project, especially considering the fact we use mainly the time and material model and our clients are charged only for developers’ service. Apart from that we have our own private file in which we can see what kind of projects are assigned to particular people and how long they take part in them. It facilitates our planning process a lot.

8. Communication

Fluent and transparent communication is something that we value and take care of in every phase of a project. It is extremely important that our clients know how the development process is evolving. To successfully manage the workflow and keep our clients informed we send them daily or weekly updates to let them know what we accomplish each iteration and what is planned to do next. A long-distance between us and our clients is not a problem. We communicate via phone, Slack, Skype or email and it is a standard part of our job. We also have dedicated Slack channels integrated with Jira, Trello, Github, Hangouts or others.

Creating a set of rules that everybody in our team is following has a great impact on our daily workflow, but first of all it significantly improves our development process. Applying each and every rule we are able to avoid many errors and misunderstandings. We spend our time effectively and make the most of it. At Bright Inventions we believe that it is worth taking the time to write quality code and build the things right. And that is the kind of service we always want to provide to our clients.