A good programmer should be fast & his/her program should be logically correct. S/he should appreciate the concepts by learnt and implement them in a program effectively. The programmer should have the idea of creating version-one of any program and then developing as well as optimising it to create future versions of the same. One should challenge his/her guide or co-programmer. If there is no challenge between the programmers then they will stop evolving.
So most of the tips mentioned below are lessons learnt from failed endeavours, they are what. So lets dive in.
- Why be a programmer?
Decide why you want to become a good programmer: Is it because you want a job, preferably in a high paying software firm? Great. Then you are set to reach NOWHERE. All good programmers known today are good because they loved what they did. Develop interest in programming. Programming is the only branch of engineering where you can straightway apply what you learn. Your dad may have a car but he certainly won’t allow you to tweak the V2 or swap it for a v6 just to see what happens. But with computers you can do whatever you want. Install a virtual OS and run it. Then, when you are done, remove the virtual hard disk. If you are good at what you do, you will get paid and surely get that dream job. Have you ever bothered to find out what all these companies do and the enabling technologies behind their products or the kind of R&D they do? Jobs will come. Don’t make yourself a sucker for one. Sachin is not a great cricketer today because he decided to play cricket to earn money and get dozens of endorsements.
- Which Programming Language should you learn?
Very often people equate good coding skills with the number of programming languages known. That’s just damn untrue. While knowing a lot of programming language is good and sometimes, even, essential; it is more important that you know one or two languages very well. To be good at a language takes years (at least 2 years). Being good at a language means, you understand where it is best used and where using that language makes no damn sense. On the other hand, knowing a language takes anywhere from 3 days to a week. If you are a beginner, learn C first. Don’t buy Yashwant Kanetkar. Buy the book “The C Programming Language” by Brian W Kernighan and Dennis M Ritchie. This book is not the easiest but is the best. It’s a small book but it is the most powerful. Generations of programmers have been brought up on it. Programming is an art (not a science. Yes you read it correctly), and like any art, it requires painstaking effort.
Some people suggest Python as the first language to be learnt. Python is certainly a good language and is easy too. But you will have to rely mostly on the internet for help as not many around you would know Python. Also, C has the broadest usage among all programming languages. Also please DO NOT use Turbo C. It’s so outdated. Use GCC. If you are in Windows download Dev C++. It has GCC.
- Polished Algorithms
Any good programmer has a good understanding of Algorithms. It is not necessary that you know each Algorithm by heart (in fact good programmers never learn things by rote) but you must understand when to use what. Algos will broaden your understanding and give you new ways to tackle problems. Another important thing is Data Structures. It is more important than Algo. Once you have chosen (or developed) the correct data structure, the algorithm becomes self-evident. For Algo, read the book “Introduction to Algorithm” by Thomas H Cormen et al. You may also refer Andy Tanenbaum’s “Data Structures in C and C++”. Also if you have desires to participate in coding contests (the respectable ones), “The Art of Programming Vol I to V” by Donald E Knuth are mandatory. Also may be “Concrete Mathematics” by Donald Knuth. Again reading does not mean remembering everything. Just try and understand whats written. You will surely erupt out as a challenge for other programmers in coding contests.
- Why to Join Coding Contests?
Coding contests are good for developing your algorithmic skills and they make you think fast. Its a good idea to participate in ACM ICPC or Topcoder.com. Then there are coding contests (like Sun’s Code for Freedom, Google’s Summer of Code, Microsoft’s Imagine Cup) where you develop a complete software. Such contests are spread over many months. Both require different sort of skills. You may be good in one and bad in another and yet you could be a good programmer. Contests like ICPC require lot of practice, fast thinking and you are expected to keep Algos at the back of your mind. CFF, GSoC, on the other hand, requires creativity and focus spread over a long period of time. You don’t have to come up with solutions too fast and you don’t have to mug up Algos. ICPC is like T10 while CFF,GSoc and Imagine Cup are like Test Matches. I would suggest you to participate in both types and then decide if you want to focus on either or both.
- Get the Patterns in Programming
Any art is learnt by emulating. And therefore, you must emulate the best. Design Patterns are tried and tested architectural (of the software kind) solutions to some commonly encountered software design issues. And therefore, a basic knowledge of some common design patters in needed if you are planning to develop something that is even moderately complex. I suggest “Head First Design Patterns” from Oreilly as the first step.
- Learning by emulation
Emulate the best. And this is possible by reading books written by the best and/or going through code from some of the best free software projects. I would urge anyone serious about programming to read the book “The Art of Unix Programming” by Eric S Raymond.
- Collaborate with a Guide
You can also learn to program by joining a good workshop or an Institute that offers professional certification. Such certificates are an added advantage which fetching a job.
You can also apply for Internships. This will help you inculcate a workforce habit and also brush your basics. It will also let you know the requirements of the company/industry and help you build apps accordingly.
Here, we provide you with a list of successful Institutes that offered thousands of students with their dream jobs by assisting them in Skill Development. Courses such as Skill & Personality Development cost less but has an ever-green affect on the student’s attitude. It develops your confidence to face any sort of situation! Check out if there are any such Best Training Institute in or nearby your city. Click Here.