The perception of Google developers

For many individuals, Agile implies a lot of things.

The high-level Agile Manifesto represents something that is believed to be close to the manner Google engineers are thinking about developing software.

If you didn’t know what the significance of the manifesto is, this has been very carefully written in order to capture the essence of Agile in minimum words and it reads as below:

“We are uncovering better ways of developing a software by doing it and helping others to do it. Through this work we have come to the below value:

Individuals and interactions over processes and tools.

Working software over comprehensive documentation.

Customer collaboration over contract negotiation.

Responding to change over following a plan.

If you start to analyze in detail these principles, you can tell that even though at first the principles seem worthy to consider, in the whole scenery we can spot some problematic elements. These elements focus on the “need for speed” and short-term thinking regarding the work on innovative development projects in businesses such as Google.

Let’s have a look at the themes in Principles behind the Agile Manifesto.

It is well known that Google has a development style which puts the individual in the center of attention. Some of the principles that apply are:

Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

The best architectures, requirements, and designs emerge from self-organizing teams.

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Continuous attention to technical excellence and good design enhances agility.

Simplicity – the art of maximizing the amount of work not done – is essential.

But there are also other principles which are not part of Google’s development style. These principles led to the short-term Scrum process. [Scrum is a framework within which individuals can solve challenging adaptive issues, while providing products of the greatest possible value in a productive and creative manner.]

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Business people and developers must work together daily throughout the project.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

These principles mentioned above seem to be suitable for specific kinds of growth, most particularly consulting or contract programming software, where the client is external to the organizations. But this style of short-term planning and direct customer contact, it’s not great for software which has a simple structure and lots of hidden internal complexity, software which isn’t valuable until it’s fairly complete.

And the fact is that Google creates revolutionary software which has never been written before, and which doesn’t work until complex subcomponents are written.

Google has been a pioneer in addressing the problems and possibilities of big data for a long time. Two of the most significant Google projects that have changed the big data landscape forever are Borg and Bigtable.

Borg & Bigtable

Bigtable was created as a distributed data management storage system. Many Google projects such as Google Earth, Google Analytics and Google Finance store data in Bigtable. The fact is that in terms of information size and latency requirements, this app has very distinct needs.

Borg, on the other side, represents a way of handling the resources of the entire data center as if they are one giant compute node. Borg offers a core brain to manage duties across the information centers of the company.

These 2 projects which represent an incredible form of innovation, require considerable up-front design time. Also, even though they have simple external interfaces, the internal complexity is surprising. Actually, this type of software takes 8-20 months to deliver the first working version to the customer.

It is clear that projects like Borg and Bigtable are anti-scrum. On the part of the technical leaders, long-term thinking is a must. Plus, instead of working on something that would satisfy a tiny need for a short period of time, they are laying a foundation for a profound change in the manner cluster software was created. This approach method has influenced the entire development industry.

How to make the Agile Manifesto Principles to match more Google style development? Here are some suggestions.

If you are effective not only in understanding the requirements of the customer, but also in delivering on your promises, the customer will never search for alternative technology suppliers and will depend entirely on one reliable company’s IT facilities. So, IDENTIFY and SOLVE the problems as soon as possible, UNDERSTAND the clients and REVOLUTIONIZE their world.

Developers are expected to create a Google Design where they should describe the project, what targets should be achieved, and illustrate if it can’t be done in some other ways. In order to get early feedback before the project starts, the document mentioned above should be distributed with the stakeholders. This will ensure a clear expertise of when the project can become a success and how it is intended to reach it.

Keep in mind that all major design aspects should be clarified and captured accurately in the document at all stages of the project.  

Focus on progress, not perfection! Do not try to attain perfection in the short run. Be flexible, reinvent continuously at each stack level and most important: innovate in leapfrogs!

Very important is also to ensure that the final product fulfills high-quality standards. The product’s quality is more crucial than the moment it takes to get it done.

Start delivering quality software on time.