The Artima Developer Community
Sponsored Link

Weblogs Forum
Becoming a Better Programmer

16 replies on 2 pages. Most recent reply: May 12, 2007 1:34 PM by Raji Gogulapati

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 16 replies on 2 pages [ 1 2 | » ]
Christopher Diggins

Posts: 1215
Nickname: cdiggins
Registered: Feb, 2004

Becoming a Better Programmer (View in Weblogs)
Posted: Feb 14, 2007 11:51 AM
Reply to this message Reply
Summary
Do you want to become a better programmer? I have some advice: share some code!
Advertisement
Many programmers have trepidation about sharing their code in a public setting, mainly because no one likes being judged or criticized. In a recent blog entry at CDiggins.com I extoll the virtues of sharing code. Not only can it instill some humility, it can help pull you up to the next plateau of programming skill, once you get past the initial shock of the barrage of criticism.

Sharing code with the Boost C++ library community, and on various newsgroups, was one of the most effective things I ever did to improve my programming skills.

The other thing which really helped me grow as a programmer is less viable for most programmers, but I'll mention it anyway, and that was designing a programming language. Designing a complete and cohesive programming language provides great insights into how programming languages work, and why the features are the way they are.

What do you think is the single is most effective way to improve your coding skills?


Todd Blanchard

Posts: 316
Nickname: tblanchard
Registered: May, 2003

Re: Becoming a Better Programmer Posted: Feb 14, 2007 11:15 PM
Reply to this message Reply
> What do you think is the single is most effective way to
> improve your coding skills?

READ other people's code. I probably learned more object oriented patterns reading the NextStep libs when I was learning WebObjects than anyplace else.

LEARN other languages. Every language brings a point of view. You may not use it, but you will learn from it and probably bring some of its wisdom to your other projects.

FASTEST way to get hung up on during a phone interview is to characterize yourself as a JAVA Architect/Developer - or any other language for that matter.

You wouldn't hire a woodworker who only understands hammers and nails would you?

Merriodoc Brandybuck

Posts: 225
Nickname: brandybuck
Registered: Mar, 2003

Re: Becoming a Better Programmer Posted: Feb 15, 2007 11:41 AM
Reply to this message Reply
I don't think there is one single most effective thing to imporove coding skills. I think you need to both read and write a fair amount of code to improve and that's at least 2 things. I would add do that in a variety of languages.

I think sharing helps a ton, too. Even if it is just in code reviews. I don't think you need to share it with hundreds of people. Sharing with the right one has made a huge difference to me.

Robert Cooper

Posts: 7
Nickname: kebernet
Registered: Jun, 2005

Re: Becoming a Better Programmer Posted: Feb 15, 2007 5:08 PM
Reply to this message Reply
[quote]READ other people's code. I probably learned more object oriented patterns reading the NextStep libs when I was learning WebObjects than anyplace else. [/quote]

I would say this is as, if not more, important than sharing code. Working on open source projects is a great way to learn. You can, however, spare yourself a lot of the "getting torn apart" if you look at what other people are doing and understand why, first.

Berco Beute

Posts: 72
Nickname: berco
Registered: Jan, 2002

Re: Becoming a Better Programmer Posted: Feb 15, 2007 5:17 PM
Reply to this message Reply
Practice.
Set a challenging goal and start coding. Humans learn best by doing.

Leo Lipelis

Posts: 111
Nickname: aeoo
Registered: Apr, 2006

Re: Becoming a Better Programmer Posted: Feb 15, 2007 6:42 PM
Reply to this message Reply
> FASTEST way to get hung up on during a phone interview is
> to characterize yourself as a JAVA Architect/Developer -
> or any other language for that matter.
>
> You wouldn't hire a woodworker who only understands
> hammers and nails would you?

I wouldn't, but many people would. Truth is that people are very different. Some people want to see heavy specialization in Java. Others want to see some diversity. Some prize degrees and certificates, others don't. Some prize ability to think on the feet. Others prize ability to do work in a quiet and stable setting.

There is no one criterion for being a good programmer. While I believe there are good and bad programmers...specifying who they are and why is not easy and/or obvious.

Leo Lipelis

Posts: 111
Nickname: aeoo
Registered: Apr, 2006

Re: Becoming a Better Programmer Posted: Feb 15, 2007 6:45 PM
Reply to this message Reply
Sharing is great, I agree. Getting mentored and/or mentoring others helps. And it helps a lot if you love what you do. If you only do it to get by in life, then you'll never be a maestro.

David Medlock

Posts: 11
Nickname: dmedlock
Registered: Jun, 2006

Re: Becoming a Better Programmer Posted: Feb 15, 2007 9:26 PM
Reply to this message Reply
I like to take programs I have written and re-factor them in new ways to see the advantages of each.

I have a 3d tetris program I wrote, which I am refactoring to see which implementations are easy to extend in various ways.

Giancarlo Frison

Posts: 3
Nickname: giancarlo
Registered: Feb, 2007

Re: Becoming a Better Programmer Posted: Feb 16, 2007 4:27 AM
Reply to this message Reply
> I like to take programs I have written and re-factor them
> in new ways to see the advantages of each.

