Fog Creek Software
Discussion Board




World Class Programmer in 5 Years ?


Can you be a world class programmer within 5 years of experience in the business ?

By world class I mean as some of you call it
a purist, a Craftsman which think that coding is an art,
his programs are nicely design, you could read his code like a good book.

What are the list of books you which can help to attain this level of expertise, beside practising.

Rookie Coder
Thursday, November 20, 2003

No. Absolutely not.

timothy
Thursday, November 20, 2003

Any time I start to confuse code with a good book, take me out back of the barn and shoot me.

To me, a world class programmer is one that can produce an application that everyone on the planet wants to buy for $999.99. That's a world class programmer.

anon
Thursday, November 20, 2003

Well, not everyone can be a world class programmer in 5 years, but some people could.

I'd go as far as to say if you're not world class in 5 years you never will be. If you've spent that long doing what you're doing and you still don't "get it", I don't see why spending another 50 years is going to help you.

Sum Dum Gai
Thursday, November 20, 2003

There's no such thing as a world class programmer.  Such a description is highly subjective and depends on what field of expertise we're talking about.  You can be an expert in a very narrow field, or you can be a jack of all trades and master of none. 

One thing for certain, though - you don't need to be elite to write good, clean code.

Also, there is no book I would recommend that would be a better teacher than practice and experience; reading a book without experimenting is close to useless.

