Monday, November 28, 2011

Passion for Code

So you wanna become a professional programmer?
And you are reading all kind of books on the language you are learning, you are learning about algorithms, libraries and other aspects of a programming. You are also reading about how a software is developed, tested and shipped. And you think you are on the right track? NO, a big NO.
These things you are doing are because you felt a need. A need to learn coding to earn money, a need to just make yourself OK for a job. But to be a developer you need to have other skills and do other things like:

  • practicing - Do it until you know in and outs of the program you are coding and developing.

  • connecting with developers - They will tell you what it takes to be a professional. What you need to know more and work on. Show them what you have made and they will give invaluable feedback.

  • Study others softwares/code - Test them and know how they are working. Think why a developer used a particular language. If you can do anything different to make this program more reliable, fast and efficient? 

  • Work on Open Source - This will teach you some very new things. What it takes to actually code and collaborate.

  • and the most important one - You got to have a passion for coding - We will discuss this in detail. The other aspects will die out and make you inefficient. You will loose interest soon doing same work. But this is the factor that will keep you running and building more efficient softwares and web apps. So what is passion actually?
Passion is a word that is thrown around far too often when wanting to describe how devoted we are to something. We belittle this word far too often. Passion should be used to describe the workers who wake up in the middle of the night to work on something they love; it should be used to describe the people who spend their life working on something because they simply want to make it better. To have a passion is to have an intense love or emotion for something; I have a passion for developing great software, and I truly mean passion. I live and breath my software. When I sleep, when I run, when I shower; I’m thinking about how to make software better, faster, more reliable. My room is filled with several large whiteboards, each covered in doodles, scribbles, and illegible writing about my software. My mind is the same, always working out how to make something work more efficiently.

This is what I'm talking about. Also becoming a professional needs you to write easily understandable and manageable code. For this I recommend you to read Clean Code: A Handbook of Agile Software Craftsmanship. This is the book which my professor recommended to me. This book should teach you what actually works in practice, as opposite to what might work in theory.
The author Robert C. Martin says - 
"In general programmers are pretty smart people. Smart people sometimes like to show off their smarts by demonstrating their mental juggling abilities. After all, if you can reli-ably remember that r is the lower-cased version of the url with the host and scheme removed, then you must clearly be very smart.One difference between a smart programmer and a professional programmer is that the professional understand that clarity is king. Professionals use their powers for good and write code that others can understand."

Moreover have a look at this interesting StackExchange Question, you will understand what I want to convey.

(Any more experienced developer who want to add more point or explain any point further, please add it too Hacker News )