Take the 2-minute tour ×
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.

Looking back at my career and life as a programmer, there were plenty of different ways I improved my programming skills - reading code, writing code, reading books, listening to podcasts, watching screencasts and more.

My question is: What is the most effective thing you have done that improved your programming skills? What would you recommend to others that want to improve?

I do expect varied answers here and no single "one size fits all" answer - I would like to know what worked for different people.

share
18  
Practice, practice, practice. And never be satisfied with the first thing that comes to mind. –  Mark Ransom Sep 3 '10 at 5:28
2  
+1 for Mark Ransom...The difficulty comes when you're still not satisfied with the 100th thing that came to mind! –  Stimul8d Oct 21 '10 at 8:11
5  
Not wasting any of my time on Programmers Stack Exchange site helped me improve my coding skills immensely. –  Job Feb 2 '11 at 17:53
3  
@Mark Trapp how is this not constructive? –  rightfold Jan 22 '12 at 23:14
1  
@WTP - Read the description. "This question is not a good fit to our Q&A format." - as someone who asked this question, I agree. It was asked in more relaxed times. –  Oded Jan 23 '12 at 16:52
show 2 more comments

migrated from stackoverflow.com Feb 6 '11 at 3:55

This question came from our site for professional and enthusiast programmers.

locked by Yannis Rizos Mar 13 '12 at 20:38

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

360 Answers

Many great answers here. However, one of the most effective things for me personally was to join Stack Overflow. There are many people here that are smarter then me, and I learn a lot from their very thorough questions and answers

share
1  
+1 -- Agreed... –  Frank V Dec 16 '10 at 21:51
show 1 more comment

SQL - it changes your view of the world to data-centric rather than process-centric.

share
show 2 more comments

The best thing I did was start my own side business with some partners.

Since my personal time & money was on the line, it forced me to re-evaluate & analyze everything I used in development & determine how to best utilize them for this project.

  • frameworks
  • source control hosting
  • unit
  • testing development
  • methodologies
  • development tools
  • third party controls
share
show 2 more comments

Learn C and C++

share
add comment

Answer questions on StackOverflow, of course!

share
add comment

Learn Regex, as early as possible. Every tiny little string problem becomes a no-brainer later.

share
1  
Do you mean this as "lean regexes so you learn more about string manipulation", in the same spirit as "learn assembly so as to learn more about your processor", or "learn regex and solve all string-related problems with regular expressions"? –  Rob Jun 15 '10 at 14:05
add comment

Writing code, I tend to read too many books,it's good to know the theory but the practice is really where you can become a master.

share
add comment

Solve hard problems with code.

In my own experience it has been the code that I didn't know how to write that taught me the most.

If you seek out hard problems you will learn to learn to work hard; learn to do your own research; learn the best language for the job; learn to use development tools (IDE/debugger, source control); meet people who are like minded, and above all else become inspired.

When you are inspired there is nothing that you cannot learn or do.

share
add comment
  1. Try and make errors..
  2. learn how to search.
  3. try to solve other developers problems.
  4. read and try to understand the concepts not the details.
share
add comment

Writing code on a paper or a whiteboard as against using the compiler. Apart from the syntax, I could realize so many nitty-grittys which the compiler\IDE does for us.

share
add comment

Write code-generation software. Create a simple database with a few related tables. Then write a web interface to interact with it using whatever tools you can find. Then, using the same language, write software that will write what you have just written.

You'll see that a well designed relational database, with well thought out field definitions (type, length, nullable, default, etc), contains all the information your code generation software will need. Write a code generator to generate your data abstraction layer. Then write one to create a web interface (list view, add form, edit form, etc).

The more you write, the further you realize you can go. It gets addictive and you get better...

share
add comment

I asked really smart colleagues "stupid" questions I was embarrassed to ask. As Einstein said, "If you can't explain it simply, you don't know it well enough." I have also investigated the codebase at work on my own time. You have centuries of programming experience at your fingertips if you work for a decent sized programming outfit.

share
add comment

1) Learn an assembly language (any chip, just learn it well) -- it will make all of your other code much better.

2) Learn how to find the documentation and actually read it. I am pretty convinced that the most programmers refuse to read the instructions that are available for their tools.