Alyosha`
Thursday, November 20, 2003

Are referring to the other post suggesting that programmers can be categorized as either “engineer” or “craftsman”? Are you suggesting a craftsman is better than an engineer?

m
Thursday, November 20, 2003

No, you can't.

The problem with development is that you learn so much you keep thinking that's all there is. Then you learn some more.

Rookie's definition of world class actually isn't: "... his programs are nicely design, you could read his code like a good book."

There's a lot more to it than this.

box
Thursday, November 20, 2003

Sometimes insight, ability, enthusiasm (e.g. talent) is better than knowelge and experience. And sometimes not.

pdq
Thursday, November 20, 2003

I was surprised (and imprssed) to find out that Mike Cannon-Brookes (who runs Atlassian - rougly an Australia, Java-based equivalent of FogCreek; contributor to several high profile Java open source projects; and co-authour of a book on development with open source tools in Java) just turned 24.

I think it's possible, but not probably. Your environment shapes you and most of the time most people aren't going to be in an environment that will allow them to get to "world class" stage in 5 years (and they'd have to be in that environment for the whole 5 years methinks).

Walter Rumsby
Thursday, November 20, 2003

impressed/possible

bleh

Walter Rumsby
Thursday, November 20, 2003

I think it's more interesting to look at time than age. So the guy was 24? Honestly, I am not really surprised at him accomplishing something if he started before he could drive.

I've been programming since the seventh grade, and I feel that that gave be a great leg up on the competition. It's how long you've been doing it, not how old you are. There is no substitute for experiance.

Mike Swieton
Thursday, November 20, 2003

No, I'd say there's no substitute for talent. Without the talent, all the experience in the world isn't going to help you.

You can't polish a turd.

Sum Dum Gai
Thursday, November 20, 2003

Obviously talent and experience are important, but I think this is enhanced by those around you -- mentors, professors, co-workers and so forth, who help you along the way.

Smart people tend to hang with smart people. 

Look around, you are only as good as your peers.

Uh Oh!
Thursday, November 20, 2003

It's nice to see the enthuiasm of youth in here every once in a while...

"Can I become a World Class Programmer" vs "How the hell do I find meaning in my job"

Everything you are, you are because of the choices you made. Everything you will be, you will be because of the choices you make.

Jack of all
Thursday, November 20, 2003

> What are the list of books you which can help to attain this level of expertise, beside practising.

_Code Complete_

Christopher Wells
Thursday, November 20, 2003

"The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt is very good.

"C++ In Action" by Batrosz Milewski is good too. He has some good ideas, but I really hate his coding style. Don't let this be the first C++ book you read.

The key isn't to read the books, it's to understand them, and use them as thought-provokers.

Chris Pearce
Friday, November 21, 2003

Why is it that everyone talks about learning technical things, and reading books, whatnot, and not about being productive.  Not to sound arrogant, but, when I *really* get into the zone, I'm a world class programmer.  I've had other REAL world class programmers with say that i've done excellent stuff.  The problem is, that doesn't happen too often.  Most of the time i'm a pretty darn good java coder, but not living up to my full potential. Like i'm permenantly working at 70% brainpower for most of the week.  I'd like to learn how to "get into the zone" more often.  One of the goals I've made for myself in the next couple months, is to learn how to really focus, and attempt to get into the zone.  I think *thats* how you can become a world class programmer, and if someone has tips on *that*, i'll gladly listen like the neophyte that I am.

Vince
Friday, November 21, 2003

My 2c:

You have to read code fluently first. After you can read a program made of 100,000 lines of code in almost any language (there aren't many differences for the _reader_), in a reasonable time, reasonable depending on the language (e.g., 100,000 lines of APL and 100,000 lines of x86 assembly are vastly different in information content), and be able to more or less reproduce the same functionality without going back to the original source, in any other language you have experience with -- you're a master.

You should be able to do that with many kinds of programs too - databases, compilers, raytracers, data compression, communication, games, ....

Can that be achieved in 5 years? I suppose so, if you're talented and spend lots of time. It definitely isn't easy or common.

Ori Berger
Friday, November 21, 2003



---Everything below can be summed up in "Create a professional development plan."  But, here's some ways to do that ...
]
1) Choose your langauge(s), but not too many. Become an expert in that langauge.  If that langauge has a CPAN, actively contribute to the body of knowledge for that language.  Join a user group.  If no user group exists in your area, found one.

2) Learn about traditional software engineering. Version Control, Requirements gathering, software development models.  Learn about patterns and the Gand Of Four. (GOF)

3) Write your tests before you code.  Looking into Extreme Programming.

4) Learn to refactor, and simple design.  Look into quality and how it applies to software - both how to test defects out of your systems, and how to develop the systems so a minimal number of defects go in in the first place.

5) Practice, practice, practice while you do 1-4.  Learn by doing.  If you find you aren't growing professionally, find a new job.

6) Join a professional society - these are like user groups, but typically publish a magazine and are larger.  IEEE or ACM are two good ones. (I belong to the American Society for Quality).  If you want to be a sys admin, think about SAGE.  Learn the "professional development ladder" of that society and climb it.

7)  Consider an advanced degree

8) Write for publication.  Even if it's just a BLOG.  Refine and refine your work - it will help turn your "feelings" into a worldview you can articulate.

9) Find a mentor who is where you want to be and learn from him.

10) Learn communication and negotiation skills.  Toastmasters, How to win friends and influence people, the 7 secrets of highly effective people, etc.  If you can't get the job in the first place, or make an effective point in a critical meeting, 1-9 above isn't going to save you.

good luck!

Matt H.
Friday, November 21, 2003

The obvious place to start would be http://www.dummies.com/WileyCDA/DummiesTitle/productCd-0764553453,subcat-JOB.html , but I would call that the long road.
http://www.dummies.com/WileyCDA/DummiesTitle/productCd-0764538152,subcat-FAMILY.html can get you the same results in 24 hours, if you are really good.

Rookie> using System;
Rookie> using System.Windows.Forms;
Rookie> class World
Rookie> {
Rookie>  static void Main( string[] args )
HotPoker> Hmmm
HotPoker> Rookie, you are a world class programmer
HotPoker> a purist!
Rookie> I think coding is an art
HotPoker> *purs*
Rookie> My programs are nicely designed
Rookie> MessageBox.Show("Hello World!", "Rookie sayz...");
HotPoker>*moans*
HotPoker> Ah! Oh! Your code reads like a good book!

Just me (Sir to you)
Friday, November 21, 2003

World Class Programmers DO NOT think coding is an art.

Mr Jack
Friday, November 21, 2003

See, this is where we get into the definition of what is a programmer.

Is a programmer just someone who is exceptionally skilled at writing code?

Does it include architecture and design skills? Because plenty of skilled C++ programmers couldn't design anything larger than small systems. They are amazingly knowledgeable at the intricacies of a specific OS, but ask them to design a large Point of Sale system and they are lost.

Does it include the ability to pull requirements from a user's head? Plenty of skilled architects who can create flexible and scalable designs are such poor communicators they are hopeless at extracting requirements from users.


Some programmers have all of these skills. Some have a few. It's impossible to define what a "World Class Programmer" is unless you first define what a programmer is.

Which of course..is impossible as well since it's different  from person to person.

Mark Hoffman
Friday, November 21, 2003

World class programmers don't think of programming as art? Are you saying that you are a world class programmer and you don't think programming is art?

I think it's possible to become world class in 5 years. But you need to have the talent to begin with like other people suggested. Also, I'm assuming that in addition to the 5 years of experience you previously have a CS training or some other large exposure to computers.

Finally, I think many corporate environments do not provide a fertile ground to become "world class". You really need to seek out excellence on your own.

NathanJ
Friday, November 21, 2003

If you had 5 years of non stop programming experience, you would be pretty damn world class after 5 years.  The bad asses I know got to bad ass mode by being hermits for about a year and a half. We're talking 7 days a week, 16 hour days.

When most people say "5 years of experience" on their resume, what they have 5 years of experience of is not 5 years of programming experience, they have 5 years of experience programming 1.5 hours a day 5 days per week.
At this clip, you will never be a world class programmer.

Think about the martial arts. Every stupid karate class I took as a kid stressed the notion that you might eventually master karate with 30 years of training.

This makes absolutely no sense, because the enemy is invading now, so you better not take until age 45 to master the judo chop.

Keanu Reeves got dumped into a 4 month 10 hour a day kung fu bootcamp before filming the matrix, and is indistinguishable on screen from most other kung fu action hero, aside from the obvious maniacs like Bruce Lee, Jet Li,Jackie Chan, etc.

So to answer the question, yes 5 years is MORE than enough time to go from zero to hero, provided you bust ass for 5 years. 

sven
Friday, November 21, 2003

"The key isn't to read the books, it's to understand them, and use them as thought-provokers."

Er, how can you understand them if you haven't read them?

John Topley (www.johntopley.com)
Friday, November 21, 2003

World class programmers:

John Carmack
Richard Stallman
Donald Knuth
The leads of the Google team
Linus Torvalds
The guy who modified Half-Life into Counterstrike
Justin Frankel (Winamp)

Yes, it is possible to become a world class programmer in 5 years or less of industry experience, but probably not in 5 years since writing their first program.  Those guys who created world famous applications at a young age were programming on their own from their teenage years or before.

I also would consider architecture and design to be part of the capabilities of a "world class programmer."

T. Norman
Friday, November 21, 2003

Re 24 year old guys with businesses selling gear to lots of big companies - this can be done and does happen, but it's also remarkable how many of those 22- 24 year olds have daddies on the boards of said companies, or with similar connections.

Nepotism is a wonderful thing.


Friday, November 21, 2003

Those are all very FAMOUS programmers.  I don't know if "famous" and "world class" are synonymous.

Richard Stallman is famous for having married software and Marxism into a coherent theology.  Bjarne Stroustroup is famous for inventing the Rube Goldberg contraption that is C++.  Shawn Fanning is famous for having written in essence a very simple program that appealed to the kleptomaniac side of everyone.

Anyways I reject the whole "world class programmer" label as meaningless.  It could mean anything.  It could mean prolific, or controversial, or rich, or well-respected, or clever, or experienced.  The label only is conducive to hero-worship (by the hoi polloi) or self-gratifying egotistical elitism (by the so-called WPCs of the world).  So who really cares?

Alyosha`
Friday, November 21, 2003

