Pages

Basic Skills Every Good Programmer Should Have

A first year CS student asked for career advice, even though I'm not the right person to answer this question I have some advice for every aspiring Computer Science student and programmers in general.

Intended audience: Aspiring Computer Science students and New programmers.

So, without further ado, let's make a list:
1. Learn to Type Properly: As basic as it seems, it's quite common to see people typing inefficiently. As a programmer, you will be typing as much as you can throughout your career and it would be impossible to improve your productivity if you don't know how to type properly.

2. Learn to Read: If you are not a good reader, then you probably won't be a good programmer either. How to be a good reader? Read as much as you can. Read blog posts, read comments, read new and interesting books about the topic of your choice(as a programmer you should choose Programming books). Prefer Ruby? find a recommended list of Good Ruby and Ruby on Rails Books.

3. Learn to Write: As a programmer, you are required to interact with other programmers, customers, higher authorities etc. and more often than not you will be communicating with them over email, so writing is one of the must have skills. How to improve your writing skills? Leave a comment or two on your favorite blog post, start participating in relevant discussions on Reddit, Hacker News etc and finally start blogging.

4. Learn to Learn: I know it sound silly, but it's not. Learning is the most important skill every programmer should have. You should learn how to learn interesting technologies quickly and efficiently. Be a good learner.

5. Learn to Think: This is the hardest skill you'll ever acquire. It's not easy to learn how to think because no one will tell how to think you just have to learn it by yourself. Learning "how to think" can be hard and time consuming, but don't get frustrated by it in time you'll get better. Progress is more important than anything.

6. Learn how to use Google and other search engines: This is the most important skill for programmers. Googling is probably as important as learning debugging and understanding error messages.

7. Learn when to use Google, when to ask for help, and when to stop programming: Errors are inevitable and you as a programmer should know when to to Google, when to ask for help and when to stop programming.

8. Learn how to stop Procrastinating: Procrastination is a normal habit among programmers and don't get frustrated when you find yourself procrastinating for no reasons. We all procrastinate, learning when to stop procrastinating is another skill every programmer should have.

9. Learn to Read & Understand Error Messages: Whenever you get an error message, try to understand what these error messages are trying to say. Error messages aren't there to scare you, but to help you, and you should be able to understand these messages and act accordingly.

10. Learn how to get Help: You are supposed to get stuck, if you are not, then you probably are not working hard. Getting help is another important skill that every programmer should have. How to get help effectively? Ask good questions, twist your question and make it more general, Use Google and StackOverflow, hangout on IRC etc.

Have fun improving yourself and always remember this.

PS: Because I'm a fan of short and concise blog post I'll elaborate each point in a separate blog post.