10 Commandments for Aspiring Programmers from India

It has been 9 months since I began my journey as a “professional” software developer. I’m a small time React developer by profession and a big time JavaScript enthusiast. The 9 months in a software company has taught me so many things. And I want to share them with my fellow beginners. Nothing original here. But everything is essential.

NOTE: Read “Indian” as “Average Indian wannabe programmer who does not even know what github is used for”. We have brilliant programmers here in India, in the Silicon Valley and at places all over the world. Cheers to them for breaking the barrier and being successful programmers.

Being an Indian has its own baggage of disadvantages. We have no clue as to what a software developer is supposed to do. We have nobody to teach or to guide us to be a better programmer. We have no vision of our own. Back in the college days, I used to think that I have a certain vision of how a software developer should be. And during my internship period, it was completely demolished. Nevertheless, I started building my own perception of things from scratch.

I have seen mechanical and petro-chem engineers being selected as software developers in big software *cough* *service* *cough* companies. How the heck do you expect them to write a piece of software is beyond my comprehension capabilities. But the fundamental rule of coding is that anybody can code. You just have to have the will. Period.

Let’s come back to the topic. If you are an undergrad student and you want to be a software developer, you need to know a few things beforehand.

  1. Impregnate this on your mind- You know nothing. It’s only when you clean your slate, that you can take in new ideas.

2. You can start your journey with C, Python, Ruby or Perl. If you ask me, I’m biased towards learning C at the beginning. C is clean. There is no magic in C, no object orientation. Just plain imperative language. You tell it to do something and it will follow your instructions to the letter. You have to write every little thing by yourself which makes it a great learning experience.

3. Linux = ❤️ You have to get your hands dirty with Linux! Learn the basic commands of Linux. It’s absolutely necessary. We have used Windows for the better part of our lives. Now is the time to change. Remember, 96 percent of the top 1 million web servers are running Linux. The remainder is split between Windows and FreeBSD. My favourite flavor is Ubuntu. A lot of hardcore programmers would laugh at us for using Ubuntu. But remember point #1. You are nothing. Start from the basics. Use Ubuntu. Then work your way up to more advanced (feudal) flavors. 
Bonus: You’ll get to play Tank from Matrix! 😎

4. Do not use IDEs. I repeat, do not use IDEs. Oh, you don’t know what an IDE is? Cool! Don’t even bother. But if you do use an IDE like Eclipse, quit and use plain text editor like Sublime, Atom, Vim, Emacs etc. Compile your program through command line. Run your program through command line. That’s the right way to learn. We need to indoctrinate the beginners this way.

5. Learn to scrap your entire code and do it all over again if you find a better way of doing things. I can understand that we have a mental inertia that fights us from rewriting the module. But once you develop the habit of improving your code without hesitation, you’ll also develop a confidence. It’s an admirable quality to have in a programmer.

6. Don’t borrow logical blocks from StackOverflow. Try to write them on your own. You don’t have deadlines to meet and deliverable to deliver. You can spend as much time as you want to hone your skills of writing clean and superior code. Use StackOverflow only when you are absolutely and undeniably stuck. And use StackOverflow to see how other programmers have implemented the same logical block that you have written.

7. Learn the programmer’s slang and abbreviations. What’s an IDE? What’s a PR? What’s a Yoda Condition? What’s cruft? You’ll get to see this kind of language a lot on a daily basis in the “issues” section of any popular Github repository. It’s fun!

7. Connect to the programming community through StackExchange websites, Twitter and most importantly, Github. Dig into Open Source projects on Github. Start contributing to a project. Start from small contributions such as correcting wrong documentation, grammar, examples etc. Then start refactoring the original code and open a PR. What’s a PR? For that, first you need to Learn git and Github.

8. Is it too much to do already? Don’t lose hope. Don’t be in a haste of becoming a great programmer. It takes years and years of beating on your craft to be great at anything. Did you know that Ut. Zakir Hussain used to play Tabla for 23 hours a day? It’s called Riyaz (practice). It’s the key to everything :) Enjoy the journey. Be eternally curious like a child.

9. This one could be a little controversial. There are many institutes at every nook and corner that conduct certification courses. 99% of them are useless. Do not waste money on these courses unless you want to take a proprietary course such as Cisco Career Certifications. You can learn Java, PHP, HTML5, CSS at your home and on your own. They will not teach you how to code. They will only teach you to be employable. There’s a difference.

10. The 10th and final commandment. Learn to unlearn. Technology is only going to change. You cannot stick to good ol’ Java applets or servlets and expect to be employable. No. You want to be where the industry is headed, unless you’re a genius! Then you’ll create a trend of your own.

Being an Indian programmer is hard! You see and admire the programmers from Silicon Valley and a feeling of inferiority may sneak in. Worry not. Stick to your guns and stick to the available tools. If you give your 100% to coding, you’ll get many folds back. Good luck! Here’s a glimpse of where we are currently headed. You should aim for this and beyond.