Synergy with Continuous Integration


    Some people are conservative in nature, it always hinders the adoption of something new. I’m still unaccustomed to using Google Docs instead of Word, although when it comes to collaboration, the advantages of the first are undeniable. Many companies (sometimes even very large ones) involved in the development of software ignore the available ways to increase the productivity of programmers. For example, continuous integration (Continuous Integration / CI), which simplifies the development process and project control. Ready-made solutions exist on the market for a long time. Unfortunately, until now, someone continues to mock employees, losing time and money. This post is a desire to share the experience of successful implementation of continuous integration, and, perhaps, an attempt to reach out to some managers.

    Problem



    Any project begins with receiving technical specifications. This is followed by requirements analysis, programming and testing. Everything ends with the release of the product. Following this "classic" scheme, programmers at the stage of testing and release have to build the project. Usually this process is done “manually” and can take from several minutes to several hours. It happens that you need to make several versions (configurations) of one assembly. For example, if an error is detected at the testing stage, then the entire cycle must be repeated again and again. The number of routine operations increases exponentially in complexity and volume of the project. Programmers are a very valuable resource to waste their strength in vain. How much time do you think they lose per week, month, year?

    Continuous Integration software development practice exists. It allows you to automate the implementation of project assemblies for the speedy identification and solution of integration problems. The point is that at a given frequency, the code stored in the repository undergoes automatic assembly. Assemblies can occur in different configurations. This allows you to solve a number of problems: detect errors at an early stage (the assembly will show an error) and free up time - a programmer's most valuable resource.

    At the moment, one of the most popular products solving these tasks is TeamCity from JetBrains. You freetwenty configurations are provided, plus three agents for building the project. It is very convenient for small teams and small companies. A continuous integration server combined with automated version control systems (Version Control System / VCS) such as Git will greatly simplify your life.

    Git and version control





    Version Control System (VCS) - software to facilitate the work with changing information. The software registers changes in one or several files, so that in the future it will be possible to return to certain previous versions of these files. Programmable code is available in a single repository.

    Git is a distributed version control system. Unlike centralized and local systems, Git not only uploads the latest versions of files, but also completely replicates the repository locally. In the case when the main server through which work was going to die, any client repository can be copied back to the server to restore the database.

    Thanks to hashing, Git easily tracks changes in project code. The situation when someone quietly made changes to the code is impossible. Such control allows you to return to the desired version of the assembly at any time. As a result, each time you know exactly from which sources your project is going to be - any moment of chance is excluded.

    Git was created by Linus Torvalds. Later, GitHub, a network project so beloved by many (including us), appeared, which provides Git - hosting for projects and joint development tools.

    A little bit about testing


    No software development can do without testing. To facilitate the distribution of test versions, we use Test Flight . Server features allow you to: monitor statistics, create polls, track logs, collect crash reports, automatically notify about a new version of applications. Significantly simplifying the registration of testers and their search. Previously, it was available only to developers for iOS, but just the other day I got hold of Android support (at the beta testing stage).



    Joel Spolsky came up with the famous test of twelve questions. A kind of guideline for organizations as a whole, and for a programmer who is about to get a job. The integration of such products in the development process allows you to cover some of the important ones:

    - Do you use a version control system?
    - Can you assemble the product in one step?
    - Do you do daily builds?

    If the answer is yes, then you can be congratulated!
    Do you know the beautiful word synergy? For some reason, many managers ignore the needs of their employees. Perhaps some of them will still want to know what a super-additive effect is. We have long made our choice, and which is yours?

    Also popular now: