views:

170

answers:

8

Possible Duplicate:
What is the single most effective thing you did to improve your programming skills?

I want to become a professional programmer. I remember reading on this website that you must practice, practice, practice, as opposed to just reading books and attending lectures. As the old saying goes: "Perfect practice makes perfect." So what is the best way to practice? Right now I just do some exercises out of books that teach a specific language, but I wonder if I should be doing something more.

+4  A: 

Try http://codingbat.com/ for beginning.

The best way of doing it are practicing in a quiet place.

Also try to get engaged in something harder, maybe setting up a web application and/or some database intensive app.

Regards.

StudiousJoseph
+10  A: 

Here is a crazy idea. Download a code base from a project which either is using langauge you know or would like to know. Read through the bugs listed for the application and then start working the bugs. The more bugs that you work through, the more code that you have to read and work with the better you will become. When you tire of working with that specific application, move on to another one and repeat the excercise.

Good luck ,and hope this helps some.

As a side note, I found this video on DevExpresses video site. It's called "Improve your Code... by reading" and goes with this very same idea of working through other peoples code to improve your own.

Chris
+1 Peer pressure and scrutinizing eyes are great motivators.
ShaderOp
It is not a crazy idea. This is how domain experts attain their levels. (On the other hand it will not help you with generalist skills, though. Many companies nowadays are looking for generalists.)
rwong
+1  A: 

Find something that is just slightly above what you already know and conquer it. It will keep you motivated and you will learn something new!

Icode4food
+1  A: 

Tutorials from books are great place to start but I would suggest taking a real example from some of your earlier or current projects - and maybe implementing that.

Most tutorials can be very basic as they are only meant to demonstrate the concept but there are lot of questions / issues that come up when trying to implement a real life scenario.

InSane
+1  A: 

First, You must study fundamental of which language you choose.

Then, you make an interest program which you like (ex. Make an website).

In development time, you can study many thing. You can read from another code, to improve your program.

noneno
+4  A: 

Reinvent the Wheel.

Seriously, I learn more about a technology when I'm attempting to create it myself. You first try to figure it out for yourself, and when you get stumped you look at what other people have done. This gets you into the practice of attempting to solve the problem on your own, coding up what you think, and researching alternate methods.

Personally I like to do stuff that I consider fun. Program a graphical game (lots to learn there) on a relatively low level interface (X11, winAPI, SDL, openGL). Try to solve almost (maybe completely) impossible problems (p vs np). Build your own language. Build a compiler. Make a practical joke (personally liked looping "charlie the unicorn" on my friends machine tell he typed in a specific code which killed the virus). Make a self mutating worm.

Just do something in code and you'll get better.

BT
p vs np was supposedly solved a few days ago, but we will have to wait and see if the proof is legit...
silvo
+4  A: 

Do not assume practice alone will make perfect. It won't, and this is especially true with programming. You need to also have a firm understanding of the language you are learning and other general programming concepts.

For example, there is an overview here of different programming paradigms:

http://en.wikipedia.org/wiki/Comparison_of_programming_paradigms

Without those concepts and patterns in your head, how do you expect to practice until you get it perfect? You can't.

Finally, you should also check all of the material you read to ensure it is still relevant and best practice. There is no point in learning bad habits, as this is far more likely in the beginning before you fully understand exactly what you're doing.

I agree with the above as well. You should get example code bases from well designed applications and study/tweak those while you study the language/framework/design pattern etc etc

Oh, and you really want to learn faster, search for 'accelerated learning techniques'. On this topic, discover what kind of learner you are (visual/audial etc) and try to digest the majority of your information that way. It can't hurt to also satisfy all your senses in this regard. Learn via books and audio.

Good luck!

Zenph
+1  A: 

Not to promote stackoverflow or anything....but I have found that since actively participating in this site that I have learned a ton from the community. I find the more I participate and read other questions, the more I learn and the more I have been able to apply to my own job.

I would say that participating in a forum type setting (like this one) is a great way to help others and learn more about the languages and patterns that really define a "professional."

amurra