Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have just started at programming and I'd really appreciate some help on what habits and skills to develop to be a good at programming from you guys, some of who have had years of experience. I'd really love to know your view point and the things you did to improve and develop as a programmer. I'm eager to learn I just need some guidance. Thank You.

share|improve this question
8  
Habit no. 1: Not asking questions on stack exchange that could get closed (in this case, as terribly broad or as dupe of "how to be good dev" questions) ;) – delnan Feb 6 '11 at 11:56
2  
It's high time now. Many such questions have been asked here. You could've surfed this site a bit before asking this question. For your reference, have a look at this : programmers.stackexchange.com/questions/8721/… – ykombinator Feb 6 '11 at 12:47
Welcome to Programmers. Please read the site's FAQ and guidelines to asking questions. This question really doesn't meet those criteria and could be closed as "Not Constructive". – Walter Feb 6 '11 at 13:16
3  
practice practice practice. Sounds like a lame answer, but it's the only truth. – Dave O. Feb 9 '11 at 1:57
1  
I always find it uplifting at how patient we all are here with dealing with people who are new the site and the "rules" here. – Kenneth Jun 3 '12 at 11:44

closed as not constructive by Robert Harvey, Yannis Rizos Oct 16 '12 at 18:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

8 Answers

Repeat:

  1. Go to stackoverflow,
  2. find a question,
  3. go research it,
  4. implement it,
  5. test it,
  6. submit an answer.
share|improve this answer
14  
7) Watch Jon Skeet beat you by 30 minutes and 500 words. – Job Feb 10 '11 at 18:13
1  
Of course, even Chuck Norris gets beaten by Jon Skeet :) – wildpeaks Feb 10 '11 at 20:55
8) Don't worry, just be glad you learn something; else go to libravox and download polyanna. – richard Feb 11 '11 at 8:32

Keep being curious.

Don't just fix things, find out why exactly they weren't working (and why it now works).

It's sadly something many people lose after some years of mind-numbing maintenance, but it's imho essential.

share|improve this answer
2  
That is how I leant, by typing in stuff from magazines that did not work. Wondering why (transcribed by secutaries, not tested, to complex), and fixing them (by rewriting). – richard Feb 11 '11 at 8:39

There are a lot of questions very similar to this post but, I will indulge your query since I didn't respond to any of the others. These are a big vague and I guess you could consider this response on how to be a better engineer not necessarily a programmer. There is a lot more I should add but, i r lazy.

Habits:

  1. Read a or multiple blogs almost everyday to help keep your finger on the pulse of technology. (use a feed reader to assist personally I prefer google reader)
  2. Listen to those senior, equal, or junior of you because regardless of age/exp everyone has good ideas or look at a problem different than you.
  3. Practice, Practice, Practice (Yes I am talking about practice). Only way to truly understand the Art of Programming you need to try and make it second nature.
  4. Approach a problem with an open mind. My biggest pet peeve in a tech discussion is saying X can't be done before even thinking or talking about the issue at hand. This is incredibly rude and to me states that you don't want to spend the your brain cycles on a difficult issue.
  5. Approach a problem with enthusiasm. Being enthusiastic about your job or issue is infectious and not only will improve your productivity but also your teams.

Skills

  1. Personal approach is the "Jack of all trades, master of none." To many times I have ran into "engineers/developers" who state they only know X and can't do Y. BS you are more valuable if you can learn X,Y,Z rather than being a master of X.
  2. Understand some basic concepts of SQL/Database Structures, Webservices, and programming structures/patterns.
  3. Learn to speak/present your ideas efficiently and to the point. Engineers are very literal folk. If you tell them to build you a chair they will build it how they want it but, if you tell them to build you a specific chair with well defined requirements you will be on how exact your chair will probably be.
  4. Spend time and effort to be functionally competent on what your customer needs/wants. This will improve your product quality 10 fold.
share|improve this answer
there are cases where a master of X is needed and highly sought however this is an elite few so typically the safer course is the jack of all course – Kenneth Jun 3 '12 at 11:50

Write code every day, but thats not enough, you need a mentor to review your code. If you write bad code every day you will get better at writing bad code. Find a mentor or study partner to review your code (and you should review hers)

Other things:

  • Read a lot

  • Learn new languages, and step outside your comfort zone, if you know java don't learn c#, learn say prolog or lisp.

  • challenge yourself and don't be afraid to fail, as long as you learn from it

  • Teach, try to write an article or give a presentation it will force you to really make sure you understand the subject well enough to explain it to other people

Also non programming skills are very useful, being able to write well and work well with others is often a key skill

share|improve this answer
I never really had a mentor in my early days of programming. I substituted for this lack through online research of techniques and approaches in the areas I was working. – Kenneth Jun 3 '12 at 11:54

A lot of good things were mentioned, so I'll only add one more: don't be afraid of making mistakes.

Don't be afraid, because you will make mistakes. What's more, you will probably make the same mistakes countless of others had made. Don't feel stupid or worthless about it, it's part of the learning process.

Of course you should try to avoid them but don't let yourself be paralysed with fear or feel compelled not to leave the beaten track.

There is a great deal to learn from bad code, be it your own or others', and the lessons you learn this way will stay with you longer than simply reading a book on best practices.

share|improve this answer
+1 for don't be afraid of making mistakes. Also be aware that when you look back on old code you'll often feel like it was terrible... just use those moments to see how far you've come since then. – Kenneth Jun 3 '12 at 11:52

Almost everything in life that doesn't require raw physical talent can be improved upon with repetition.

For instance, if you're 5'7 and non-athletic, you are never going to be world class at dunking a basketball.

However, if you type every day, you'll become a better typist.

If you write code every day, you will become a better coder.

Now, go do that.

share|improve this answer

First : have a mentor to review your code; this can be easily achieved by starting to contribute in any open source project. (you can also earn if you are a student by participating in gsoc :-)

Second : ask questions. Never leave a doubt on your mind. When you receive a critic saying "do x and not y" ask "why is x better?".

stackexchange sites are the best places to learn. No doubt in that :-)

share|improve this answer
+1 for participate in gsoc – Kenneth Jun 3 '12 at 11:57

Develop Apps,projects, or anything that will help you explore the real needs of a particular environment. Make a habit of doing things in a way and in a much better way. You will see how you grow.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.