How to go from a n00b to a l33t coder.
First of all, give yourself a pat on your back for opening this article. This means you are concerned about the branch you’ve taken (CSE, IT, CCE) and want to excel in it. If you are a fresher, you have four years ahead of you and plenty of time to learn things, but starting early has its own benefits. For one, you can sleep in PSUC classes having covered everything already. If you’re in your senior years, or in any of the non-computer oriented branches, worry not. We got you covered too.
So, how to begin?
- Say “Goodbye” to your good ol’ TurboC IDE. While it will be relevant for your exams, the IDE is ancient now. Switch to Code::Blocks for writing and running your C/C++ programs; it’s convenient and has great autocomplete functions along with a plethora of other features absent in Turbo. Also try editors like Visual Studio Code and Sublime Text which can be used with all languages. The only downside, you’ll have to learn to compile and run code yourself.
- If you’re well acquainted with basic programming, skip to step 3. Otherwise, take up an online course on programming from sites like edX , Coursera. Take your time. Progressive learning with time constraints is a methodical way to go.
- Now if you do have the basics clear in your mind and are clueless as to how to proceed, take up competitive coding. Solve truck-loads of easy questions first, then switch to tougher ones. Stick to any one website, HackerRank, SPOJ, codechef, and so on. I recommend HackerRank and Leetcode if you are new to competitive coding.
- Take up Harvard’s Introduction to Computer Science course: CS50. I recently got acquainted to this EdX course and can’t emphasise enough on its brilliance. Though not for the faint of heart, this course takes you from the bare basics – the very nitty-gritties of computing – and follows an exponential curve covering forensics, networking, algorithms and AI.
- Once you’re done with CS50, you’ll be in a position to choose your field of expertise. Find out what you like, make sure it aligns with your big goal in life (no worries if you haven’t figured that out), and stick to it. It may be web development, encryption, artificial intelligence, anything.
- Find the language of your preference. C/C++, Java and Python are excellent choices for general programming and are widely used, but feel free to explore others like Ruby or JS.
- Just like you have market pull and technological push, you have learning push and project pull (a personal theory). Learning push is when you first learn something and you push your knowledge to build something, maybe an app, a game or a website. Project pull is when you first figure out what you want to build, and pull yourself to the goal by learning things accordingly. Find out what works for you.
- Learn on the go. Get apps like sololearn, which has brilliant tutorials on all popular languages.
- Join a club. Cultivate a coding culture around you. IE CSE, ACM and LUG are your popular choices, but you can also simply form your own circle and code in your group. It lets you know what to do and what not to.
- Focus on Algorithms and Data Structures. The goal of a programmer is not just to do things but also to do them efficiently. Take a course online, or just Google individual algorithms. Start from the basics: finding primes using the Sieve of Eratosthenes, or sorting using Quick, Heap, or Merge sorts.
- Game-ify your learning; try out Habitica for a change. It’s fun if you set primary and secondary goals, “Achievement Unlocked” moments, rewards and maybe even boss levels, when you face that really difficult bug that sent your brain into hyperdrive since last week. Do this, just for funsies.
- Master Google Fu. The internet contains much more than cat memes and other banality. StackOverflow for one, and Quora for the other. When in doubt, simply Google. Also, there’s a tutorial for everything on YouTube.
- That being said, don’t be scared to ask. You’ll be amazed to know how many people have been in the same boat as you at some point and know the hack out of it.
- Speaking of which, watch for Hackathons like code.fun.do and AngelHack. They teach you teamwork, and time management. They also let you meet new people in your field. So, always keep an idea ready at hand. If you’re prepared to participate without thinking about winning, you can also use the hackathon as a project pull learning opportunity and pick up a new skill. App development maybe?
- Focus on languages. Just because the guy from the other class writes poetry in Java doesn’t mean you need that in your life. Nor does it matter as to how many languages you know. Remember, Bruce Lee said “I fear not the man who has practiced thousand kicks once, but I fear the man who had practiced one kick thousand times”. #deep
- Quit. If you have PSUC in the first semester you’ll be prone to not code in second semester, and vice versa. It’s essential to keep coding throughout and just keep in touch.
- Let your knowledge rust. Once you learn something be sure to apply it somewhere. Knowing all about Unity Game Development without any practical application is just a waste of time. Why not make a game out of it?
- Get scared. I understand this article overall might be intimidating with big technical words you might be a stranger to, but we’ve all been there. Go forth, and fear no darkness.
So what are you waiting for? Get started!
– Agnihotra Bhattacharya for MTTN, with inputs from Sukriti Paul (IECSE) and Ronald Das (Project MANAS)
Edit (May 2017): Part 2 coming up soon, in June 2017. Stay tuned!