Programming is a skill wherein you can’t develop stuffs blindly by simply copy-pasting it from forums.
- So, I learnt the basics. Basics as in NOT the syntax, but the low lying stuffs that happen behind the curtains, like Garbage Collection, Multithreading, JVM, etc. You did not learn speaking words before learning the alphabets, right? For JAVA basics I refered Head First JAVA.
- Once I was done with basics, I started to read a couple of coding challenges daily and started to build algorithms on paper. This helped me become logically strong, which is a must in developers. I then wrote code in weekends. Developing good algorithm is more important than writing code for it. For coding challenges I referred and Cracking The Coding Interview book.
- I always made a mental note of exceptions and errors that occurred while coding and also solutions to resolving them. This helped me save tremendous amount of time if the exceptions occurred again (which they did :p) .
- I had learnt enough of JAVA by this time. But, somewhere, something was missing. I soon realized that no other person but me could understand my code. Also, there were several flaws in my code when it came to efficiency and cyclometic complexity. So I started to follow the naming conventions and coding rules in JAVA. Provided proper comments wherever possible. Installed plugins like PMD, CCD and Find Bugs in my IDE to resolve the flaws in code.
- A good developer is the one who often tests his API’s to break it. I learnt JUnit from . This helped me unit test my code before shipping it to testing team. You don’t want testers to point your silly unhandled bugs in front of the whole team, right? Eventually this helped other developers working on my code to check if the modified API is working as per the old specs by running my test suites on it.
- Once I was done with JAVA, I moved to ruby and perl. Learnt these 2 scripting languages on my office desktop as I had no system at home during this period (Yes. I was dedicated more to my passion, and less to my office work :p).
- My travel time to current company was a couple of hours, which I couldn’t waste by doing nothing. So I began to watch videos on AI and Genetic algorithms in YouTube. Now I have a good theoretical knowledge on these things. Will began coding once I have my beast system setup at home (waiting for it to get delivered 🙂 ). For tutorials on genetic algo and AI, I referred .
In the end, I would like to say that I am still learning a lot of stuffs because for us developers, The sky isn’t the limit. There is so much out there to learn and so many resources to learn from. So why limit yourself? Just keep learning and keep developing. 🙂