I am a chartered accountant (similar to CPA in USA) who has developed many mobile apps, wrote India’s first book on mobile app development way back in 2003, taught hundreds of software engineers at big MNCs and lots of budding students at colleges.
Most people learn computer programming at universities. Unfortunately family circumstances coupled with Indian education system did not allow me to learn programming at a university. There is an old saying in the middle east : “The one who has no one, has God with himself”. I think that has been the case with me.
The reason I am writing this is to tell the world at large about the unique way in which I mastered programming and design. I was inspired to write this blog by noted mythologist Devdutt Pattanaik.
Programming is generally considered to be a difficult task. I also considered it difficult till God started teaching me. I learned programming from many religions. Yes I mean it. It is not an exaggeration.
What Sanatan Dharm (Hinduism) taught me
I started learning HTTP and REST (Representational State Transfer) in 2008. I was interested in making web apps. REST and HTTP protocol are used by web companies for making web and mobile apps. Somehow one day I co-related the Create, Retrieve, Update and Delete parts of REST to the Hindu trinity of Brahma, Vishnu and Mahesh (Shiva). HTTP’s POST, GET, PUT and DELETE co-related 100% with what Hindu trinity taught!
According to Hindu religious texts, God Brahma looks after creation, God Vishnu looks after management (retrieve and update in this case) and God Shiva looks after destruction. So whenever I need to create an object I take inspiration from Brahma the creator, Vishnu the manager and Shiva the destroyer. This way I have been able to visualise and master the object lifecycle. The holy trinity of Hinduism taught me object lifecycle.
A big branch of computer programming is Object Oriented Programming (OOP). Basically it is a technique of dividing a computer program in to different objects. It has taken inspiration from nature. Any natural thing like a plant is composed of various objects like leaves, stem, flowers etc. The biggest problem in managing objects is that the objects are dynamic and can do different things at different times. Once objects become complex in functionality and large in numbers, OOP becomes like a rope around one’s neck. Here co-relating with Gods helps me to visualise and analyse object lifecycle.
In programming any object is composed of numeric data, resource data (images, videos etc) and functions (actual code which works on data and resources). Here again the 3 main goddesses in Hinduism help me. Goddess Saraswati is the goddess of knowledge and thus numeric data comes under her domain. Goddess Lakshmi is the goddess of wealth and thus resources come under her domain, and goddess Shakti is the goddess of energy and thus any executable code comes under her domain. The 3 goddess help me to understand the composition of an object. Study of data, resources and function flow as 3 separate domains helps me to clarify stuff in my mind.
The 3 goddesses even inspire me in procedural programming which is a separate branch of computer programming from Object Oriented Programming (OOP).
What Jainism taught me
Jainism is an ancient religion and considered to be an integral part of Hinduism along with Sanatan Dharm and Sikhism. There are 2 main mottos of Jainism:
Live and let live
Having less gives more satisfaction
Over the years I have come to know from experience that the lesser code you have the better it is. Less code means less writing, less checking, less tests, less documentation and smaller team! That has been a direct inspiration from Jainism.
The other thing I learned from Jainism and what Steve Jobs had learned from Zen Buddhism is the power of Zero. Try to reduce features as much as possible. Look at famous apps. All apps which have been well designed are low in feature count and high in quality of implementation. Bad apps have more features and less quality! Less features enable an easy learning curve and better focus for both the developer and the user.
Live and let live also goes well with Google’s motto of ‘Don’t be evil’. Any app which unnecessarily locks a user will be frowned upon by users in this day and age. Thus apps should not try to control a user. They should be enablers.
Jainism also talks about respecting alternate points of view and alternate realities. Thus Fuzzy Logic is something which comes as a second nature to me. Fuzzy logic is used to program intelligence in games and devices.
What Christianity and Islam taught me
Christianity and Islam talk about ONE all powerful God. They have taught me the power of 1. There is also a pattern in programming called Singleton. Every time I do something which has just 1 instance I take inspiration from Christianity and Islam. Even iPhone has 1 main button. We find the primacy of a single gesture in various devices and games.
Every time I need to view something from the top I take inspiration from God. Some times when I have to document something or give instructions to team members I take inspiration from the 10 commandments. 10 commandments were crisp and easy to remember. This is how delegation should be.
What I learned from other religions
I generally like to take inspiration from all sources. So over the years I have taken direct or indirect inspiration from Buddhism, Shintoism, Taoism, Judaism and Sikhism.
So God does teach app development to a human if that human is willing to take inspiration!
Note : I am a secular person who takes inspiration from all religions. I have taken more inspiration from Hinduism because I know it more. I do not ever want to hurt the sentiments of any religion or person.
My twitter handle: @skjsaurabh