I agree too. I think the programmer improve himself when discover better ways to implement an architecture. Early development interation generally miss the mark in term of domain-to-software-model agreement, it's true also for senior developer.
Self improving is a mind-set, is the continuously research of better way. You become better developer as long as you to rethink about what has already been done

James Watson

Posts: 2024
Nickname: watson
Registered: Sep, 2005

Re: Becoming a Better Programmer Posted: Feb 16, 2007 9:22 AM
Reply to this message Reply
I don't know if this works for everyone but I personally became a much better programmer from doing maintenance and enhancements on existing code at an early stage in my career. I learned very well what was very hard to work with and what was easy. Most of what I worked with was badly done so I learned a lot more about what not to do than what to do. Really, though, if it were all well written, I probably wouldn't have learned as much. But you have to be able to recognize that there is a better way for this to help. A lot of developers I know just do things the way they have seen them done and never ask themselves if there is a better way (and often fight any suggestion that there is.)

Now, maintaining bad code isn't as helpful to me anymore. I want to see good ways that I haven't thought of.

Chris Agmen-Smith

Posts: 3
Nickname: agmenc
Registered: Feb, 2006

Re: Becoming a Better Programmer Posted: Feb 16, 2007 2:43 PM
Reply to this message Reply
I learn fastest when I pair. Whether I am pairing with someone who is more, or less, experienced, I find I always come away from a pairing session knowing more than when I started.

Much of what I learn from pairing is not technical, it is "soft skills". I've found that working closely with someone else teaches you about different nuances in each person's problem-solving technique. You learn how to adapt your communication for different audiences, and how to encourage others to adapt to you. I guess you also learn about ego and anger management.

I enjoy the constant technical feedback about my code; I can't remember every single API, but between me and my pairing buddy, we can usually come up with a pretty sensible way of solving the current problem; and if we hit what could have been a brick wall, chances are that one of us has come across that problem before, and knows a way around it.

Anit Agarwal

Posts: 7
Nickname: anit
Registered: Feb, 2007

Re: Becoming a Better Programmer Posted: Feb 24, 2007 2:05 AM
Reply to this message Reply
I think the best way to become a better coder? Dream up a project, then implement it (anything from a simple game to a web calendar).

The best would be if you could get some real world project experience, satisfying the expectations of real world customers, but if that is hard to come by, then get involved in an open-source project or something else that would be somewhat customer driven so that there is a feedback loop to improve the quality of your work.

Parag Shah

Posts: 24
Nickname: parags
Registered: Mar, 2003

Re: Becoming a Better Programmer Posted: Feb 24, 2007 9:35 AM
Reply to this message Reply
Sharing code is definetely a very effective way of learning.

Here's a method of learning I suggest to my workshop participants:

1. Gathering information (facts)
2. Practice
3. Reflect
4. Partcipate
5. Gathering information (perspectives)

Books are a very good way to gather information. Once basic concepts are understood, it is best to start doing things. I agree with Giancarlo Frisson: "self improvement is a mindset". There should be a constant thread running in the background when we code, asking us: "Is there a better way to do this?". I have also benefited a lot from reflection - while coding as well as bathroom reflection :-).

Partcipation is extremely important for sharpening skills; for becoming better programmers. Partcipation can be done is various. Sharing code, code review sessions, participating in open source projects.

Finally, gathering as well offering perspectives are also very important in the learning process. I come to Artima to read perspectives of experienced software developers and offer perspectives on my own blog. But benefits of blogging in the learning process is probably the topic of another post :-)

atul khot

Posts: 1
Nickname: atulkhot
Registered: Nov, 2006

Re: Becoming a Better Programmer Posted: Feb 24, 2007 12:47 PM
Reply to this message Reply
Dear Christopher,
Oh it is such a dear topic you have touched upon ;-)
Thanks for starting some discussion on this one. I tried to come up with a list - my two cents ;-)

1. Solving programming problems is some thing I find are a good way to go. I use TDD and a lot of unit testing after the initial algorithm is somewhat of in place. I use
http://www.programming-challenges.com and the book by Skiena and Revilla. ( Btw, David Gries is one of the editors of this book )

2. Solving algorithm design problems from Knuth. This is a lifetime read+solve activity ;-) This book is chock full of insight

3. Read good code. I somehow failed to do this very consistently. I proposed a mailing list on ACCU some time back. The idea was to take some open source code and and see the clever tricks/algorithms/idioms/patterns so as to internalize the knowledge therein. Anyone game for this?

4. Read good programming books ( Practice of Prgramming, C++ Cookbook, Java Puzzlers ..... ;-)

5. Practice Unit testing and refactoring on already existing code ( and Scratch Refactoring )

6. Hang out on comp.unix.shell/comp.lang.java.programmer etc. and try to sovle the problems myself and then check with the solutions posted there

This is top of my head ;-)

-- cheerio atul

Donata Savini

Posts: 1
Nickname: motte
Registered: Feb, 2007

Re: Becoming a Better Programmer Posted: Feb 26, 2007 3:53 AM
Reply to this message Reply
I agree. The most effective way to improve our code is to share it. Also students and teachers, not only professional programmers, should put it in a public setting, read other people's code and learn new points of view!

Flat View: This topic has 16 replies on 2 pages [ 1  2 | » ]
Topic: Becoming a Better Programmer Previous Topic   Next Topic Topic: Web Standards: Only Less of a Mess


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us