views:

105

answers:

4

Possible Duplicate:
How to become a better programmer?

I really have the felling as if I'm stuck in my own craft.

I've been developing and learning for a while now and keep having the feeling that I should advance more, or even be more knowledgeable. I've started projects I didn't finish because I thought I lacked the knowledge and the skill to make that feature work just right, or to make that code magically appear on my screen. I've read books I didn't finish, thinking I wasn't advanced enough for the subjects they covered. I've been around long enough to know that everything comes with experience, hard work and dedication.

Having said this, I just want to be able to work without getting stuck on a particular problem that involves my cluelessness of a language or a tool feature.

My question to you would be, how does one advance in programming? What are the secrets (if any) to advance to the point of fluency in a particular language or a task.

Thank you!

+1  A: 

There is no secret really..basically it is code and read other people's code, learn from the masters. Download an open source project and pick it apart

Also try to code something in a least 3 different ways and compare them

SQLMenace
Build one (or two, or three) to throw away. Works wonders for learning and evaluating new techniques.
Mark Brackett
+1  A: 

Finish so that others can evaluate your work. If others can't use what you make, then it's not worth making (unless you're making it just for your own use). Then, after you're getting feedback, make it better.

You don't get better by making it perfect the first time. You get better by making it, then making it better. That way, you can learn from your mistakes. And if you're learning, then you're advancing.

thursdaysgeek
A: 

Learn a new programming language. Don't learn a language that is just the same as one you know, but with different punctuation. Learn one that has entirely different semantics. Different languages carry with them entirely different ways of thinking about problems and those ways of thinking are transferable skills.

Example of languages to learn that each typify entirely different paradigms: Prolog, Lisp or Clojure, OCaml or Haskell, APL or J or K, Assembly Language and C++. Each of these will give you different ideas for how to program in any other language.

+1  A: 

Here is my take:

  1. Focus on task/coding activity that seems to be hard or just beyond your capability. Dont worry if you dont succeed, just give it a try. First attempt will be a hack, second refactoring or the third will show you how the code should REALLY look like, then you will get it right.
  2. Read books, a lot of them, there are many good recommendations here.
  3. Read Code Complete.
  4. Read others code, then compile it, now change and compile and learn how it changes.
  5. Go back and read the code you wrote 6 months or so ago, learn how you can make it more maintainable, try to remember this the next time you write new code.
  6. Be humble, a ton of of knowledge comes from the three words "I dont know".

When you think you are a good programmer, start over at step 1.

omermuhammed