Programming: Human Philosophy

This article is just about describing how I perceive programming. The main purpose to write this article, is a constant stigma that I have come across that being programmer is a big deal, programming is hard to learn and understand. Also, from my personal experience, there have been numeral scenarios when people actually asked me, “Do you need to be a CS graduate to become a programmer? Why is programming is difficult? How do you learn it?,… so on and so forth”.

Programming is a simple daily process that we do as humans. On day to day activities that we do, there are several situations that we come across scenarios that requires the skills needed to become programmer.

A problem? Oh! I can solve this.

Philosophy I :
” Programming is art of thinking, decision making and problem solving “

In simple way to put it up, Programming is a simple process of thinking, decision making and execution. The root of programming starts from you. The way you think, process and react to a certain situation to overcome that, is the simple philosophy behind programming.

I would like to take a simple instance to describe the above philosophy.
Assuming you are a coffeeholic person; and badly want to prepare a cup of instant coffee for yourself. What would you do?

Yes, I want to prepare a coffee for myself


Let me put it down here as sequence of steps :

  1. Wash the vessels that you want to use.
  2. Take required amount of milk in vessel.
  3. Heat up a cup of milk in the vessel.
  4. Add 1-2 teaspoons of instant coffee powder to vessel.
  5. Add required amount of Sugar required.
  6. Stir well until sugar dissolves.
  7. Serve yourself with Coffee in a Coffee Mug.

So, if you have ever done this, you are already a programmer. Wondering how? This was a simple process of making a coffee for yourself. But then there was a lot of things that you handled to make the coffee.

Let us re-collect ; once you decided to drink coffee, you washed the vessel required along with adding required amount of milk.
Also, added coffee powder and sugar as well, and stirred it well until the sugar dissolved.

You might wonder, How and why does this make you a programmer already?


Philosophy 1:
Programming is an art of Thinking, Problem Solving, Decision Making and 
Executing to resolve the issue.

If you take the the above instance, you wanted a coffee, was the problem statement; 
how would you make a coffee was a critical part of your thinking and thought process. 
Upon deciding to make a coffee, the decision you take up add sugar or coffee powder 
not to make it too sweet or bitter is part of making decisions. 
Finally, complete process from washing vessels to making coffee was the 
execution from your part.   

This was a simple example, and there are several such scenarios that you deal with, on a daily basis which needs a little amount of critical thinking, problem solving, decision making and this whole process is what defines the philosophy behind the art of Programming.

Philosophy II :
” Programming is a science of communicating with a Machine “

Now, thinking of the philosophy behind programming, technicality wise, programming is a way to communicate.
Communicate? How?

Communication - Simple English Wikipedia, the free encyclopedia

Programming is a medium to communicate with the Machine. In another words, Programming is a technique how we can talk to machine, hence, making the machine do the thinking, decision-making and execution for us.

Taking the same instance as above, for preparing a decaffeinated coffee, now with a Coffee machine. How would a machine deal with it assisted partially by us?

Let us chart it down:

  1. Add water reservoir of the Coffee Machine with water.
  2. Add the coffee filters to it.
  3. Click the switch on the machine to prepare the coffee.
  4. Collect the decaf and add sugar.
  5. Stir well.

Philosophy 2:
Programming is a science of telling the machine how to ingest, process and
store that data, thereby, resolving the issue.

If you take the above instance with Coffee Machine into the picture, you wanted 
a coffee prepared with Coffee Maker, was the problem statement; where machine 
would prepare the coffee/decaf for you. 
How the machine was designed to understand the problem and correspondingly 
process it. Upon processing it, sequential execution to provide an end product 
decauf to consume, was possible as the system/machine was programmed to do so.

The part where programming plays very important role, is, we write instructions that machine will follow. Machines are very literal; they will take our instructions as laid and follow them same way.

Here comes Programming languages into play. You must be quite familiar with names like COBOL, C++, C, Pascal, Python, Java so on.

But there’s an big problem here!!

Well, no!!!!!

Machines understand Machine-level languages, which is otherwise called as binary language, basically the complete representation of the instructions are in bits, i.e., 0’s and 1’s.

Programming Languages Lecture Notes
Basically how Coffee-Machine Instruction would look like in Machine Language

For a human to write such instructions/programs would be a very tedious work. Hence to eliminate this trouble, they come up with an idea of High Level Languages. High level languages are programming languages to interact with the Machine, These languages were pretty much closer to human language; and not having the tedious work of dealing with bits like you do with Machine Languages.

Every programming language have some set of grammatical rules called Syntax that we need to follow, no matter what.
Just like how there is certain grammatical rules we should follow and take care of, no matter whether you are speaking French, German or English.

One major factor that plays an important role amidst this, is compiler/interpreter.

Translator Software is called as Compiler, converting High Level Code to Machine Level Code

Compiler is a simple system software that is responsible for your High Level Programming instructions to be translated to Machine Level Instructions for the Machine to execute.


Coming back, Programming, at the prime, is taking a big problem and breaking them down to compact and smaller problems until they are small enough that we can tell the machine to resolve that for us.

Those are my ideologies about programming. I believe that programming is a very fundamental thing that every person does on day to day basis.
From waking up early morning and deciding what to do next, to going off to sleep in the night, there are several scenarios where you play the role of Programmer dealing with problems, solving them and making things happen and work. Also, I believe that programming should be taught to us from our elementary, because Programming means “We are thinking, making decisions, learning and most importantly letting our brain actively execute“.

