In the previous parts of our discussion we focused on internal team building and communication within the team and self-motivation. Today we will go on. We’ll talk about how all this fits into the environment of Agile and talk about the production of products in Agile environments. So let’s get started.
Quick Analysis of Customer Needs and Business Requirements
Consider first what the requirements are today for all manufactured products. In my opinion, these are:
- The needs of the customer – the customer receiving exactly that what he needs.
- Gain customer business – providing the customer what they are able to quickly see, eg write some new controls or adding to an already profitable business for the client.
- Speed and cost of production of the products – the customer gets something tangible as soon as possible, any evidence of our hard work. However, sometimes we get what is called spaghetti code, and we face a choice of whether to wade in this shit, or simply notify the customer that we need to refactor the code. Despite the fact that if a client can not get any tangible evidence of our work, and it seems that they pay for nothing, that is not so. Sometimes the two weeks I spend on refactoring code allows the customer to save time and money, since all the new enhancements occur much faster. This shortens the development process of a few or several years to a few months.
- Willingness to constant change – in the IT environment we have a saying: “Three things are certain – death, taxes and change.”
- Provide high quality client software – this is another very important thing. If the software we deliver is too complicated and counter-intuitive to the user, no one will buy it, and then both we and the client lose, we will be disappointed in the success of our software.
- Use of the latest technologies – sometimes it is worth considering what technology to use. However, keep in mind that what today is great, tomorrow it may cease to be developed.
After careful analysis of the above points, let us consider what affects the fulfillment of all the requirements. Well, first of all, a high level of competence in many different areas of scientific and technological knowledge. As we can all see in the list above, very often these conditions are difficult to meet, and sometimes they are mutually exclusive. Now, let’s look at the couples of timeliness and quality, high functionality and low cost of production, uncertainty and predictability, mobility and stability. What do they give each other? In fact, they create the need for project leaders and software development practices that are focused on delivering business value to the customer.
Agile Helps the Project
What is in my opinion very funny, most of the software development methodology provides us with all the general principles of development projects. They also include all aspects of project development and describe them in piles of documents. They are therefore really stiff and resistant to change. In my opinion they are just stupid. However, Agile offers us something else. This is only a basic set of rules that we do not really know and understand, so you just earned yourself working conditions in which to find out. Mostly it is just that the teams that are acting according to a top-down set of rules really depend on the person who developed it. It is in my opinion a very thin seam strategy, because the person who developed it may suddenly leave the company or project, and then everything starts to fall apart. The Agile working people depend on their individual abilities and their ability to identify and solve problems. In this way what we get is always very thoughtful policies and processes, which really is the only solution when managing highly complex projects.
Agile is really a very loose set of values, principles and practices. It allows design teams to take on new challenges and create ambitious and innovative projects. It is perfect for wherever the project team needs to make the software very flexible and quickly adaptable to any changes. And really, that is what we manage. We provide customers with high quality software quickly, which introduces massive changes including a complete reconstruction of the existing software. With Agile, we are able to accomplish all of the major business objectives of our clients. These are mainly continuous innovation, adaptation to the needs of products, shortened periods by up to several weeks of delivered software, full adaptation to the changing conditions of both people and processes, and very reliable results.
But really, the production of new products requires not only from us, as employees, continuous innovation in the methods of operation. The same forces work against the management. In fact, all attempts to systematize the idea of anything are murderers. All innovative products that are created around the world, really do not arise in rigid work environments but in adaptive teams of work culture, which require only the individual members of a large team of self-organization and self-discipline.
Creating Innovative Products
As we all know, no matter what the project is we will be surprised in the near future, as it is amended, the details of which we can not predict. In the case of Agile methodology, each of the projects has built into it at the beginning the existence of adaptability. They are a critical point for each of the projects. Or rather, they can not think about the rules, which are created by innovative software. Pay attention to one thing, namely, that during the preparation of projects, we often give the customer deliverables that meet the current requirements, but also have the ability to adapt and change when they are faced with the future design requirements. By using these methods, our products are excellent by themselves technically.
Let us remember also another key thing. Each of our products should be designed in such a way that at a certain point we could hit the target market for the sale and could get the biggest increase in value compared to the cost of the investment. Agile affects the rate of return by focusing on human efforts, removing the resistance during the software development process and reducing any difficulties encountered. In fact, there is continuous monitoring of all products involved. This allows you to assign appropriate priorities in the execution of specific tasks. Short iterations in the manufacturing process force the team to target a much better reflection of individual elements of each new functionality and the scope of their implementation in the code. In this way we are able to really quickly eliminate elements that are not very important for the end user and thus we are able to deliver software much faster and using less labor. We have long since replaced the other thing, namely, creating tons of unnecessary documentation through regular project meetings. There is another very important step for us. Already during the recruitment process we make sure that we went to the people who already have some abilities that are needed for the implementation of our current projects. We ask everyone to perceive changes in the project, not as another obstacle to produce a great product, but as part of our joint efforts to provide the best software in the shortest possible time. Also take into account all the constraints imposed on the project, whether they are time constraints or those that flow together with costs incurred in the project. These actions support the increase in profits from the project and build a positive image of your business. In fact, processes, tools, contracts, and all schedules are tools that help us only at work, but we try to never let them be the most important thing for us. We focus always on the talented staff that still has the opportunity to develop their skills. In this way we provide fast-acting deliverables and maintain good relationships with customers. We are also able to respond quickly to change, so that almost always we deliver a working product at the right time, while remaining within the budget set by the client, which is always consistent with its scope and meets predetermined quality standards.
In fact, all innovative products are the result of the work of the people who have the appropriate knowledge and experience, so that they can make full use of the tools provided to them. Sami develops our processes, and over time there are numerous design changes. Agile supports the movement of people and their interactions by careful attention to the concepts of self-organization, self-discipline, and egalitarianism, and estimates for the individual and its competence. Agile is a social movement led by the desire to create a specific work environment and belief that it is important to adapt the environment to provide customers with innovative products.
We must also remember one thing. Even if we create the most detailed documentation, it does not really satisfy any customer if what we deliver does not meet his assumptions and requirements. Agile as a methodology for software development places great emphasis on providing client deliverables, which are actually the next version of the final product. This does not mean that the documentation is completely unnecessary if it supports communication and collaboration. Consider the following example taken from everyday life.
An Example from Real Life
The client often does not really know what he wants. Our task is to hint to him, what they really need from us. Sometimes it turns out that what the customer thinks is what he really wants or needs. A client came to us once and said, “Do me a game, it might be a board game …” After considering the situation we came to the conclusion that we do not know what kind of game is required by the client. As we spoke about the board game, we came up with a total of four games. The first was to be a role-playing game, up to a stripped down, the other was to simulate a game played on a chessboard, and the third was to be similar to the game The HIVE, and the fourth was to be the TimeLine.
After presenting our ideas to the customer, it turned out that he needed a simple game, serving OpenKinect and his choice fell on the TimeLine, however, that implementation lasted two weeks. Today our client’s customers, waiting for their orders, can play on the big board in the TimeLine using Kinect Xbox. And we are all happy.
In fact, just the idea of cooperation with the customer means that all who are involved in the project must create one good team in which everyone perfectly knows his role and his responsibility for the product. It is because of the statement of the views of all the major players in the project and the confirmed mutual desire to cooperate and allow us all the best with no major obstacles that we can adapt to the changing requirements of our customers. This enables us to develop appropriate business value to the customer and the relevant results, incurring very small project costs. Remember that contracts signed with the client are important, but really without the cooperation of the customer they are not of any benefit to us as a design team and for our company.
We all have a lot we know about our customers, managing people and other aspects of Agile. In conclusion let us consider another example. However, in the case of poor communication, the client tells us, make me a swing, thinking about a tire hanging from a tree. We, however, think that the customer wants a swing, which has a handle, a place to sit, or something else. What is created at the end is a horrible creature, which resembles a swing, but it really does not have any of the functionality of our swings. In this situation, the team is disappointed because it feels destined to fail, and the client for sure will never use our services.
In the next article we will return to the subject of interpersonal communication for a moment, and we will learn of human personality types, and then we will have practical knowledge and know who is who in the Agile team.