Overall not a bad list, if a little too Ruby-focused. But he left out something:
* Build Something. Get some hosting and build something that works, who cares if anyone actually uses it. Start simple and add features. This should get you thinking about design, things you did wrong that is hamstringing you now, refactoring to solve those issues, etc. In the end you have something you can show to potential employers and talk about with them. You can show them the code without a pesky NDA preventing you from showing your chops.
Depending on where someone is is where I would advise people...
One of the issues I've seen with CS students is simple inexperience. They simply did not have experience coding outside of the simple assignments they were handed. They, consequently, were largely bad at programming.
My single piece of advise to early CS students who want to get better but haven't really hit their stride yet is to code. Write and maintain a program that is over 5KLoC. Keep coding. And code some more. You have to have a base of experience, or all the sage advise will go over your head like a smell in the wind. :-)
I agree. The base of experience is super important, otherwise you're going to Struggling. I learnt the most from a project that was 25KLoC, than I did from a bunch of small projects.
I'm not a programmer / hacker, but this is almost exactly the advice I give to people who say they want to be writers. If you want to be a writer... write. A lot. And not just assignments you're given in school: those simply aren't hard enough, and you'll be outcompeted, artistically and otherwise, by people who do more. There is no speed limit: http://sivers.org/kimo .
+1 for wikiwiki (interesting discussions of issues I was concerned about that I could not find addressed anywhere else); and stackoverflow (for issues that documentation isn't clear on).
I would suggest that the hardest part of programming is not coding, not learning APIs/tools, not managing projects or other people - and not even getting clear on specifications. It's understanding problems and creating solutions; this often requires designing new algorithms, but it also involves restating problems into forms that are easier to solve. Arguably, there is no actual coding in this.
But the way to be absurdly successful and useful is to find a need and meet it. The quality of programming (in itself) is of almost zero relevance to this.
That pretty much sums it up. Spending any time deciding between any of the two is just wasting your time, if you are serious about programming you will _eventually_ master both.
"if you are serious about programming you will _eventually_ master both."
Starting to really dislike the text editor snobbery on HN.
At home I use TextMate for Python and Ruby, Eclipse for Java. At work, Eclipse for Java and Visual Studio for C#. I'm not 'serious' about my hobby and career because I like a different text editor to you?
It's not snobbery, it might have come out the wrong way (the word serious was a bad choice), but the idea still stands. It's completely fine to use different editors, as it is fine to keep developing web applications in php and not trying things like ror/django/node.js/nextbigframework, or never learning a lisp dialect.
But in all cases, just learning them will most likely improve your skills in many ways. Maybe you won't change from textmate to vim or emacs, but you will pick up many things from them that I believe will make your life easier.
The author forgot to mention how to cultivate an interest in coding which, I think, is a very important part.
I have seen so many CS students that didn't like programming at all. They just finish the tasks their teachers give them and never want to see one more LoC in their idle time(Ironically, they still want to be great coders when asked).
In my opinion, the first step to level up to a programmer is to "force" oneself to love coding.
You are comparing a college student to a professional...
First, you can't "force" yourself to love programming. If you came here for the money and not the challenge, then you will fail. I spent a lot of time in college learning about programming outside of class, but I also spent a lot of time avoiding programming.
The experiences in other parts of your life also help shape you as a programmer. Practicing 14 hours a day 7 days a week is not going to make you the best programmer. Problem solving skills come from all aspects of life.
If you truly want to be a great programmer then you are going to have to practice. The best advice isn't really about programming:
-If you program 14 hours a day, and have no other life then it is time to find something else to occupy some of your time. It will change the say you think and help you solve problems better. You need some knowledge of people too or you will create horrible solutions to people's problems, and you will never be successful.
-If you never program outside of work/school you need to find a side project. You won't get great without practice. Take at least 4 hours a week to work on something that someone is not forcing you to work on. This can be some OSS project you have been hearing about. It can be a new OSS project you want to build. It could even be the next big thing that will have you buying yachts and race cars for the time you aren't coding.
13 comments
[ 4.1 ms ] story [ 53.2 ms ] thread* Build Something. Get some hosting and build something that works, who cares if anyone actually uses it. Start simple and add features. This should get you thinking about design, things you did wrong that is hamstringing you now, refactoring to solve those issues, etc. In the end you have something you can show to potential employers and talk about with them. You can show them the code without a pesky NDA preventing you from showing your chops.
One of the issues I've seen with CS students is simple inexperience. They simply did not have experience coding outside of the simple assignments they were handed. They, consequently, were largely bad at programming.
My single piece of advise to early CS students who want to get better but haven't really hit their stride yet is to code. Write and maintain a program that is over 5KLoC. Keep coding. And code some more. You have to have a base of experience, or all the sage advise will go over your head like a smell in the wind. :-)
I would suggest that the hardest part of programming is not coding, not learning APIs/tools, not managing projects or other people - and not even getting clear on specifications. It's understanding problems and creating solutions; this often requires designing new algorithms, but it also involves restating problems into forms that are easier to solve. Arguably, there is no actual coding in this.
But the way to be absurdly successful and useful is to find a need and meet it. The quality of programming (in itself) is of almost zero relevance to this.
"Flip a coin. Heads pick Vim, tails pick Emacs."
That pretty much sums it up. Spending any time deciding between any of the two is just wasting your time, if you are serious about programming you will _eventually_ master both.
Starting to really dislike the text editor snobbery on HN.
At home I use TextMate for Python and Ruby, Eclipse for Java. At work, Eclipse for Java and Visual Studio for C#. I'm not 'serious' about my hobby and career because I like a different text editor to you?
But in all cases, just learning them will most likely improve your skills in many ways. Maybe you won't change from textmate to vim or emacs, but you will pick up many things from them that I believe will make your life easier.
First, you can't "force" yourself to love programming. If you came here for the money and not the challenge, then you will fail. I spent a lot of time in college learning about programming outside of class, but I also spent a lot of time avoiding programming.
The experiences in other parts of your life also help shape you as a programmer. Practicing 14 hours a day 7 days a week is not going to make you the best programmer. Problem solving skills come from all aspects of life.
If you truly want to be a great programmer then you are going to have to practice. The best advice isn't really about programming: -If you program 14 hours a day, and have no other life then it is time to find something else to occupy some of your time. It will change the say you think and help you solve problems better. You need some knowledge of people too or you will create horrible solutions to people's problems, and you will never be successful. -If you never program outside of work/school you need to find a side project. You won't get great without practice. Take at least 4 hours a week to work on something that someone is not forcing you to work on. This can be some OSS project you have been hearing about. It can be a new OSS project you want to build. It could even be the next big thing that will have you buying yachts and race cars for the time you aren't coding.