If you like the article, hit the like button, share the article and subscribe the blog.
If you want me to write article on specific domain / technology I am provisioned in, feel free to drop a mail at shravan@ohmyscript.com

Stay tuned for my next article on The Programming Principles.

That’s all for now. Thank you for reading.

Signing off until next time.
Happy Learning.

‘Version Control System’: Get a Bit “Git” Culture! ! !

Aren’t still you familiar with Version Control System?

Git is one of the most powerful tools, I feel I have used during my past learnings in the field of programming. It is one open-source tool that I would recommend any person willing to be in programming or non-programming background profession, to learn. People in the programming field should definitely master the use of this software tool.


Perks of learning and using Git is infinitely useful and invaluable.

In this article, we will be talking a bit about,

  • Version Control System
  • Git
  • Github

Also discussing other factoids like How Git works and git commands and so on.

Are you guys ready? Do drop your reviews as well.

Talking about, Version Control System (VCS) is a tool that is used to keep track and record the changes in the files, by recording/tracking the modification done to that code/any sort of file. It contains all the edits, changes and historical versions as snapshots. It basically doesn’t preserve the complete file.
Instead, it preserves the image of the file at that point of time when committed.

Aye, Aye! Developers will definitely understand!

There are two types of VCS, namely,
1) Centralized VCS 2) Distributed VCS

Note: – Two terms, you will be reading more often, Repositories, Local Repo and Central Repo.
Repo is a central place where some sort of data is stored and can be found.

Now, going on with Central VCS is sort of a system that only contains one repo and each user gets their own working directory. Whatever you commit in your working directory, reflects directly to your central repo.
So basically,
– You change something.
– You commit.
– It reflects your Central Repo.
– These changes reflected in the other User’s system as well.

Whereas, in Distributed VCS, it works sort of differently in this type. Here, every user has their own working directory, i.e., the folder you are working/project exists and owns a repository called as a local repo. And another repo called in your central system, called Central Repo/Remote Repo.

CVCS vs DVCS: Which is better??

Whatever you change, on commit from your working directory will first reflect your local repo. And only once you push the content from the local repo, it will reflect the Central repo. And that won’t affect another user’s repo, as he needs to pull that content to have the same content in that user’s local repo and working directory.
So basically,
– You commit the code to your local repo.
– You push the content to your central repo from the local repo.
– The Central repo is updated.
– Other person pulls the code to reflect the same in their local repo.
– Other person’s repo updated.

This is how Git works from your currently working directory to Remote repo and back

I hope this gives you an ample amount of idea about how the Version Control System works.

Jumping into the mains, What are the Git and Github?

People often misunderstand and have very wrong misconceptions that Git and GitHub are one and the same. They are related but are different.

Git is a VCS tool that runs in your system and keeps track of versions of your code/content in your local repo and central repo changes as well on the pull.
Whereas, GitHub is the service for projects that use Git. In simple terms, GitHub is like a cloud storage system, that preserves the code of different versions; a hosting service for Git repos.

Some alternatives for Github are:
→ GitLab
→ BitBucket
→ GitBucket
→ SourceForge,… so on.

Now jumping into simple usage of Git repo in your local with commands and basic terminologies.

What’s a commit?
commit is a collection of content, that records changes to the local repo. It creates a new commit containing the new changes/additions.
Example: $git commit -m “some message in some format”

What’s a Master?
The default name for the first branch; always reflected for Deployment; expected to hold the stable code only.

What’s a Branch?
The pointer to a commit. Basically, if you develop a feature, that can be created in a different branch; since better approach of working with git and also ensures a commit/backup of the code version before this feature is implemented, just in case of some issues. Also, this is the best way to have multiple developers work on parallely on a project.

Visualizing Branching in Git

What’s a Push?
Updates a remote branch with the commits made to the current branch in the local branch; in simplest words, pushing the changes in local to the central repo.

What’s a Merge?
Taking the changes in one branch and adding them into another branch; usually, the branch that holds the base code. The new commits are usually requested using via “Pull Request” before merging them.

For instance, say the master branch has content ‘XY’.
Now you and your fellow friend have been asked to develop feature ‘A’ and ‘B’ respectively.
So, you create a branch ‘featureA’ and implement the code with existing base code ‘XY’, ending up with ‘XYA’ code in ‘featureA’ branch.
Now on pull request and merge, with base Master Branch, it will also have code ‘XYA’ code.

Now, wondering “Pull Request” is?
If someone has changed code on a separate branch of the project and wants to review the code before adding it to the branch having stable code. Then you can put the reviewer in a pull request. Pull requests ask the repo collaborators to review the commits and merge the upstream changes. Pull Requests happens on the GitHub.

Pushing the code from local repo to remote repo

What is “Clone”?
A clone is a process of downloading a complete repo onto your system. Downloads the whole project folder as new content onto the local system with all the commit histories of the project.

What is “Pull”?
A “Pull” is used to receive data from Github. It basically fetches and merges the changes on the central repo to your local repo and working directory. Pull happens on the Git<local repo>.

There are so many other jargons related to Git and Github. I wonder, for beginners, these are few things that I know and I hope it helped you get an idea about how Git/VCS works.

There is much more to learn and explore about Git and Github. You can explore several other things. If you want me to write another article about the Git strategies and also about another article about Git modules like Merging, Rebasing, Resetting, Reverting and so on.

Github : A true Developer’s Social Media Platform

Drop a comment and share your views.

Please play with Git and Github. That is how you learn about Git’s supreme usage.

Utilize the Visualize Git tool for seeking more insights.

Stay Tuned for more posts.
Signing off for the day.