Design, development cycles and testing

Having worked with different teams, I found out for myself several development rules that I want to share with you.

Design


  1. It is better to spend a lot of time at the stage of designing an information system than to lose time and money later.
  2. Mistakes in the design can entail: delaying the time, multiple cost of the project.
  3. Designing a system is entirely from start to finish (without adding additional functionality) or provide for modularity:

    - development and refinement of the concept completely.
    - development of a very detailed technical specifications.

    - development of a database schema
    - development of scripts for controllers
    - development of design of presentation templates
    - development of a scenario of user behavior (aka test script)
    - CEO
    - ...
  4. It is better to create a tender for the creation of project documentation and technical specifications, and then conduct an audit. Perhaps at the initial stage you will spend more money, but you can save many times more in the future.

Development


1. In the development, use ready-made and stable solutions: this means that for working with the database it is better to use the MVC (Model View Controller) framework or ORM (Object Relational Mapping) or AR (Active Record), and for working with standard CRUD scripts ( Create Read Update Delete) - a generator that creates code without errors.

Nobody will appreciate your skill as a low-level developer, but if the system works stably and without errors it will be a big plus.

2. Document the code.

3. Create good and clear technical documentation.

4. Use a docker.

5. Use automatic version assembly systems.

Team work organization


  1. Use version control systems, I used git in my work.
  2. Divide the work of developers into different functional modules, so that when the branches of the version control system merge into one, there would be no conflicts.
  3. Do not engage in extreme programming on the knee when it takes from several hours to several days to solve a problem.

Set tasks for a minimum of a week and a maximum of a month until the next build.

Testing


  1. Do not use task setting and correction systems for testers.
  2. Use automated tests: create a software test module that will run every time before assembly and test the entire system automatically.

Development cycle


Once you have created a high-quality technical task, you can start developing, then I will give you a repeating cycle:

1. Setting tasks for developers in various systems for monitoring the execution of tasks so that they do not affect each other's code, for example, dividing the system into modules, while everyone works in his own branch.

Tasks must be completed within a week.

After completing each task, the developer must run automated software tests that cover the entire system.

2. Every Monday, the code of each developer merges into the main branch.

After the result of the work of the whole team appears in the main branch, each of the developers copies the main branch to himself.

Next, the cycle repeats.

With this approach


  1. The number of errors resulting from tasks will be minimal.
  2. You can create a better software product.
  3. You will save time.
  4. You will save money.
  5. The team will work faster, more efficiently, more harmoniously (without conflict in terms of changing the code).
  6. You will be able to complete tasks on time.
  7. Completed tasks will be better.
  8. You do not have to make additional tasks, such as: changing the design, functionality or something else during the course of work.

What will make the result more predictable and simple and understandable.

I have been programming for more than 10 years, all interesting and successful projects!

Also popular now: