Programming: From Beginner to Expert
Expert at anything was once a beginner.
Programming/Scripting is a method to communicate with any machine especially to ask machines to perform ordered task. Since early 2000, hardware has evolved from VLSI to modern day compact chips performing operations within mili seconds. We merely reach to the point when hardware may limit the execution of our script. There are other way around like using network of computing devices for a single operation. We certainly are not discussing about it. In this blog we will be talking about the good practice and patterns human brain can follow to become a good script/code writer.
‘Expert Programmer’ is a virtual term. I prefer the word ‘Experienced’ rather than ‘Expert’. Expertise are those trait that comes with hard work and long term exposure to any field. Thus the significance of Experience is equivalently essential for an individual to be an Expert. Since there are numerous programming languages, each for their own specialized functionality and fields of implementation and a lot of them falls in the same area of implementation(Web-application, Software Development).We can differentiate them with their main fundamental components. There are basically the scripts that runs under web with HTTP protocol and script running for an OS for a single user, which can be called Web-Application of scripting. In simple words we can call them as scripting run via browser and software installed. (As I am expecting the reader to be fresh graduate.)
In web programming, The most common and popular languages used are PHP, Java, Asp.net, Ruby, Python etc. When I was a fresh graduate back in 2011 I always wondered how the f×ck did script did their job while not being noticed by anyone? Where do you write the script and How everything worked? Later I realized there are a number of areas contributing to make the magic happen behind the curtains. This article may not dive deeper into each area but I will try my best to briefly explain the WTF system that runs beside the browser .
When you enter some website address like Facebook.com in your browser and hit enter , you are now going to a computer where the files for the website are . In simple word, there’s a computer you are remotely excising somewhere in Silicon Valley from your laptop which whose name is Facebook.com(domain name) . Other URL like ‘HTTP://example.com’ is also a computer likewise to facebook.com. There are mechanisms that are hidden to the user. Hiding all the abstractions and translating it unto a understandable language, all website URLs have IP address something like 11.22.33.44 probably named John’s computer or Ben’s computer. So when you write some web address like http://john.com, you are taken to john’s computer. Now the question is when you visit that URL, how the hell you see a web page with nice slider and all that fancy content? The programming thing that I’m talking about is ready to be disclosed, the mystery.
With john.com, you are taken into john computer. John’s computer now has installed a web server. Another term came up suddenly, ‘web server’ but its very simple. It is just a interface to enter into an operating system. Johns computer has an OS and software like Apache or nginx or similar which open a secure port that allows user to enter into the actual system. The magic mystery is probably unveiled now .
We write script, which are compiled by the compiler or interpreter. The compiler is installed into that OS and we write script and save it as file there in johns computer. Since john’s computer serves the users request, it can be treated as server. So another term server just got induced. Don;t get anxious yet . Server is just a remote computer which should always be turned on in order to respond to the request. We install php, java or any interpreter, that reads the script we have written and does the job as it is instructed. Isn’t that simple?
Now another question is which programming language you must choose? Well the answer is simple. Sometimes you write script in the language that is used in your company that you do intern or you search the company which uses script that you like. Definitely there are advantages of using some languages over another the area that it specializes for. There are rumors of using some languages depending on the number of visitors but guess what It’s just a hoax. I am going to write another article covering this later. But the main thing is we must first understand the user’s requirement and select language accordingly.
All languages serves the same request and respond in same way. Its just like using English or Chinese. The only difference is we need to setup the environment so that Chinese or English is understood. We setup or install LAMP tech. like Apache servers so that PHP language is understood. We install java on the OS environment so that java language is understood or interpreted. So we go to china and speak Chinese there. We go to USA and speak English. Going to USA is exactly similar to installing English interpreter. Now we code or script in English.
Talking to the real world, most inbuilt functions for all popular languages are in English word. This is just a way some defined actions are taken and understood. Well here bargain came up the new term “inbuilt functions”. they are nothing but just commands shortcuts like saying search in English. We are given a task of searching car key in room. Well this is a task. Now similarly we call search in a sentence for a word. In PHP, there is a function str_pos which finds that word “love” is in 2nd position in the sentence “I love this world.”
Coming back to expert programmer:
So the first thing to be an expert in English is knowing all the English words. A toddler learns everyday the new word and by the age of 7 he almost speaks fluent English, in condition his parents speak English. So the main thing is the learning environment. Exactly similar, we write PHP a script and PHP listener or interpreter understands what we are trying to do. When I understood script we write are understood line by line Like we read book, then computing machine is just an English speaking person.
Lets not deviate this time. Being expert English speaker relies mainly on knowing all words and usage of correct grammar. Now you got it. Becoming expert in php exactly the same. Know all words called inbuilt functions and know the grammar called syntax. Now you are expert. The more you speak English the more you know it. the more you code in php the more you know. Its true they both are not analogous. But the main theme is the same. So you keep on talking in php language and you keep on being expert. Yes expert. You keep on programming in java and you are becoming expert in java. the same in ruby and so on in asp.net. Don’t give up. Just keep on communicating. 50% give up in first 3 month. Its just because you do not realize the words are main thing.
So its like vocabulary. sadly partial truth. you are missing grammar my friend. If you merge grammar and words you really are an expert. The vocabulary is pre-defined programming inbuilt functions and grammar is web server and html for web. 99% give up on grammar from 50% 3 month interns who give up. The more appropriate term might be “Experienced”. You become experienced and get used to the language you have been writing.
Generally while learning we get confused by so many terms: html, css, javascript, webserver, apache, database, server, .htaccess, php modules, json, apis, gateways. There are really a number of things we must be familiar with. We can treat them as english keywords like nouns, verbs, conjuctions etc. If we knew the connection between them and the roles they play making the bigger picture of complete web system, we truly become expert and experienced.
Similar to many elements forming the web, there are many areas of work as well in terms of employment and job category in programming. Some prefer designing and have unique creativity. They work in html, CSS for the display part featured by JavaScript for animated visibility. They create cool slider, banners and play with colors. Some prefer inner programming parts executing or scripting the whole algorithm. For project with large features, it takes time and need to carefully plan the resource management. We can call them as project managers. The system should be bug free and need to be tested properly. We call them as quality assurance. Few personnel’s are needed to handle the servers.
Definitely the path is lengthy but the journey will be fun and can be covered in time. Working with scripting is best thing for those who are willing to learn in progressive and incremental manner everyday. New technologies keep on coming and we must keep pace with that keep ourselves updated. The most fun part is you will be learning new things every next day. Sometimes its totally new sometimes it’s just an update to what you already knew. But the world of scripting and programming never stops teaching you thinks. So good-luck for invincible journey my fellow coders. Just Remember never to give up and stop learning. CODE THE ROAD Amigos, Adios.