views:

724

answers:

16

These are the things which I do regularly:

  • Read other people's code
  • Read blogs
  • Listen to podcasts
  • Posting to my blog
  • Read books (mostly technical)

I'm curious if there's something which does not seem to be programming related but helps you to become better.

+19  A: 

You forgot the most important part:

  • Develop more software, whether it's exercises or open source contributions

Jeff touches on the topic above in his post Quantity Always Trumps Quality

One thing that worked wonders for me though:

  • Present/speak in your local UGs, be active in the local dev community

Not only do you learn new things (the ones you speak about) and improve your code, you get to improve your presentation, public speaking, and socialization skills too. It also helps you expand your network and get more opportunities to advance your career. Clearly a win-win thing for everyone.

Jon Limjap
+2  A: 

This has mostly been covered before.

mreggen
+4  A: 

I try to make a minimum of sport like running or swimming in order to change my mind and to regenerate my neurones after a lot of thinking :)

jdecuyper
A: 

@mreggen

Programming exercises and code katas will certainly help you improve. However you can do other things which may or may not be programming related.

John
+7  A: 

Write unit tests. I've found that this acts as an acid test for me when I'm writing code. If I can't write a unit test for it, I probably need to try harder :)

Also, play around with new languages. I don't really know a whole lot about F# (I use c# day to day) but being aware of the way functional things does things has helped me realise that some things are better suited to certain languages. For me I've found it helpful to at least understand the stregths and weaknesses of various languages so that I'm not just going around turning everything into c# nails for my c# hammer.

lomaxx
A: 

I'm spending day and night nursing my stackoverflow addiction. oh, wait...

Mark Harrison
+6  A: 

Writing a lot of code is good. Even more useful in my experience is writing as lot of completely different code.

Try to vary the languages, target audience, and technical challenges associated with your development projects. Sometimes discovering a neat trick in Java to handle a thorny concurrency issue can teach you design patterns that are useful in C# for improving efficiency. Or whatever.

Similarly, working on projects or languages you've never seen before force you to reevaluate all the shortcuts and assumptions you've started doing automatically in whatever you're 'primary' (read: income generating) language is.

My latest trick? Write a technical textbook. Preferably on a subject that's still fairly new to you. I can guarantee you'll gain an insight unlike anything else. Not to mention the pressure to right good code knowing it's going to be printed out and code-reviewed without your having the benefit of a CVS checkin to fix problems.

Finally, talking to people who have completely different opinions on what's the hard-part or important-part of development. My focus tends to be on the GUI side, so I find talking to server-side developers can be helpful.

Reto Meier
+1  A: 

I've found that finding local user groups in your community are great for becoming a better developer. If you find that there are no user groups in your immediate area, start your own. Surround yourself with other developers and learn from them. I drive 2 hours from home to go to a user group meeting, because every time I do, I learn something new. Not to mention it's a great networking opportunity.

1kevgriff
+2  A: 

Programming more is always good, but I can't stress enough how important it is to look at other people's code.

If you were a writer, reading works by Shakespeare or Salinger will only give you a deeper appreciation for form and prose, and will allow you to see what is possible by someone who has really mastered the English language and creative writing in general.

An analogy can be made to programming - look at some top notch open source code, and look at the programs of people you work with. Ask yourself what makes certain code good, and certain code bad? If you don't take steps like this, you will only progress to being a top notch developer if you are a genius, or if you are lucky.

A good step on the road to becoming a better developer, is to learn how to critique, appreciate and digest the work of others.

Max
A: 

I read blogs and read books.

To be honest, I am more into reading books and blogs than actually programming, because I can't find the time. But ofcourse, I do alot of programming at school and work.

IceHeat
+1  A: 

I look at this more for the long term.

1) Learn a new language every year (Past ones include: C++, Perl, Java, Ruby, ActionScript)

2) Buy and read a new book at least once a year. And not just limited to programming. Project Management, Being a good Leader, Agile, Scrum, maybe even Entrepreneurship (Hey, when you have your original idea for the next Stack Overflow, why not be ready to act!)

3) Play with new compilers and other tools. Even thought my work we use Perforce, for home I love and prefer Subversion. Work we use Ant, home I use Maven.

4) Do more than you are asked to do. When I did consulting, I used to always stress I would provide good, detailed documentation as well as even offer training once the project was complete. This not only sold me in the initial meetings (or interviews) but also I was very happy to see my ideas, methodology, way of doing things continued after my project ended.

5) Consider open source solutions. Hey, I love commercial tools, in the boom the more you paid on a tool, the happier the company seemed to be. Now days, I am totally opposite, I look for and use open source tools and libraries as much as I can.

6) Write more Unit Tests, maybe even try some TDD.

7) Yeah, blogs, podcasts are good too.

Derek B.
+1  A: 

Reading and answering as many questions as possible on Stack Overflow.

Nick Sergeant
+1  A: 

Learn more math. Right now I am going through Project Euler, which is an awesome way to learn some math, and work on my problem solving skills.

Jonathan Arkell
A: 

My recipe which I try to follow:

  • Discuss programming with other programmers. If you have a specific problem solving it could be a nice topic of discussion. Or discuss the problems you have had with a framework which you both have used, have they experienced the same thing? How did they solve them?
  • Work on things which you think are fun! If you're having fun it's easier to learn and it's also easier to stay working on a problem until you reach a satisfactory solution,
  • Be critical and try to list some positive and negative aspects of each problem solution, framework, technology, programming language you come across. Be critical of your own work in particular.
  • Read books which others have found helpful about things related to your work. For example Effective Java 2nd Edition is highly recommended within the Java community(in general), I bought it and found it interesting and enlightening.
  • Read well written blogs. Keep in mind that most blogs are not of the same quality as a good book. Still they are a great source of information.
  • Ask questions! First try to search the Internet and reach out to any reference literature you have nearby. But after that it's time to ask a human being a question. It can be here, a forum, a mailing list but for more advanced questions your colleges / peer students are the best resource. Asking a question to someone in real life also has the benefit that it may turn into a discussion where you not only get the answer to you your question but to related questions as well.
  • Show your work to others and ask them for feedback. Maybe you're doing something in an unnecessary complex way? Maybe you're re-implementing a well known and stable library? In any case it may turn into a constructive discussion. This could be in real life, on your blog, a mailing list or some other way.
  • Exercise. Your brain is tightly integrated with your body. You train your brain by solving problems as part of your software development endeavors. But you should give the rest of your body some training too, it will help you concentrate for longer periods, feel happier and lots of other positive side effects.
  • Sleep enough. Lack of sleep is a real brain freezer.
DeletedAccount
A: 

I've been trying to incorporate more design patterns into my code and project structure. I've also tried to become more active in coding side projects and participating in open source software development.

andy
A: 

Check out 99 Ways to Become a Better Developer

Eran Kampf