Software Contentment

Posted by: rodrigo.goncalves@coffeebeantech.com

Tagged in: Untagged 

According to Dalai Lama, Tibetans have a notion of contentment that they call chogshé [1].

There is no simple translation for chogshé in English, and since it is generally translated as "contentment". However, what chogshé really means is an absence of greed. Literary it means "knowing [what is] enough" or being able to find satisfaction without looking for more. In Portuguese, some people, more specifically the Spiritists, use the word "simplicidade" with this meaning. "Simplicidade" literally means "simplicity" but, in a more religious context, it has the same meaning of chogshé.

So contentment or "simplicidade", according to Dalai Lama, is "something like the virtue of moderation".

In my opinion, we have been living a quite unique moment on the software industry. So far, the old generations of professionals and researchers have accomplished a lot in terms of engineering, processes, algorithms, and the general understanding of computer science. The price we payed for so much accomplishments in so little time is that we became squared and structured. We were obfuscated by our own light. Our processes and systems became amazingly efficient but resulting in cold and sharp systems. For some time, we felt comfortable hiding our own imperfections on supposed UI limitations and well stablished paradigms.

However, Steve Jobs proved that the colorful and curved design is possible and essential. In addition a whole youth of "lazy" kids started making money with chaotic, non-structured, simplistic and pretty applications. They started to question: "Who needs Use Cases?". "Who needs software architecture?". "Who needs structure?"

My last two projects proved to me that the future is somewhere in the middle. We are learning the trade-off between excess and lack of structure. There is a way between Java architectural astronautics and stateless PHP programming. Please, I am not referring to a specific programming language, but to the software engineering and programming technics itself. (you can be very unstructured in Java if you want).

Here at CoffeeBeanTech, we are going to develop the second phase of our new product of Social Marketing. The first phase not only mixes Java with Ruby but also mixes different programming paradigms: procedural x declarative. I am very happy with the results. We still spend lots of time on Web idiosyncrasies imposed by IE and newer versions of Firefox, but it seems that it is a structural thing and has nothing to do with the software engineering itself.

During the development of the first phase, we paid the price of being more structured (some developers silently complained), but the fact is that now our software is very maintainable, stable, resilient and upgradable. I am happy with the results.

I am planning to repeat the same strategy on the next phase. This time, due to the nature of the business, the backend should be more structured. I am anticipating that my programmers will push for the technology, forcing the structure to accommodate existing GEMs. I shall counterbalance with architecture. This might be the price we will pay this time: pay more to develop without bend the ideal structure. The future benefit will be in performance and functionality. Not in stability and resiliency.

It seems that the very same ethical virtue of chogshé is valid in software engineering. We are learning what level of structure is enough. I hope that the next generation comes with this knowledge built-in on their operational system. In fact, it is up to us. We are their teachers. We need to open our minds and try to have a big picture of the historical moment we are living. Doing that, we see that there is no space for software talibans. Every language or every software engineering or programming paradigm has its application, and the virtue of moderation is the art of mixing them all. The virtue of knowing how good is enough. The virtue of chogshé.

--

[1] Beyond Religion - Dalai Lama