What is needed for a software development organization

08/12/2017

 

There are various software development organizations

Various organizations and teams are required to develop software and release it to the market, but here we will use the term team. Software development first requires a product planning team, design team, implementation team, test team, maintenance team, etc. that are directly involved in software development . In addition to this, indirectly involved process improvement teams, architect teams, quality assurance teams, etc. are also required for stable software release. Here, I will introduce the way of thinking of Father Gutara in Kobe about the organizations and teams necessary for the development of these software.

The team feels better than the software development organization.

What kind of organization do you belong to to develop software now ? The organization is a little unfamiliar with the software development site, so it’s better to paraphrase it as a team . Well, in short, a group of people working for the same purpose , consisting of several to a dozen people to advance software development , is called a team. What kind of team do you belong to to develop software now?

The composition of a team varies from company to company, and the name also varies from company to company, so even if you ask the name of the team, you may not be able to understand what kind of work you are doing. In some cases, in order to hide what kind of product we are developing, we may give it a name such as the first development team so that the content of the work cannot be understood from the team name. However, when developing software as a business in a company, it is common to belong to some team and work with other software engineers to create one software.

You may not be very conscious of the software development team while doing your usual software development work . But in reality, a team is quite important for software development. Here, I would like to introduce what Father Gutara was thinking from the perspective of what he had to think about the software development team .

Team (organization) composition

There are various names, but if you organize it from the purpose , the following team is required for software development.

  • Product planning team (team that organizes the required specifications of the software to be developed)
  • Development management team ( team for the purpose of management to proceed with development progress and quality as planned)
  • Design / implementation team (design and implementation team, in some cases even integration testing)
  • Test team (team that performs necessary tests before shipping such as system tests)
  • Process improvement team ( team that creates and improves software development processes)
  • Architect team ( team that provides technical support through design and code reviews)
  • Quality Assurance Team ( Team that guarantees product quality and process quality and makes release judgments)
  • Maintenance team ( team in charge of software maintenance after release)

Of course, they may exist as independent teams , one team may serve multiple purposes, or there may be only one person in charge instead of a team. I think there is also. However, in order to develop and release software and fulfill its maintenance responsibilities for the software throughout the product life cycle, a team with the above objectives is required. But the reality is that these teams are separate only when developing fairly large software, and usually one or two engineers are often involved in multiple things . That is the reality, but I think that it will lead to better results if you do the daily software development work while recognizing that you need a team for each purpose as described above .

Team (organization) size

A team has a team leader whose role is to operate and manage the team . Since a team is a group of people, the way the team leader operates and manages the team depends on the number of people. According to Gutara’s experience so far, in the case of a software development team, there was a boundary between 5 people and 20 people , whose operation and management methods change.

If you have a small team with 5 or less members, you can usually find out what each team member is doing now and whether they are in trouble or well, so the team leader You can keep track of your team without using difficult management methods. If you have a team liaison meeting once or twice a week, you can get a general idea of ​​the development status, and if there is a problem, you can notice it early, so there is not much problem. Of course, information that can be shared by everyone is necessary for basic management such as process progress and review progress management, but a simple tabular WBS (Work Breakdown Structure) will suffice.

If you have a medium-sized team with 6 to 20 members, it will be difficult to manage development with WBS alone, so you will need to use some kind of development management tool . Schedule management using milestones and the work status of individual engineers can be roughly grasped by looking at WBS. However, a tool such as a Gantt chart that can express the relationship between the previous and next work to some extent, such as where the critical path of the scheduling is and where the bottleneck of the work is, is also required. In addition, it will be necessary to use software development metrics for measuring the effectiveness of reviews and tests. You may also need a ticket-based action management system to ensure the transfer of work between multiple engineers .

When the number of team members exceeds 21 and it becomes a large team , it becomes difficult to operate as one team. Since one leader cannot grasp everyone, one or two sub-leaders will be appointed, but even so, one leader or sub-leader can grasp even the smallest details and give guidance through reviews, etc. at most. Up to about 10 people. So if you have more than 21 people, it’s a good idea to split the team .

Even if the number of people in one team is reduced to around 10 by dividing the team, the total number of engineers will be 50 or more when the number of teams exceeds about 5. When this happens, various software metrics are used to quantify and visualize the progress between teams, the quality status of intermediate deliverables, and the quality status of final deliverables, and quickly find out where the problematic team is. Without tools that can be identified , development management becomes difficult.

In this way, the tools required for development management vary depending on the number of engineers who make up the team . Well, in any case, there is no problem if development management is done properly, but it is necessary to be careful because the quality of development management is often not visible until the software is actually released.

Related organizations outside the team

It is the development department that develops software, but there are also departments of other companies besides the development department, which are directly or indirectly related to software development. Sales department that collects market information that is the basis of request materials and finally delivers software to customers, sales engineering department that makes proposals and adjustments for incorporating our products into customer systems, software made by other companies proceed with the procedure to purchase the software purchasing department , accommodate the development costs accounting department and decide whether to stop or proceed with software development in the company’s overall management, management layer , such as department variety exists related to software development To do.

Apart from new employees who only need to design and implement software purely, it is natural that they have been working in the field of software development for 5 to 10 years and proceed with development as a leader. As a matter of fact, it is also necessary to collaborate with related departments within the company.

What you have to be careful about at that time is to have a conversation in the language used by each department . Engineers who develop software often have conversations using software technical terms . In my daily work, the conversation partner is also a software engineer, so that’s not a problem at all. However, be careful not to use software technical terms when talking to other departments outside the company . You will not be able to communicate. 

In other departments I do not happen too much is such a thing, but in the software development department with almost all software engineers are people around because there is a good environment to say, the software of the conversation of using the technical terms It often happens that it becomes normal . Be aware that people in other departments will see you as someone who talks in a way that doesn’t make sense.

 

Software development organizations also have a lot to think about

There is no right answer as to what kind of organization is needed for software development . However, since most software development processes are based on the thoughts of software engineers, software development requires organizations of various sizes and numbers.

Since there is no correct answer, it is often the case that an organization is created by fumbling in each situation . If I have some time, I will write a separate article about the development organization introduced so far with a little more specific content. Well, it will be an article that describes the personal thoughts of Father Gutara, so I hope you read it thinking that there is such an idea. Once you have written an article, you will see a list of specific articles below, so please refer to it if you are interested.

Posted by グータラ親父