God taught me programming
Saurabh Jain
Founder, Fun2Do Labs (EdTech Startup), Ex-Vice President@Paytm, Startup Guru
I am a chartered accountant 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 visualize 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 into 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 visualize and analyze object lifecycle.
In programming, any object is composed of numeric data, resource data (images, videos etc) and functions (actual code that 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 goddesses help me to understand the composition of an object. The 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, fewer tests, less documentation and a 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! Fewer features enable an easy learning curve and better focus for both the developer and the user.
Live and let live also goes well with the old 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. 'Ahinsa parmo dharma' teaches that you should not do anything that causes harm to the user. Thus user privacy should be respected and the user data should be protected at all costs.
Jainism also talks about respecting alternate points of view and alternate realities. This helps a lot in product management and managing developer communities. It even helps in understanding Fuzzy Logic. Thus Fuzzy Logic is something that comes as 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 the iPhone had 1 main button earlier. 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. Sometimes 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
Engineer in a Data company | Ex- ICAR-IISR, Xiaomi India
5 个月Wow.
Ex-Google Developer Student Club Lead '22 || Harvard WEAmplify'23 Scholar || || Vice chairperson GeeksForGeeks Student Chapter || Machine Learning/Data Science
1 年A must read, Amazing !!!
Application Development Senior Analyst @ Accenture || Ex - Amazon || AI || GTIC and Open Source Contributor || Android Development?? || Microsoft Azure 900 Certified
2 年This has changed the concept of religion and gods!
Product Leader | SAAS | EdTech | FinTech | Consumer | PM Mentor
3 年This is so interesting to read!
Pranic Healer, Head Of Fitness @Ileseum Clubs, 2x Author & Fitness Advisor | As seen on TedX, News Karnataka and more.
3 年Genius is the word