There's Three Ways To Know Anything
secretGeek .:dot Nuts about dot Net:.
home .: about .: sign up .: sitemap .: secretGeek RSS

There's Three Ways To Know Anything

Okay, so i've decided there are three ways to know anything. Maybe there's more ways. So, there are at least three ways to know anything. Everything.

Say you want to write really good .Net code: code that fulfills all your needs, does cool stuff, and works reliably. There's three ways.

First, you can read up on the .Net framework, by reading books, by reading other people's code, by reading every article and blog entry you can find -- by reflecting into the IL and reading all of that code too. This is the first way to know everything: learn it all in advance, Just In Case.

Second, you can shun all the books, ignore everyone else's code, concentrate on the language itself, and never use the framework -- always write your own code to achieve whatever needs to be done, from the most basic of first principles. This is the second way to know everything: trust noone, build on first principles, Just Because.

Third, you can run with the fragments of knowledge you've picked up so far, and dive into real world problems. When you hit a barrier -- search for the answer to that specific problem, solve it and move on. Intellisense, Google and Google groups are your friend. This is the third way to know everything: Just In Time.

What do you know? And how?

(p.s. after writing this, i googled for "Just In Case" learning and found that Kathy Sierra covered these ideas much better than me, years and year ago, from a teaching perspective.)





'Joel Martinez' on Wed, 14 Mar 2007 02:56:12 GMT, sez:

My compiler has most certainly adopted the third approach. intellisense, google, and google groups are invaluable for me. It's not that I don't know the APIs, my brain just didn't bother memorizing the exact methods and properties for some things because it's always just an intellisense or google search away



'goldfish' on Wed, 14 Mar 2007 03:07:37 GMT, sez:

i don't even remember the exact names of the tables in the main database i work on now. i just search against the info schema (or the sys tables) and find them out as i need them, forgetting them again soon afterward.

i wish intellisense had a search textbox (and would also bring up partial matches, and would search other namespaces too)



'Dan F' on Wed, 14 Mar 2007 03:14:19 GMT, sez:

Definately number 3. I'm with goldfish, google + intellisense + alt F1 (my favourite keystroke in query analyzer) has turned my brain into a goldfish. I suffer from terminal CRAFT most days :)



'lb' on Wed, 14 Mar 2007 03:16:48 GMT, sez:

CRAFT -- love it! lol.



'Bob Grommes' on Wed, 14 Mar 2007 03:24:05 GMT, sez:

The first two ways you list are completely impractical; the third way is the only pragmatic course. I have always said that the ability to quickly and accurately identify and solve problems and learn new skills as needed is far more important than encyclopedic head knowledge. The ability to memorize facts has little to do with problem solving skills and common sense.

"The core skill of the software developer is correctly identifying and solving problems. Everything else is just execution."

More here:

http://bobondevelopment.com/2006/12/27/is-development-a-science-or-an-art/



'Haacked' on Wed, 14 Mar 2007 04:11:36 GMT, sez:

Google is my meta-brain!

I'm a mixture of #1 and #3. The problem with only doing #3 is that you start doing #2 because you don't know better.

I knew a developer who started writing his own form validation framework along with several other crazy implementations. All provided by the framework.

Now if he happened to be Peter Blum, no big deal. But his code was not up to par with what the framework already offered.

I like to do a little googling before I run into a problem. "Hmmm... I need to validate user input. I wonder what ASP.NET offers."

Likewise, when I do Google, I think it's a good idea to read up all you can and not grab just the answer and move on. Sometimes you miss something that would save you time.



'Adi' on Wed, 14 Mar 2007 06:33:36 GMT, sez:

With me it's also #1 and #3.
I read blogs and articles so I would have general knowledge of things I don't need at the moment.
And of course if I need something I search for it using Google or newsgroups.
A good develope never writes what he can steal.



'Zooba' on Wed, 14 Mar 2007 08:45:34 GMT, sez:

I'm a mix of all three. Does that mean I know anything cubed?

I seem to be the same on #1 and #3 as everyone else, a reasonable range of blogs and occasional voyages through obscure documentation and Google or MSDN for something I need to know.

On 'never writing what I can steal', I tend not to feel comfortable using something when I don't know how it works. I find the best way to understand something is to write it. Hence (over years) I've written 3D engines (from scratch), string management libraries, GUI frameworks and plenty of other stuff. I do a lot of programming in assembly for this reason - I have a deeper understanding of what's going on when I use a higher level language.

IMHO, a programmer who doesn't know how the tools he's using work is just building with Lego (original Lego, not Techno or any of the fancy stuff).



'Eric D. Burdo' on Wed, 14 Mar 2007 10:49:13 GMT, sez:

#3 for me.

I do like to read, but I find that only gives me the knowledge ABOUT something, not the knowledge of HOW TO DO something.



'Dave O'Hara' on Wed, 14 Mar 2007 12:32:21 GMT, sez:

While I would have to agree with most that #3 seems the "best" answer here, this doesn't seem to distinguish a Google coder* from a coder who uses Google.

* Google coder - a person who uses http://code.google.com/ to mix and match snippets of code and mashes the F5 key until they manage to get it to run.



'Eddie Paz' on Wed, 14 Mar 2007 14:42:37 GMT, sez:

I definitely have to go with #1 & #3. Although I don't do #1 as you listed it. It may just take over your life with something as huge as .NET.

I keep an eye on what's hot out there, read any and everything I can get on the subject (just in case); and when it's time to use it, at least I have a clue where to go when applying #3.



