You might see several programmers solving questions in a quick time. Have you ever thought of becoming an “Efficient programmer” like them?
In this post I am going to give you some direct tips for you to become an efficient programmer.
Anyone who knows a bit of programming in some language can call himself a programmer. But the truth is that he isn’t in real. This might be harsh but let me make a bold statement saying that knowing a programming language cannot make you a good programmer. Programming is completely different from learning. Learning is all about knowing the facts and learning about existing concepts and techniques whereas programming is all about thinking and finding new ways to solve a particular problem. A programmer always finds shortest ways to solve a problem.
So how can I become a good programmer? Perhaps “EFFICIENT PROGRAMMER!” .There are several ways but here I came up with some simple but efficient tips that can help you become a good programmer.
1. Be perfect in algorithms and data structures:
A good programmer always knows the way how things work. Perfection in data structures is must for every programmer. The basics of starting to solve a problem is to think about how to store the data. As a programmer you need to know the basic data structures and how they work. Choosing a proper data structure will make your work easy. Which data structure to use! To understand the importance of data structures and how to choose a particular data structure for a given problem, let us take an example:
Example: let us consider the following problem:
“There is an army of robots aligned sequentially .Your task is to replace the robot from that position and place it in the specified location.”
To solve this problem, our first step is to think “How can I store an army of robots in a continuous manner? “ We have 2 options:
2. Linked List
Next question to be raised is “Now among array and linked list which one to choose?” Well, the task is that we have to remove a robot from a specified position and place it in some other specified position. If you know about data structures then you might already know that insertions and deletions are efficiently done in case of linked lists whereas arrays will have to maintain the overhead of shifting the elements after successful deletion. So the data structure which is to be used for this problem is Linked List.
In this way if you have the basic knowledge of data structures and how they work, you are 50% done with solving your problem.
Similarly having the basic knowledge on various algorithms will let you map your problem with them. For example, your problem is to “What is the efficient way of searching a particular key in a million keys?” One might start thinking as “Given a key I can compare it with all the keys sequentially and when the key is matched at a particular location, I will stop searching .“ This strategy works but it is not as efficient as you think. This method takes O(n) time complexity. So how can we make I better? If you know about searching algorithms like “Binary search” you are done solving this problem. We can use binary search to solve the problem.
In this way if you are familiar with some basic data structures and some algorithms you can solve almost half of the problem because the remaining half would mainly depend on the implementation.
So start learning various algorithms. You can refer my recent post on:
where I have clearly specified top online resources for learning programming from scratch.
You can also check my website for different topics on “Programming, web , Placements and mobile app development in android.
There is no other shortcut and magical way you can learn programming. Just practise. Try to solve as many problems as you can. There are several websites which conduct online coding competitions .Websites like Hacker rank , Code chef , top coder are some of the best where you can practise coding. If you are a beginner then I suggest you to go for Hacker Rank.
3. Participate in coding competitions:
One way to show your potential is to show yourself. In this competitive world you must show your potential to others so that they may recognize you. So start participating in several coding competitions and hackathons online .Participate in Google’s code jam, ACM programming contest and top coder’s monthly contests. Participating in such events not only gives you recognition but also gives you lot of practise. Once you start participating in these events your mind automatically turns from a normal person’s brain to a programmer’s brain.
4. Start small:
This is where most of the students take a wrong direction. Do not go for tackling a professional level problem initially. Try to practise beginner level problems first and then go for a bit difficult problems. In this way, solving simple problems initially will definitely boost up your confidence. Instead if you go for an expert level problem then you will have to quit solving the problem within a few minutes. So for beginners it is best to start solving simple problems.
When you are trying to solve a problem whether it is a small one or a big one, dividing the given problem into a sub problem can make your life easy. Try to solve the problem using smaller inputs and then move upwards. This is what I call as “Bottom up” approach.
5. Never give up:
This strategy works in different situations but in programming whenever you are unable to solve a problem, it means that you are not thinking the right way. So try again in a different way. Think various possibilities. Sometimes when you are unable to solve a problem you definitely feel like quitting the job. But that is not the right thing to do. Just be calm and think in a different way. If you are a beginner, it takes some time for you to get adapted to problem solving. So try and try until you get succeeded in solving the problem .Even the greatest programmers have faced the same situation while solving programming problems.
Any problem can be solved .Just it needs a bit of concentration, patience and lot of practise.
6. Ask google:
This is the most important tip and can be considered as the “Tip of the post”. If you are stuck with a problem do not give up. Ask your friend google. You can find solution to almost any problem on Google. Try posting your questions on websites like “Stack Overflow” where several programmers answer questions almost all the programming queries.
“Always remember that you are not the only one who faced the problem. Somebody might have faced it and found a solution! “
7. Love to code :
If you really want to become a good programmer then among all the aspects what you need the most is “Interest in programming!” .This might seem funny but without having any interest in programming, you cannot be an “Efficient programmer”. Do not code for the sake of passing an exam or to get a job. Coding is all about fun. So instead of liking to code, love to code. Always be enthusiastic and excited to meet new problems.
Eventually I want to conclude that no one becomes an expert in programming overnight. It takes a lot of time, effort and hard work which pays off.
So start practising and become an “EFFICIENT PROGRAMMER!”
Please share your view on this post in the comments !