I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

Mar 10, 2009

Sharpening the Saw

As a software developer, how do you sharpen your saw?

sawing a log

Sharpening the saw is shorthand for anything you do that isn't programming, necessarily, but (theoretically) makes you a better programmer. It's derived from the Covey book The 7 Habits of Highly Effective People.

There's a guy who stumbled into a lumberjack in the mountains. The man stops to observe the lumberjack, watching him feverishly sawing at this very large tree. He noticed that the lumberjack was working up a sweat, sawing and sawing, yet going nowhere. The bystander noticed that the saw the lumberjack was using was about as sharp as a butter knife. So, he says to the lumberjack, "Excuse me Mr. Lumberjack, but I couldn't help noticing how hard you are working on that tree, but going nowhere." The lumberjack replies with sweat dripping off of his brow, "Yes... I know. This tree seems to be giving me some trouble." The bystander replies and says, "But Mr. Lumberjack, your saw is so dull that it couldn't possibly cut through anything." "I know", says the lumberjack, "but I am too busy sawing to take time to sharpen my saw."

Of course, the best way to improve at something is to do it as often as possible. But if you're so heads down coding that you have no time for discussion, introspection, or study, you aren't really moving forward. You have to strike a mindful balance between practicing your craft and thinking about how you practice your craft.

Scott Hanselman has some solid ideas on ways to encourage members of your development team to sharpen their saws. And then there's the obvious way, the thing you're doing right now: reading programming blogs. I don't mean this blog, but ones of actual worth. If you keep an open mind, you can sharpen your saw that way, as Reginald Braithwaite notes:

What we do is this: we read a blog post, reading thing after thing we agree with, and if just one thing in there doesn't fit our personal world view, we demand a correction. If the thesis of the post clashes with our prejudices, we accuse the author of being an idiot. Honestly, we would suck as salespeople. We would quit the first time someone disagreed with us.

What I suggest we do is mimic these salespeople. When we read a post, or a book, or look at a new language, let's assume that some or even most of it will not be new. Let's assume that we'll positively detest some of it. But let's also look at it in terms of our own profit: we win if we can find just one thing in there that makes us better programmers.

That's all we need from a blog post, you know. It's a huge win if there's one thing in a post. Heck, it's a huge win if we read one hundred posts and learn one new valuable thing.

If you're looking for good programming blogs to sharpen your saw (or at least pique your intellectual curiosity), I know of two excellent programming specific link aggregation sites that can help you find them.

The first is Hacker News, which I recommend highly.

hacker news frontpage

Hacker News is the brainchild of Paul Graham, so it partially reflects his interests in Y Combinator and entrepreneurial stuff like startups. Paul is serious about moderation on the site, so in addition to the typical Digg-style voting, there's a secret cabal (I like to think of it as The Octagon, "no one will admit they still exist!") of hand-picked editors who remove flagged posts. More importantly, the conversation on the site about the articles is quite rational, with very little noise and trolling.

The other site is programming reddit. The conversation there is more chaotic, with a wild-west anything goes sensibility, gated only by the up and down votes of the community. But it is quite reliable for digging up a great variety of links that are of particular interest to programmers.

Of course, too much saw sharpening, or random, aimless saw sharpening, can become another form of procrastination. But a developer who seems completely disinterested in it at all is a huge red flag. As Peter Bregman explains, obsession can be a good thing:

People are often successful not despite their dysfunctions but because of them. Obsessions are one of the greatest telltale signs of success. Understand a person's obsessions and you will understand her natural motivation. The thing for which she would walk to the end of the earth.

It's OK to be a little obsessed with sharpening your saw, if it means actively submitting and discussing programming articles on, say, Hacker News.

What do you recommend for sharpening your saw as a programmer?

Posted by Jeff Atwood    View blog reactions
« The Computer Performance Shell Game
Why Can't Error Messages Be Fun? »
Comments

Looks like this post has pushed the following onto the front page of Hacker News:

Poll: Ban Codinghorror? (http://news.ycombinator.com/item?id=510309)

Ray Vega on March 10, 2009 2:03 AM

I find stackoverflow.com to be a good source of knowledge as well. What I do is find highly ranked (4000+) members and then look at the questions they've participated in. I then look at their most highly ranked answers. If an answer has 30+ votes, it's usually worth knowing about.

Richard on March 10, 2009 2:19 AM

The daily grind will sharpen your saw.

Robert S. Robbins on March 10, 2009 2:37 AM

Well I just went to Hacker News to sharpen my saw and immediately saw a post with a poll to ban Coding Horror articles (apparently Jeff's writing is not up to their high standards). The comments were seemingly written by a bunch of whiny little girls just complaining about this blog and others and offered no education other than now I know not to visit that website. So no saw sharpened there today, just disappointment.

Weef on March 10, 2009 3:03 AM

@Ray Vega:

Wait, they're upset that he linked people to their site and it might increase traffic?

I think the expression you're doing it wrong applies here somehow...

Telos on March 10, 2009 3:14 AM

I just had to comment on the hacker news poll to ban coding horror. These guys just appear to be tremendous douchebags. |wah| I don't want any readers from coding horror visiting our site. |\wah|
Cry me a river...moron.

o.s. on March 10, 2009 3:32 AM

ROFL, o.s., i find that hilarious. Do you blame them for not wanting people of Coding Horror visiting their site? Jeff is a glorified writer, amature programmer, banking on his successful blog mostly read by college grads who know no better.

Phill on March 10, 2009 3:59 AM

Um, does going to meetings count?

I have never been to a meeting that made me a better programmer. Not even theoretically. Nor even claimed to.

I have been to conferences and workshops that made that claim. But never a plain old meeting.

Meetings aren't intended to make you a better programmer, in the sense of improving your individual programming skill. They are to make your team a better team, or your manager a better manager.

See that picture of the two guys working a whipsaw? Imagine one of them has no idea how that saw works, or that there's another guy on the other end. If you've never used a whipsaw before, it only works when you pull it. If you try pushing it, it jams. Know your tools. Know your team. Know your part.

ED on March 10, 2009 4:41 AM

@Phil: mostly read by college grads who know no better.

As opposed to non-college grads who think they know better?

Telos on March 10, 2009 7:08 AM

In King Solomon's Mines there is a great quote:

-----------------------------------------------------------

A sharp spear, runs the Kukuana saying, needs no polish

-----------------------------------------------------------

I suppose this is the equivalent to over sharpening your saw. If you are polishing rather than sharpening then you are probably procrastinating.

Russell on March 10, 2009 8:04 AM

I frequent news.ycombinator.com daily. I knew of reddit but for one reason or another just never went there. I find stories on hacker news show up about 4 or 5 days later on slashdot ...

theman on March 10, 2009 8:08 AM

I think that as long as you are constantly going out of your way to learn new ways to use your language(s) of choice, you'll be just fine. I go out of my way to see how other people solve a problem that I've just solved to see if I did it efficiently or not.

I think the worst thing a programmer can do is just find code and use it without understanding it. Hack it up a bit. Get in there and learn it. Sharpen your skills and increase you knowledge by understanding what you're telling the computer to do.

Maximillian on March 10, 2009 8:10 AM

I try to use StackOverflow as a saw sharpener. I justify it to myself as I'm using it to become a better programmer, though sometimes it's just because it's fun.

Graeme on March 10, 2009 8:11 AM

I like the analogy.

Personally, I have a very immature programming project at home that gives me an excuse to pick up new languages and consider different development methodologies.

Of course, it's only one project. Different projects require different tools. There's a difference between selecting between multiple tools for a single job and selecting between multiple jobs for a single tool. The latter provides a better framework for gaining a strong understanding of multiple tools.

In short, having a suite of personal projects is a great way to learn multiple tools.

Sites like Hacker News and proggit provide awareness of different tools and concepts, but having a way to apply those ideas is the only way to get any real benefit out of it.

Ryan Kohn on March 10, 2009 8:12 AM

Y Combinator, a venture capital firm in which Paul Graham is a partner, funded reddit. It's no coincidence that the two sites share similarities.

Joe Chung on March 10, 2009 8:12 AM

I think the worst thing a programmer can do is just find code and use it without understanding it. Hack it up a bit. Get in there and learn it. Sharpen your skills and increase you knowledge by understanding what you're telling the computer to do.

In other words, Don't Be Afraid to Break Stuff!
http://www.codinghorror.com/blog/archives/000123.html

Jeff Atwood on March 10, 2009 8:14 AM

Here is a dump from my RSS reader for the code folder. These are somewhat tailored to web-development.

A List Apart
Ajaxian » Front Page
Beautiful Code
Blog - Stack Overflow
Carnal0wnage Blog
ChipLog
Coding Horror
Hacker News
High Scalability - Building bigger, faster, more reliable...
Javascript Kata
Joel on Software
Paul Graham: Essays
programming: what's new online
QuirksBlog
Rands In Repose
Six Revisions
Stevey's Blog Rants
Stevey's Blog Rants
Uninformed Journal
Worse Than Failure

Hacker News and Reddit have decent content, but their RSS feeds absolutely suck. Each item contains just the title of the post, and you have to click through to see the content. I want the content in the reader, dummy!

Chase Seibert on March 10, 2009 8:15 AM

RE: Sharpening the saw is shorthand for anything you do that isn't programming, necessarily, but (theoretically) makes you a better programmer.

Um, does going to meetings count?

I Am 8 Bit on March 10, 2009 8:20 AM

Also DZone is an excellent resource of programming related articles.

http://www.dzone.com

Tomas Kramar on March 10, 2009 8:24 AM

ScottGu never disappoints because ScottGu is Chuck Norris!

AboutDev on March 10, 2009 8:26 AM

Um, does going to meetings count?

Good point. Allow me to clarify.

Sharpening the saw is shorthand for anything you do that isn't programming*, necessarily, but (theoretically) makes you a better programmer.

* that doesn't make you want to kill yourself

Jeff Atwood on March 10, 2009 8:28 AM

For me sharpening the saw also means _trying out_ new things I read of. Its more time consuming but writing and running a sample code is worth as much as reading through many blogposts and keeps that saw sharp.

Gergely Orosz on March 10, 2009 8:43 AM

Sure would be nice if the folks who run Hacker News would read a few posts about 'modern' uses of RSS. Gee, a title link, no actual post text! That's about as compelling as bookmark aggregators circa 2004.
I'm sure there's interesting stuff there but I don't have the time or patience to ponder 6 word titles to see if I can get a zen feel for whatever's hiding behind them...

chris on March 10, 2009 8:44 AM

What about something that doesn't have anything to do with programming?

vmb on March 10, 2009 8:45 AM

I visit www.codekata.com every now and then to refresh myself on some basic programming skills. I wish they would update their site though and get some new kata's out there, unfortunately I think the site is not actively maintained any more...

Devan on March 10, 2009 8:52 AM

@ graeme Just cause it's fun, doesn't mean it's not good for you :)

@ Jeff I've said it in the past, and I'll say it again, don't put down yourself or this blog. The mere fact that other developers can come here and discuss the things you bring up, and maybe even poke at you about some practises reinforces the potential for improvement in all of us. - And you take criticism like a pro. *thumbsup*

Steve-O on March 10, 2009 9:15 AM

Myself I like solving problems from Number Theory, Calculus and Physics books. Solving these complex problems keep me sharp. Also, another big one is looking at or diagnosing and confirming bugs in unfamiliar code. Of course, I read the tech blogs and articles.

o.s. on March 10, 2009 9:28 AM

That lumberjack story describes half the US.

Ortzinator on March 10, 2009 9:31 AM

I agree. There are extreme cases where the team leader refuses to stop and do some re-planning because We are too way behind schedule...

Herman A. Junge on March 10, 2009 9:33 AM

+1 for the DZone.com recommendation

Donal on March 10, 2009 9:51 AM

Reading blogs is great, but I learn a lot more by writing one. Having to understand something well enough to correctly explain it to someone else is a great forcing function for learning. (Not that I always succeed at understanding it well enough or explaining it, but when I fail, at least I learn something from the comments.)

Eric Lippert on March 10, 2009 10:01 AM

This point is entirely valid but I would wager that most people need to spend more time coding and less time surfing hacker news/proggit.

I know I do.

John Bender on March 10, 2009 10:19 AM

Thanks Jeff, and other comment posters!
I've been looking for good Developer resources to add to my RSS feeds. It's not as duh obvious to find good ones as I expected.
I believe whole-heartedly in this theology. None of us are as good as we should be. With such easy access to so many other talented developers out there, and so much new information that we are supposed to know added to the library on a daily basis, we must at least occasionally troll for the golden nuggets that push us to be better at what we do. It's simply a matter of survival.

Michael on March 10, 2009 10:22 AM

If you have a long commute (30 minutes or more), I recommend podcasts.

This is especially a recommendation for your colleagues who have excuses about sharpening the saw, and never read books, blogs, or rss feeds. They may still fail to care enough, but it's worth suggesting.

awh on March 10, 2009 10:29 AM

Posting questions on Stackoverflow :-)

Yes, I know Jeff, you have had a different intentions in mind when you thought about use cases for SO, didn't you? People go there if they have a problem, ask their question and wait for someone helping them out.

My questions are way too specific and complicated to really get a useful reply from there... your post about the Bikeshed Effect covers that very well, BTW. As my problems are so specific and so complicated, instead of everyone, hardly anyone will reply.

So what about the questions I'm asking on SO? I'm not asking them because I'm affected by the issue - at least not at the moment. I ask them, because I have general questions and I'm interested in general solutions to general problems. I see what people reply and I learn a lot of their replies. Often they send me interesting links to blog posts, articles and YouTube videos (Google coding sessions).

I already learned a lot that way. The most important lesson I learned so far was that sometimes something is only a problem because I'm caught within a too restrictive thinking pattern. I'm trying to solve a problem on the basis of assumptions that I see as a fact. Just because I see them as fact won't make them facts, though. If you grew up in a different world, if you have a different thinking pattern, you may not ever realize that something is a problem to some people. To you it may be no problem at all, you are never going to run into the situation in the first place because you take a different approach to begin with and thus won't end up at the same point as me one day.

Mecki on March 10, 2009 10:48 AM

This point is entirely valid but I would wager that most people need to spend more time coding and less time surfing hacker news/proggit.

I know I do.

John Bender on March 10, 2009 10:53 AM

I try to use StackOverflow as a saw sharpener. I justify it to myself as I'm using it to become a better programmer, though sometimes it's just because it's fun.

Fun = a message from your subconscious about an unmet need. Pay attention!

Maybe you need a break from meaningless work. Or maybe you need to do something intellectually stimulating. Or maybe you need to learn. Or maybe you need to do something just for yourself.

Jay Bazuzi on March 10, 2009 11:14 AM

I think choosing different kinds of projects makes for a learning experience, though I think one of the things that I appreciate the most was starting a free software project. I've learned a bit about working on a software project along with other programmers, which isn't at all my day-to-day experience.

So generally my advice is to try doing the kinds of programming-related stuff that you've never done before.

Pies on March 10, 2009 11:21 AM

Thanks for writing this Jeff. Gave me a whole new bunch of things to add to my feed reader, always on the lookout for new programming sites :)
BTW, I started sharpening my saw some time back by writing articles about programming (at http://www.safercode.com/blog/ ). It helped me in a couple of ways. First, I could take out time to read and research more about the aspects that i was writing and second, the great comments that I got on the articles with much more insights than I could imagine.

Shantanu on March 10, 2009 11:26 AM

That lumberjack story is just about the worst parable ever.

Oh and blogs are a good way to learn about interesting stuff, but sharpening your skills usually starts with some proper literature...

wds on March 10, 2009 12:19 PM

What? Look at the screenshot you posted about Hacker News: there is not a single link to an article about programming.

Your writings on Hacker News the last couple of days are pointing out how little preparation and thought go into your blog posts.

If you want to be a better programmer, write lots of code, learn a new language outside of your comfort zone (and I'm not talking about learning Python if you know C#, etc), and read the old classics.

Jacob on March 10, 2009 12:20 PM

What do you recommend for sharpening your saw as a programmer?

Studying some Computer Science. Even thought you might *never* need things like big-O notation, knowing them opens your mind.

Probably you shouldn't try to implement a Neural Network in a regular comercial software, but knowing about them can help you adding new models (or ways to think about software) to you software designer toolbox. An example of this are regular expressions and automata theory. They were really theoretical stuff, but nowdays are commonly used (it can make things a lot easier)

Queue Theory can be really usefull in big systems. Generaly, when the complexity of the software increases, more theoretical stuff can be usefull.

A good place to read about it's Academic Hacker News:
a href=http://www.cs.toronto.edu/~ad/news/http://www.cs.toronto.edu/~ad/news//a">http://www.cs.toronto.edu/~ad/news//a">http://www.cs.toronto.edu/~ad/news/http://www.cs.toronto.edu/~ad/news//a

Demian Garcia on March 10, 2009 12:26 PM

Ummm, like anything else...

work/spend time with people who are better at something than you are, and, do some reading and practicing.

Steve on March 10, 2009 12:39 PM

Probably you shouldn't try to implement a Neural Network in a regular comercial software

This statement is ambiguous to me. Do you mean, Given a problem a neural network could solve, you probably shouldn't use one in commercial software? Or do you mean You probably won't encounter a problem a neural network could solve in commercial software development?

Most people don't encounter problems NNs could solve, but most people don't look for them, either. Machine learning has definitely escaped the RD lab and is everywhere in commercial applications.

Reg Braithwaite on March 10, 2009 12:56 PM

I prefer to have women sharpen my saw, although now and then I sharpen my own saw.

Sorry, I have a sick mind and had to indulge ;P

Noob Saibot on March 10, 2009 1:13 PM

I am addicted to StackOverflow in the worst sense. I spend entire hours perusing the various questions looking for new ideas, looking for questions I can answer and helping people out. I have learned so much from various StackOverflow posts it is amazing!

Bert JW Regeer on March 10, 2009 1:26 PM

You should go away from the computer some time every day, not just for going to the bathroom or fetching coffee.

Some advice:

1. Get enough sleep. Sleep deprivation is like going around slightly intoxicated, maybe you do already?

2. Exercise, get's oxygen to your brain so you can think, and the endorfins makes you relaxed and that feel good.

3. Meditate, dream or visualize about a program or snippet of code you write. If you can't see the code in your head you need to polish your skills. Go so basic you need!

Jerko on March 10, 2009 1:57 PM

Reading books ofcourse. Google for programmer developer recommended reading

Arvind on March 11, 2009 2:31 AM

I think you missed the point here, slightly. In the 7 habits sharpening the saw is doing non work things that make you human, like taking a break and spending time with your family or reading. Taking time to sort out the work life balance.

Looking at different perspectives is good. Personally I get a lot out of books like Jared Diamond's - anything that is written in a clear analytical style about something interesting.

And taking time off to be a human. That's why I stopped working for Oracle and being on the road all the time, even though it cost me 20% of my income.

Your focus here is much narrower than Covey's. However thanks for the links - very useful.

Francis Fish on March 11, 2009 3:15 AM

Interesting that Braithwaite tries to encourage by warning that we would suck at being sales people. Salesmen actually frustrate me because of their superficiality, the salesman who mimics my views to the point of making a sale, and then completely loses interest. I think this helps understand this whole topic - developing is something where you completely internalise ideas and understand them deeply. We have to let a lot of superficial rubbish bounce off in order to concentrate on what matters. But at the same time, in order to better understand we need to listen to dissenting views. In the same way, the greatest salesmen have a deep understanding of their products.

Re the sharp spear, the Tao Te Ching says (in some translations) If you hammer and sharpen your sword, you cannot keep it long.

Andrew on March 11, 2009 3:30 AM

How do I sharpen my saw as a programmer? I get away from my keyboard and try and experience a bit of real life. When I look around me at software I encounter every day, the part that seems to be so often missing is real world touches. Most software I use doesn't really seem to understand my goals or help me as much as it could towards those goals.

I think the reason for this is to become a really good programmer, you need lots of practice, as you've said many times. Good programmers are also obsessive about this stuff. Both of these factors combine to form people who don't go out of their house for days on end (except maybe to pop down to the shops). In my opinion, this means you can really easily lose sight of what you're trying to achieve with the software. I try to have at least one day out a week, where I get away from my computer and see the outside world. It gives me a chance to clear my head and refocus on what's important, both in my life and in my current programming projects.

As humans, we're not built to sit in front of screens for 40 hours a week (and I know that I spend way longer than this in front of mine). I think less time programming and more time experiencing the real world can help you build better software.

John Gallagher on March 11, 2009 5:01 AM

IMO blogs and sites like Hacker News and programming reddit are 99% of the time a waste and don't help to sharpen the saw at all.

Anonymous on March 11, 2009 7:35 AM

I teach entry level tech courses at a local school. It forces me to get in front of people and explain technical stuff in simple terms.

Also, I know you said anything but programming, but as a business developer (yeah boring databases) I will write side programs that have no immediate benefit, but stretch me in some way. When I was learning .NET, I wrote a program that rendered a fractal, could zoom in, and cycle through various color maps defined in other files. Pretty useless, but very valuable in teaching me about the language.

Z on March 11, 2009 8:07 AM

What do I do to sharpen my saw?

disclaimerI wrote for SD back when there was one, present frequently at the conference, and am friends with conference staff/disclaimer

I go to SD West whenever my employer can afford to send me. I learn useful things in the classes, but much more valuable are the casual conversations with other developers, including the speakers. *Every single year* I learn something by talking to someone who's (A) Smart, (B) Knows a lot about development, and crucially (C) IS SOMEONE I DON'T TALK TO DAILY.

Oh, I almost forgot an even more important point: (D) Doesn't agree with me!

The conference is an unending fount of people whose biases I don't know and whose experience is wildly disjoint from mine, so I get exposed to contrarian opinions. Even if they don't convince me, they cause me to examine my own assumptions and bolster my arguments.

For me it's SD, because of my personal history. But *which* conference matters less than *going* to one. Better yet, presenting at one, because then you're REALLY going to get some pointed questions! It takes a certain amount of nerve to assert that you know enough about something to stand up in front of 200 very sharp people and attempt to impress them. But nothing will hone your knowledge like preparing for such a talk, and being hammered with the questions. Hoo boy.

Rick Wayne on March 11, 2009 9:21 AM

7 Habits is a great book!

Who said that software developers are infallible and too good for Personal Development?

-- Lee

Lee on March 11, 2009 10:01 AM

One of the biggest things that helps me think clearly and come up with the right approach to a problem is to WALK AWAY. When you're hammering out code to figure out the solution to a problem, you can get to a point where it's impossible to see the solution.

When this happens, I'll grab someone on my team, go get a coffee (or a beer), and talk about what it is you're trying to solve. Often once you're out of the office and away from your computer, you can give yourself some perspective. The answer usually comes easily after that.

Rob Volk on March 11, 2009 10:28 AM

This statement is ambiguous to me. Do you mean, Given a problem a neural network could solve, you probably shouldn't use one in commercial software? Or do you mean You probably won't encounter a problem a neural network could solve in commercial software development?

I mean the first one. I believe -and I could be wrong- that in a regular job writing production code, a simpler model is better.

Demian Garcia on March 11, 2009 10:50 AM

I fear I should sharpen my tools quite a bit by now. Maybe it's just the fact I'm working on something really old and somewhat sad, but I feel my skills have been rather dull recently.

In the past, I've used to do that learning new languages. It proven time consuming, not so enjoyable to me and rather useless in the long run.

I used to surf the net alot, but a few months ago I found out that this actually grew out of control. I now keep my surfing to a bare minimum of selected sites (congratulations Jeff!) which seems a better idea.

I have to admit I am quite out of ideas.

MaxDZ8 on March 11, 2009 1:07 PM

BTW, I started sharpening my saw some time back by writing articles about programming (at http://www.safercode.com/blog/ ). It helped me in a couple of ways

Oh, absolutely. If you find yourself discussing stuff at length on these sites, why not take it one step further and start a blog?

I've seen many a long comment that really would have made an excellent blog post. For longer pieces that take significant time and energy to write, why not build your *own* site up rather than someone else's?

But starting with comments is a good way to decide if it's something that you intrinsically enjoy, or not.

Jeff Atwood on March 11, 2009 1:50 PM

Try doing the crossword puzzle in your daily newspaper. If/when it becomes too easy, only look at the across or down clues (pick one).

Learning a musical instrument or foreign language (I mean, for example, Sanskrit, not Modula-2) will expand your brain. Ballroom dancing will not kill you. Visiting the local museum will not kill you.

Play football - chase girls, just get off the sofa.

Lepto Spirosis on March 11, 2009 1:56 PM

I read various blog posts and listen to various podcasts to sharpen my saw. I typically ignore the comments though as they're generally a waste of time, with everyone spouting the same thing or just being pompous.

The way i see it, if the comments contain anything of any real value then the author will typically spin up a new thread to address it.... if not my loss I guess, but either way the signal to noise ratio in comments is so high that its simply not worth the time.

Ralphy on March 12, 2009 6:30 AM

Project Euler (http://projecteuler.net) is a good saw-sharpener.

Particularly good if you use a different programming language than what you use for your day job.

paul on March 12, 2009 8:58 AM

Excellent topic Jeff - Hanselman brought it up a year or so as well and its become part of my interview process to ask kids how they sharpen their saw (or if they care at all to)

My suggestions - Step 1 - Pick your favorite RSS reader (mine is RSS Bandit) and start collecting great blogs around your area- I like ScottGu, Jamie M's Data Mining blog, Kimberly Tripps SQL Blog, etc...and pick up a few like Greg's Cool [] of the Day blog to pick up tidbits on new tools, etc

Step 2 - actually attend a user group, regional conference (I am lucky enough to be by Heartland Developer Conference in Omaha) or regional MSDN events - things that make you interested in new material or techniques

Step 3 - Load up your MP3 player with .NET Rocks or Hanselminutes

I will respectfully disagree with reddit programming and Hacker News as I too find them too noisy with too many religious battles fanboys but it only takes 1 new idea from any source to make it worth your while

I enjoy your site - thank you

BradO on March 12, 2009 9:03 AM

It's too bad StackOverflow isn't managed more like Hacker News... for a lot of folks it's going to be read-only.

sqlanywhere.blogspot.com/2009/03/broken-or-worse.html

Breck Carter on March 14, 2009 2:35 AM

When they invent yet another new framework or technology, it often gets more bloated, more complicated, with less features or otherwise unfamiliar. So instead of sharpening the saw, they bring us a new tool that we need to figure out how to make it sharp.

Silvercode on March 14, 2009 4:40 AM

Hey, your captcha-word is always orange???

All Inclusive Los Cabos on March 14, 2009 12:39 PM

I'd argue that a lot of the suggestions thus far have been better for identifying new types of saw or different types of wood to cut.

Facts About Solar on March 16, 2009 12:04 PM

http://ioom.co.uk - Web Design Preston | Kent - Experienced Designers in Magento, Ecommerce and Dynamic Websites.

Ioom Design is a web design company based in Preston, Lancashire and Folkestone, Kent. We offer services to the whole of the UK at affordable cost.

Andrew on March 17, 2009 2:37 AM

Jeff, you've been plagiarized:

http://www.nitinh.com/2009/03/hacker-news-hacked-newsycombinatorcom-hacked

(I thought I'd read that paragraph before, somewhere ;-) )

James Pearce on March 18, 2009 9:48 AM

global and legal cool(:

rap dinle on March 18, 2009 1:27 PM

dede nine global(:

mp3 dinle on March 18, 2009 1:28 PM

düm tek tek tek:)

dizi izle on March 18, 2009 1:29 PM

backlink backlinktir diceksin yüklenekcesin:P

rap on March 18, 2009 1:30 PM

bu i#351;ler özel i#351;ler

aner, aner methüsena on March 18, 2009 1:30 PM

Hiphop, Rap, Sohbet, Gekko G, Turkce rap, Gekko, Hiphop sohbet, rap sohbet, rap chat, Hiphop chat, Gekko, mc, sohpet, break dance, emre baransel, ceza, ayben, http://www.gekkog.com/, http://www.kodes.com/


Hiphop on June 13, 2009 3:33 AM

türkiyede haber http://www.haberiz.com 'dan takip edilir. spor haberleri http://spor.haberiz.com 'dan bakilir. kadinlar kendilerini http://kadinca.haberiz.com 'dan takip eder.

haber on June 26, 2009 2:24 AM

Very nice...

ekkazanc on August 4, 2009 4:57 AM

ek iÅŸ niyetine para kazanabileceÄŸiniz alternatiflerin hepsi www.ekkazanc.com da...

ekkazanc on August 4, 2009 4:58 AM

Just to second Graeme's comment: Stack Overflow is a great grindstone.

Don't just answer questions you already know how to answer. Don't just read other answers when you expect to see something new.

Instead, read other takes on what you think you already know, and explore new avenues to help someone else. Solving other people's problems is a great form of insurance against running into the same problem yourself in a year's time.

Jon Skeet on February 6, 2010 11:13 PM

What do you recommend for sharpening your saw as a programmer?

I still like technical books - actual, dead tree books, especially those from the Pragmatic Programmers. The experience improves with a real live book by highlighting, making notes in the margins and ,if appropriate, throwing the entire thing at the wall in disgust. It makes a satisfying thump, after which it can be retrieved none the worse for the experience.

Denton Gentry on February 6, 2010 11:13 PM

I'd argue that a lot of the suggestions thus far have been better for identifying new types of saw or different types of wood to cut. Getting better at programming is more about how you saw (or how to identify that your saw is blunt) rather than how sharp your saw is.

One of the most effective tools I've found is trying to teach other people what you think you know. It's only when you try and explain things that you find out how much you know (_especially_ if they then start asking questions!). I've often found myself having to google elements of their question to give a fully thought out answer or tom confirm what I'd suggested to them.

Do that enough and you'll definitely improve your skills and knowledge as a programmer.

Jon Cage on February 6, 2010 11:13 PM

If you want non-programming ways of getting better, I've read (on this blog possibly?) that playing the game 'Go' can improve your problem solving and ability to disect problems into something solvable.

Jon Cage on February 6, 2010 11:13 PM

@Eric - My point exactly :-)

Jon Cage on February 6, 2010 11:13 PM

For longer pieces that take significant time and energy to write, why not build
your *own* site up rather than someone else's?

I started writing a blog just over one year ago, intended to be a professional portfolio of a sort. I've spent most of my career working on embedded software, which makes it really difficult to show or talk about. I thought a blog would be a good way to have something out there in public.

Writing has been a great learning experience, but the professional portfolio idea really isn't working. When you Google for my name you get a bunch of other hits well before you get to my own site. Stackoverflow, LinkedIn, and other sites with high PageRank are first, even if I have not participated there recently. PageRank is not a social rating algorithm, it exists to rank entire websites not individual participants.

I guess if I want to make my own site come up first in the search results, I have two choices:
1. Don't use my real name in any other context on any other site.
2. Make my blog so insanely popular as to eclipse all the rest of the results.

Neither option is particularly appealing or practical. I don't have an alternate handle I'd want to use on other sites, and, well, the second option is not exactly likely to happen.

One of the stackoverflow podcasts said that part of the goal is to give participants a public exposure, a blog of their own as it were. It certainly succeeds at that. In my case, it succeeds a bit more than I would like.

Denton Gentry on February 6, 2010 11:13 PM

Shopping around is the best way to do if you plan to purchase a sharp microwave oven. It is very important to read the instruction that is on the manual. Things like microwave will last long if one knows how to handle it with care. Microwaves need some cleaning from time to time. Especially when things like sauces and soups get spilled.

Mudassir on August 2, 2010 6:12 AM

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.