'Aaron' on Fri, 16 Mar 2007 13:36:05 GMT, sez:

sometimes its fun to use #2 (for pay) but to use #3 successfully and accurately, i needed #1



'http://' on Fri, 18 May 2007 02:56:31 GMT, sez:

Looking closely into #1:

This is why I'm really grateful for the Microsoft Certification Exams. What do you read? Whatever it takes to pass the exam.

It might not be the most useful thing to be reading about right now, but if I fretted about that I'd spend the rest of my life reading the opening paragraph of every article trying to find the most useful one.



'Walter Thomas Jr' on Mon, 28 May 2007 17:58:11 GMT, sez:

I need help real bad with my programming.
How do I write my own program, how to write my program? Can you tell me so that I may make some money?

PS: I have a `digital program` that I want to make recruiting drafting friendly!



'Bert' on Wed, 22 Aug 2007 16:13:12 GMT, sez:

What I want to know is if a "combination of #1 and #3" is the way things work, why the heck do companies INTERVIEW like it's straight #1. And anyone who says that can't be tested in an interview is short-sighted and not innovative enough- in my ever-so-humble opinion.



'oil portraits' on Thu, 29 Nov 2007 02:27:37 GMT, sez:

I think the scientific way of dealing with things that you really want to know is to follow all three. If we ignore any one of these three ways I’m not sure we will still know EVERYTHING.




name


website (optional)


enter the word:
 

comment (HTML not allowed)


All viewpoints welcome. But the right to delete any post for any reason is reserved. Don't make me do it. Comments may be republished, emailed to your loved ones or printed and used as toilet paper. Who reads this legal bit anyhow?

TimeSnapper is a life analysis system that stores and plays-back your computer use. It makes timesheet recording a breeze, helps you recover lost work and shows you how to sharpen your act.

TimeSnapper won last year's Developer Competition at Larkware.com, and is used by over 10,000 people.

Articles

Alan Kay on 'The Camel has Two Humps' Alan Kay on 'The Camel has Two Humps'
is the music inside the piano? is the music inside the piano?
The Bluffer's Guide To Yegge: Business Requirements R Bullsh*t The Bluffer's Guide To Yegge: Business Requirements R Bullsh*t
Prototype Ready for Launch Prototype Ready for Launch
Idea: a poor man's eye-tracking heatmap for win forms Idea: a poor man's eye-tracking heatmap for win forms
'The Register' seems to have plagiarised Mary Jo Foley 'The Register' seems to have plagiarised Mary Jo Foley
A magic goal for software businesses A magic goal for software businesses
A to Z of Software Methodologies A to Z of Software Methodologies
TimeSnapper in Music! TimeSnapper in Music!
Fixing problems can give you a glimpse of something terrible Fixing problems can give you a glimpse of something terrible
Web Tablet: Toward Less Complexity Web Tablet: Toward Less Complexity
Do they store the code for TFS in TFS? Do they store the code for TFS in TFS?
Sudden TimeSnapper Discount! Sudden TimeSnapper Discount!
How Can Microsoft Beat Google? How Can Microsoft Beat Google?
TimeSnapper 3.1: Attack of the the Red/Green Stripes TimeSnapper 3.1: Attack of the the Red/Green Stripes
21 tools used in our MicroISV 21 tools used in our MicroISV
Lost Treasures of the DOS World: tree! Lost Treasures of the DOS World: tree!
The Virtual Machine Machine and the Virtual Virtual Machine The Virtual Machine Machine and the Virtual Virtual Machine
Should Linq To Sql Go Should Linq To Sql Go "Open Source"?
Redux: New Synchronisation Idea Overlooked By Microsoft Redux: New Synchronisation Idea Overlooked By Microsoft
New Synchronisation Idea Overlooked By Microsoft Live team New Synchronisation Idea Overlooked By Microsoft Live team
Visual Studio UX Taskforce, Office UX Taskforce... etc. Visual Studio UX Taskforce, Office UX Taskforce... etc.
How to be Jeff Atwood How to be Jeff Atwood

Archives .: secretGeek :: Complete Archives :.
25 steps for building a Micro-ISV 25 steps for building a Micro-ISV
3 minute guides -- babysteps in new technologies: powershell, JSON, watir, F# 3 Minute Guide Series
Top 10 SecretGeek articles Top 10 SecretGeek articles

Downloads

TimeSnapper -- Automated Screenshot Journal TimeSnapper.com    
Version 3.1: instant productivity profiles

ShinyPower (help with Powershell) ShinyPower
Now at CodePlex

Next Action NextAction
Managing the top of your mind



[powered by Google] 


World's Simplest Code Generator (html edition) World's Simplest Code Generator
Gradient Maker -- a tool for making background images that blend from one colour to another. Forget photoshop, this is the bomb. Gradient Maker
How to be depressed How to be depressed
You are not inadequate.



Recommended Reading

The Best Software Writing I
The Business Of Software (Eric Sink)

Recommended blogs

Jeff Atwood
Reginald Braithwaite
Joseph Cooney
Phil Haack
Scott Hanselman
Julia Lerman
Joel Pobar
Eric Sink
Joel Spolsky
Des Traynor

Aggregated Links

programming.reddit.com
dzone
dot net kicks

Human Link Machines

interesting finds
a continuous learner's weblog
arjan's world
n links today
new and notable
morning coffee
learning .net
weekly link post
(my del.icio.us account)

LinkedIn profile
 
home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2006 .: privacy

home .: about .: sign up .: sitemap .: RSS .: © Leon Bambrick 2006 .: privacy