Tuesday, February 12, 2008

Developers today: Learning to fish

I have been a member of the Wrox programmer to programmer (p2p) forum for many years now. When I first joined it, the forum was a standard mailing list community populated by a real good bunch of folks including some Wrox authors themselves. I recall most of the questions to be fairly thought out and asked by people who had run out of options trying to solve their problems. I started as a new developer learning classic ASP. I had books, I read them. I tried code examples and experimented with new things in an effort to understand how things worked and to educate myself so I could do my job. But when I hit a brick wall or just wanted to understand why some code behaved the way it did I would email the list. I got a lot of great help there and subsequently met a good friend through the list. I owe much of my initial education in web and ASP development to the books and that list.

In part due to a feeling of obligation to give back to the digital community that helped me and simply because I like to educate people by sharing my experience, today my participation on the forum is that of a contributor instead of an inquisitor. I enjoy helping people learn and understand that which I can explain. Even when a question is asked about a topic I might be unfamiliar with I think about a solution and try to provide suggestions, even if they are only abstract, conceptual ideas. Often I become intrigued with the question and stop what I'm working on, to the detriment of my own productivity, and try to solve it myself in an effort to quench my own curiosity. Never have I done so without learning something new.

This nature of mine is what makes me a successful software developer and is, I believe, a trait necessary to those that are in the same profession. I enjoy solving problems and exploring the technologies I use to find better and faster ways to solve those problems. Most often I find a problem I am having has already been had by others and that there are solutions available within a short distance of a thoughtful search.

Getting the Fish
It seems that more and more people pursuing software development lack the natural tendency to solve problems. I am finding that an increasing number of participants on the p2p forum are looking only for the answer to today's riddle and not an explanation of the underlying problem. They want sample code or in many cases, they just want someone to do it for them. In extreme cases a post contains what suspiciously looks like a homework assignment with the query "answer these questions", without so much as a "please". I highly doubt the poster is providing a "quiz of the day" to help us keep our minds sharp".

In the cases of an inquiry for an explicit answer, most often a few seconds of searching will reveal countless pages of sample code or reference documentation relating to the problem at hand. It baffles me to think that someone likely spent more time writing a forum post than it would have taken to search and find the answer. This is evident by the number of responses on the forum that are simply links to other forum threads, articles, tutorials, documentation or simply a google search with the keywords of the original post topic. Smart contributors aren't likely to spend their time regurgitating available information.

Learning to Fish
I hesitate to provide discreet answers to questions that I know a poster should be able to solve on their own. Often I'll reply with a question to which the answer should reveal the solution. I want to help people learn to think about the problem or how to solve it instead of just providing them the answer.

A short post that simply says "here's my code, please fix it" (which I could easily do so) is less likely to get a response from me than one that has been well thought out and takes longer to read. The former is simply a cop-out while the latter conveys the poster's interest in understanding the problem. It is surprisingly easy to spot posters who are genuinely stuck and are just missing something tricky that I've encountered before. The answer is easy to provide and an explanation gives the inquirer a tidbit of knowledge that is not so easy to find. Any case where the explanation is far more valuable than the answer itself is much more enticing to reply to with the goal, of course, being that the person asking will obtain some knowledge that will help them in the future to solve similar problems.

The inherent nature of problem solving seems to be missing in more and more people. I suppose this observation is simply influenced by the effects of the nature itself. People who know how to solve problems are not the ones asking for discreet answers. They are finding answers on their own. However, I refuse to believe that they are absent altogether. I often find a solution to a problem I'm facing, but still don't understand why the solution works, or why the problem exists in the first place. Most of my own inquiries on the forum are explanations of the problem I had, the solution I found and the question of whether others have encountered this and why it works the way it does. These posts are quests for further knowledge of the question and answer, not the answer itself. Unfortunately, these questions often go unanswered. Occasionally they spark very stimulating conversation that, while not necessarily answering the question, forces further exploration of the problem. These are my favorite threads.

Availability of fish
Analogous to a grocery store, the internet is a grand marketplace of food for the knowledge appetite. Are people becoming less capable of solving problems due to the access to answers? Is this eliminating the need to know how to the grow knowledge and solve problems? Have people become complacent or simply lazy by the prospect that answers are out there and they need not know themselves how to solve them? I hope not. My goal is to help people understand the why and the how and not just find the what.

1 comment:

Rob said...

Very well said Peter, as you know, this is something close to my heart I seem to be locked between contributing and receiving assistance from good people such as yourself.

There does seem to be a rather large increase in "give me the answer" rather than "any ideas?".. a slight, yet significant difference..

IMO, one implies you are asking for the wrong reason, the other implies you are asking for exactly the right reason. You either want to be spoon fed (BAD) or you want to learn and develop (GOOD).

Now can you please post this comment for me ;)