share
add comment

What I am following,

  1. Write Code for every single concept you learn.
  2. Buy books and read on the subject.
  3. Talk with the experts.
  4. Never lose hunger to become an expert.

Pbn

share
show 1 more comment

What about projecteuler? I've started to solve the first few problem, will see how efficient it is..

share
add comment

Appreciate that there is no magic. There's a tendency to shy away from reading or understanding a piece of very complicated and magical looking code, with the feeling that it should be left to the masters and gurus. Any code written by a human can be parsed and understood with enough time and patience.

You'll never get better if you stay in your comfort zone.

share
1  
+1 @You'll never get better if you stay in your comfort zone. –  Chankey Pathak Sep 13 '10 at 18:19
add comment

Documenting my code. At first I didn't bother because it was for school projects that no one would ever need to look at again. Then I realized that even if other people didn't need to read it, I would need to years down the line, long after I had forgotten why I had made the choices I did.

Working through the same hard problem twice is a pretty good motivator to document future work completely.

share
show 2 more comments

I enjoy picking up any language that I can get my hands on. Then I can decide what the language would best be applied to and throw it in my "toolbox". I really like being able to pick the right tool for the job.

share
add comment

Working as a programming lab teaching assistant -- having to teach another person to code, particularly through example, really made a big difference in the quality of the code I wrote.

share
add comment

Ensured that no matter what role I was in (e.g., currently software architect of a large project), I would be writing code. I've seen too many former developers stop coding entirely and they went up the technical or management hierarchy, and gradually lose touch with the reality of building software. The only solution to that is to keep writing code.

Learning new languages, writing in different environments, doing different kinds of applications... as much diversity as possible helps to round out your programming skills.

But the bottom line is that the only way to get better at something is practise, and to continually challenge yourself with projects of ever-increasing difficulty.

share
add comment

The obvious answer is:

Learned my first programming language.

share
2  
This answer doesn't make any sense. –  ShaChris23 Aug 11 '10 at 0:25
show 1 more comment

Math degree.

share
add comment
  1. Read. Books, Blogs, other people's code - anything you can.
  2. Program. A lot. I won't say practice makes perfect, but it certainly helps.
  3. Along with #2, keep an open mind. Be ready to accept criticism. Don't take offense; take it as a challenge. Admit and learn from your mistakes and get better.
  4. Review others' code. Figure out how other people think about problems. It can be really eye opening. Perhaps they're doing something more efficiently than you are. (or perhaps less)
  5. Challenge yourself. Take on crazy difficult projects that branch into the unknown. Try to learn something with every project you do.
  6. Tinker. Never let work/school be your only development experience. Invest time in toy projects.
share
add comment

This is very subjective, but I find that teaching a concept to other people really helps me master it myself. I think this works for a few reasons:

  1. It puts some pressure on you to really take the time to understand what you're talking about (you usually can't just Google it in the middle of a lecture).
  2. Explaining something really helps you find the gaps in your won knowledge.
  3. Just adding a social element seems to help motivate me.

Hope this helps.

share
add comment

Learn Haskell.

share
add comment

I felt like my turning point from "okay" programmer to "good" programmer occurred during college. Two things, which happened to coincide:

  1. Take a compiler construction class (Compilers Construction and Finite Automata), where I built a C compiler
  2. Learn a decent UNIX text editor: I picked vim.
share
show 1 more comment

Learning Java and getting a Java Certification. It's a really well thought out language, with great support and community.

share
add comment

Getting involved in an open source project with a lot of developers that are smarter than me. For me, it was getting involved in the Asterisk project (www.asterisk.org). However, the key thing is finding a project that you can be passionate about.

share
show 1 more comment

When coding, thinking like a von Neumann machine.

share
2  
I consider this as a problem. The future is in multithreading, many processors etc., and thinking "von Neumann" is a problem there. Think functional / message passing. –  hstoerr Dec 10 '08 at 16:46
show 1 more comment

1) Be curious. Learn from the smartest people around. Read books, articles and code on how things have been done or may be done 2) Think. Play around and try out your own ideas 3) Fail. You only know what is good when you now what doesn't work

share
add comment

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