Shared publicly  - 
 
"""Dear Guido,

How can I make myself a better programmer, and work with you one day?

--Hoping in Brazil
"""

Dear Hoping,

A good way to improve your programming skills is to participate in an open source project. Even if you don't contribute patches, using some open source project (anything in Linux, for example!) and understanding how it works by reading some part of the source code will improve your skills -- and there are many different way to contribute, for example, improving or translating documentation, verifying unverified bugs in the bug tracker, and so on.

Good luck!

--Guido
256
92
Zach Denton's profile photoRay Ch's profile photoBo Yu's profile photoSridhar Pandurangaiah's profile photo
30 comments
 
No, now you need 2 PhDs to be a good programmer
 
No amount of PhDs -- or even classes in programming -- will make you a good programmer. Only programming -- coding, debugging, and testing -- will make you a good programmer. Anybody who tells you otherwise is trying to sell you snakeoil.
 
Another way to contribute to a project, which I think does not get mentioned often enough, is to help other people use the project. So hanging out on #python and answering questions is an important contribution to Python-the-language, or responding to questions on mailing lists, etc. As a maintainer I very much appreciate when "users" of a library help each other figure things out.
 
a little OT, why are you using a mac and suggest people to use Linux?
Specifically, I always wonder how people can work efficiently on open source software on a mac given the bigger overhead of setting up a develop environment (and polluting the operating system FS probably).
 
Wondering if there is a Google+ API leak attempt in your last posts... Can we expect that guido_post._doc_ will return the quote someday ? :)
 
+Stefano Cavalieri presumably if you're using Linux, just about all of the software you're using is open source; on a mac, it's a lot more likely that the software you use the most (and would thus most like to understand) is closed source.
 
+Guido van Rossum Do you think it's good to write your own code from scratch to learn how to do things? Sometimes I'm afraid that using too many of these libraries (Using an AJAX library instead of creating your own XMLHttpRequest in javascript, for example) will make me a "dumb" programmer. How should a new programmer use all those tools that make life easier?
 
@Jorge Rangel I suspect Guido will agree with me that there are more than enough interesting problems out there; there is little point in reinventing the wheel.
 
Stefano Cavallari: I work on a Mac and recommend Linux because I like the Desktop environment of the Mac (and the ability to use certain commercial software) without having to use a less stable OS (like Windows). It's Unix, so you have MacPorts and Fink to give you access to much free software you are used to. (I much prefer that to Cygwin.) Nevertheless, I prefer Debian most of all to tap into the large amount of Free Software out there, and this is why I recommend to people to use Linux. (The package management system is superior to that of the previously mentioned options.) Today one can use a Mac and use virtual machine software like VirtualBox and have more than one OS running at the same time on a machine, which is great for both development and testing.
 
Participating in open source software projects is one of the primary things we look at when hiring, and is very rare.
 
Then taocp... connecting with great programmers by contributing to an open soirce project is a great idea. In the meantime, go to some conferences and connect with some peple.
 
+Eric Raymond Actually, as long as you don't overdo it, there are few ways to really understand stuff that beat writing the code yourself. Everybody needs to learn to walk before they try to master more advanced ways of locomotion. Learning by doing is often the best way! (But it's best if the learning and doing are guided by someone who has learned before -- see my post about teaching my son chess last week.)
 
Guido, I agree...but I question the value of writing it yourself for problems others have already solved when there are so many unsolved ones.
 
There is a lot of value for beginning programmers writing stuff that's already been written, to compare against other implementations. A class of learning I like to call "programming katas". However there's also value in participating in open source projects where I'd recommend using existing code whenever possible.
 
There is nothing worse than somebody who only knows how to use libraries, and can't work out hard algorithms for themselves. There is also nothing worse than someone who won't use anything they didn't write themselves. We need balance, grasshopper.
 
Though I speak as a non-guru in the company of more famous people. Many times the core of a program is quite simple. If you get at this core part and understand the basic fundamental principles you can always use the generic (many times bloated) fully working program in a better way. I looked into the design of the XSLT processor/library a few days back and it helped me understand the how's and why's of eccentricities and the quirky ways of the language/library itself: http://guruduttmallapur.tiddlyspot.com#[Understanding%20XSLT%20XML%20Concepts]]
 
@Guido: Your So humble to reply for an unknown person .Great.
Add a comment...