I think you just told us who really cares.


Friday, November 21, 2003

Famous != world class.  I deliberately didn't include Shawn Fanning on the list; I don't consider what he built to be all that great technically.  But Stallman is world class for the software he wrote, almost single-handedly, like gcc, gdb, emacs and much of the GNU collection, especially given that they were written some 15 years ago.

I consider "world class" to mean "built something that only a few hundred programmers in the world would be capable of at the time."

T. Norman
Saturday, November 22, 2003

Hey man,

Shawn Fanning has l33t skillz, you gotta give him his props!

Screw the RIAA
Saturday, November 22, 2003

"Richard Stallman is famous for having married software and Marxism into a coherent theology."

That should be a quote on the dust jacket of Stallman's book...

Mark Hoffman
Saturday, November 22, 2003

Anon wrote
>To me, a world class programmer is one that can produce an application that everyone on the planet wants to buy for $999.99. That's a world class programmer. <

Pardon my French, but that is poo. M$oft is a triumph of marketing, not OS or application design.

They sell there stuff for under $999.99 and it is widely-regarded in Windoze 9x, 2000, XP and Office as a 'must-have'. Office is quite good, where Windows is not; but suggesting that you can equate quality with ubiquity is like suggesting that Justin Timberlake is better than Bach 'cos more people like him.

Marx
Saturday, November 22, 2003

You're right Marx. 600 million people have been completely deceived. Every single one of them, including big companies that perform extensive analysis of the market, have chosen the wrong software for their needs.

By the way, it's a bit of an insult for you to take the name Marx. The real Marx was actually a very smart guy. Read some of the stuff he wrote. It's a pity he was tarnished by the bolsheviks. If he was alive today, he would be insightful like Joel.

.
Sunday, November 23, 2003

>By the way, it's a bit of an insult for you to take the name
>Marx. The real Marx was actually a very smart guy.

Marx was also the last name of the Marx Brothers.

Personally, I think Groucho Marx was a very smart guy too.

Screw the RIAA
Sunday, November 23, 2003

"Richard Stallman is famous for having married software and Marxism into a coherent theology.  Bjarne Stroustroup is famous for inventing the Rube Goldberg contraption that is C++.  Shawn Fanning is famous for having written in essence a very simple program that appealed to the kleptomaniac side of everyone."

This should go into the JoS hall of fame, Alyosha. I'm still ROTFL!

Just me (Sir to you)
Monday, November 24, 2003

*  Recent Topics

*  Fog Creek Home