Scott Hanselman

Please Learn to Think about Abstractions

May 17, '12 Comments [80] Posted in Musings
Sponsored By

Jeff Atwood wrote a post called Please Don't Learn to Code and Zed Shaw wrote a post called Please Don't Become Anything, Especially Not A Programmer.

My wife lost her wedding ring down the drain. She freaked out and came running declaring that it was lost. Should we call a plumber?

I am not a plumber and I have no interest in being a plumber. While I advocate that folks try to be handy around the house, I choose to put a limit on how much I know about plumbing.

While my wife has an advanced degree in something I don't understand, she also, is not a plumber. As a user of plumbing she has an understandably narrow view of how it works. She turns on the water, a miracle happens, and water comes out of the tap. That water travels about 8 inches and then disappears into the drain never to be seen again. It's the mystery of plumbing as far as she is concerned.

I, on the other hand, have nearly double the understanding of plumbing, as my advanced knowledge extends to the curvey pipey thing under the sink. I think that's the technical term for it. After the curvey pipey thing the series of tubes goes into the wall, and that's where my knowledge ends.

Everything is a layer of abstraction over something else. I push a button on my Prius and the car starts. No need even for a key in the ignition. A hundred plus years of internal combustion abstracted away to a simple push button.

Jeff said:

Please don't advocate learning to code just for the sake of learning how to code.

Zed says:

Never listen to people who try to make beginners feel like losers.

I think everyone should learn how to think and when to dig deeper and should be able to do it in a welcoming and friendly environment.

Learn how to question how things work. Learn that everything new and simple hides something large and complex. We are all standing on the shoulders of giants like Newton, Tesla, Kettering, Berners-Lee, and on and on.

You can choose to live in a world where things just work, or you can choose to dig a little. You don't need to learn to code, you don't need to be an expert in everything but know that you can learn. You can learn a little or a lot. I don't think the Mayor of New York  needs to know how to code, but it'd be nice if he knew a little about DNS and a little about HTTP.

Judge Alsup in the Oracle v. Google case has been learning Java on the side during the case. Recently when a lawyer tried to imply something was a days work and patentable the Judge, armed with his new understanding that ends an a lower level of abstraction declared (via Groklaw):

Judge: We heard the testimony of Mr. Bloch. I couldn't have told you the first thing about Java before this problem. I have done, and still do, a significant amount of programming in other languages. I've written blocks of code like RangeCheck a hundred times before. I could do it, you could do it. The idea that someone would copy that when they could do it themselves just as fast, it was an accident. There's no way you could say that was speeding them along to the marketplace. You're one of the best lawyers in America, how could you even make that kind of argument?

Oracle: I want to come back to RangeCheck.

Judge: RangeCheck! All it does is make sure the numbers you're inputting are within a range, and gives them some sort of exceptional treatment.

The Judge could have remained in the dark, or relied on an expert to interpret for him, but he dug a step deeper and learned some Java. He knows how to think and he applied to remove a layer of abstraction away from the problem facing his court.

I opened the trap under the sink and retrieved the ring. She was thrilled. "I never knew that was under there." Now she does and now we both know a little about plumbing and abstractions. And that's a good thing.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Thursday, May 17, 2012 12:21:06 AM UTC
Try to understand how everything works, but know when to call in a plumber...
Thursday, May 17, 2012 12:23:55 AM UTC
There's a curvey thing under the sink!?
~-=Mike=-~
Thursday, May 17, 2012 12:30:53 AM UTC
I think the knowing about the curvy thing under the sink is such a simple thing it is not equivalent writing even a couple of lines of code. It is more equivalent to knowing how to type facebook.com into the address bar of your browser. Writing 5 lines of code would be equivalent to installing your own water filter in the sink.
Craig
Thursday, May 17, 2012 12:40:06 AM UTC
Hi Scott,

I want to say thank you for this article. What you describe here is something a try to practice every day and advocate strongly for.

To my mind, it's not just that people forget they can learn, but I feel it's also a reflection on the disposable society we live in. There is not impetus for people to lean, and so they don't.

If more people tried things, or at least thought about it before deciding they couldn't, I can't help but feel that society would have a very different mentality.


Cheers
Sam
Thursday, May 17, 2012 1:29:42 AM UTC
Jon had some cool parenty things to say about this...his post. And I bet you know more about plumbing than you let on. Bet you've even dared to look in the wall.
Thursday, May 17, 2012 2:08:34 AM UTC
Also see Computational Thinking:

Computational thinking means creating and making use of different levels of abstraction, to understand and solve problems more effectively.


I'm actively engaged in rolling out pre-AP computer science curriculum in Oregon designed to teach these very concepts.
Thursday, May 17, 2012 3:06:27 AM UTC
Great post. My personal motivation to learn a bit about plumbing is the $150 cost of typical plumber's visit. Want to earn $150 in 5-10 minutes - learn a bit about plumbing.

Not sure if this can be applied to programming though.
Thursday, May 17, 2012 3:08:22 AM UTC
Abstraction is the essence of technology.
Thursday, May 17, 2012 3:22:55 AM UTC
I hate calling the plumber.. In the last 3 times i called them, they didn’t know how to fix the problem, blamed somebody else for the problem (carpenter, kitchen installer, electrician) and charged me for the privilege.

The last time I was told to call the plumber, i did a little research and fixed my own problem...
Thursday, May 17, 2012 3:28:28 AM UTC
Another great post. Thanks, Scott.

The anecdote of the judge is interesting, since he didn't need to learn Java to understand what a range check is. But learning Java gave him the authority to call BS on the claim that this was a patentable idea. I guess you can think of an abstraction layer in a similar way. The layer says, "There's stuff here. You know stuff, and you know what it takes to learn new stuff. If you have bandwidth, need, or just want to validate what someone has said, lift off the layer and dig." Sort of like the cabinets covering the sink trap.
Thursday, May 17, 2012 3:49:33 AM UTC
Like the grammar abstraction… "I push a button my Prius and the car starts". :)

I think many people miss that most skillsets for working with technologies have a non-linear range of proficiency levels. Being able to read doesn't make one a writer, nor a novelist; but is a essential skill to each.

Thursday, May 17, 2012 5:10:27 AM UTC
Yes, I remember heard you talking about the ring story in one of your podcasts ;)
Bashar Kokash
Thursday, May 17, 2012 5:53:55 AM UTC
I see this need pop up at work quite frequently. People work with data all the time, we live in the information age. To know how to process that information is key to successful applications.

Anyone who has been using Excel should know a bit about relational tables (Databases). Primary and Foreign Keys. Because then they can build great Excel sheets that extract values from other sheets using lookup functions (Programming).

Thursday, May 17, 2012 6:08:24 AM UTC
Just a quick reminder: we need to examine the approximate cost of plumbing, before we get our hands dirty. Sometimes, learning costs don't worth it (and I'm not talking about the trap under the sink :))
Thursday, May 17, 2012 9:06:45 AM UTC
In this country it's worth learning some basic plumbing skills - plumbers charge one of the highest hourly rates for tradesmen in my area.
Thursday, May 17, 2012 9:13:51 AM UTC
I think you missed Jeff point. He was saying that if you're a politician you should have other things to do than learning how to code, which is very narrow minded and very sad thing to say. Read his post comments.
Jean
Thursday, May 17, 2012 12:21:34 PM UTC
I think this post implies that people should become generalists and stop dependence on the words of "experts". It has implications on political aspects as well.

Thursday, May 17, 2012 12:34:00 PM UTC
"I opened the trap under the sink and retrieved the ring."

I see that Scott dug a little deeper into plumbing while writting this blog post! He has learned that the "curvey thing under the sink" is called a "trap". Way to set a good example Scott!
Thursday, May 17, 2012 12:36:33 PM UTC
I learned about plumbing abstractions many years ago, when my daughter was small and would flush objects down the toilet. Good thing that kind of experimentation was over before her little brother was born.
Thursday, May 17, 2012 12:41:34 PM UTC
This is definately one of the best articulated responses to the "don't learn to write code" message. Nice work, Scott. Good use of anecdotes to show your argument (vs. just telling).

@Craig: You only know about the P-trap because you see it all the time. Code is hidden, so it's harder to learn naturally. People who do a lot of Excel work don't think nested if statements are complicated either. Heck, some people don't even realize what the "curvy thing" does, so couldn't use it.

@Bart V: Agree 100%. I always get the feeling that the "don't learn to code" crowd is a bunch of sequestered developers with some grudge against the business users. People in offices work with programming concepts all the time... sure, they are abstracted a little, but better understanding the underlying principals only helps.

@Jean: What exactly do you think the mayor is doing with his time? The entire basis of our educational system is that a broad range of knowlege is important in every field (remember all those sociology credits you had to take?) Would you have to same objections if the mayor started training for the NYC marathon? of course not. Snobbery!
Thursday, May 17, 2012 12:44:03 PM UTC
I like where you went with this post. I think to many people get upset when others, like the Mayor of New York, attempt to learn something out of their core sphere of knowledge. The Mayor could have chosen to learn some code for a hundred reason, of which we may only know a few and I doubt he spent 40 hours a week for 3 months attempting to learn it.

What you article is really advocating is to have a T knowledge set. Know a little about a lot and a lot about a little. And then, most importantly, know what to learn when and how to learn it well.
Thursday, May 17, 2012 12:48:42 PM UTC
Great post, Scott. I find that you also get a great sense of accomplishment and self-reliance from knowing enough to do these things yourself (plumbing, small home improvement projects, troubleshooting in a technology you don't know, etc.) . As a non-classically trained programmer, I can say that knowing you are capable of learning something is a very inspiring feeling and will get you much further than the person who throws up his hands and has to ask the next guy to fix it for him.

"And we are now men and must accept in the highest mind the same transcendent destiny. And not pinched in a corner. Not cowards fleeing before a revolution, but redeemers and benefactors. Pious aspirants to be noble clay plastic under the Almighty's effort. Let us advance and advance against chaos and the darkness." - Ralph Waldo Emerson
themanfromsql
Thursday, May 17, 2012 12:50:14 PM UTC
@Yaniv: so all you ever do is write code? bullshit

As developers, we are expected to know (or be able to learn concepts in) any subject area that we work in. I know in-depth how A/B market testing works, how to setup a GL and basic accounting reports, the grant writing process, how to evaluate child care centers according to national standards... not to mention technical/math stuff like statistical analysis, etc (but that doesn't make my point as well)

It really annoying to see people in such a diverse field making the argument that "other people" should stick to their own area

(never mind that people are allowed to have hobbies. would we have this conversation if it was the "year of whittling"?)
Thursday, May 17, 2012 1:00:05 PM UTC
Nice writing. Glad you got the ring back, and thanks for putting conversations like this on a different context.
Thursday, May 17, 2012 1:36:56 PM UTC
Thanks for a great post! Makes me feel much better about my "skill set". I started my working life (almost 40 years ago) as an EE, then went into photography, then started a small construction business and am now an aspiring, semi practicing, developer. It helps to know that just as I am sometimes in awe and a little depressed at how little I know compared to many others, there are many areas that I take for granted that seem like voodoo to some.

Great blog... let me know if you need any construction advice ;)
Paul Berendsohn
Thursday, May 17, 2012 1:41:36 PM UTC
I see what you did there ;)
Now, can you run for Congress and do the same thing for the Healthcare and Income Inequality debates?
Thanks.
Thursday, May 17, 2012 1:45:13 PM UTC
@David Janke. I would take your statement a step farther and say that being able to learn other's disciplines is as equally important as being able to program well. I believe that extra knowledge is often what gives a programmer more market value.

This might be wrong if you are an OS programmer, but then I'd hazard a guess that they have to learn human interface theory, so I doubt it.

ptrap the technical term is ptrap LOL It is there to keep sewer gasses from overwhelming gentile noses when you lean too close to the sink. :)
Thursday, May 17, 2012 2:19:32 PM UTC
For the record, the curvy pipey thing goes into the wall and joins up with the house wiring and cable tv. From there all the unused electricity and water is dumped into a retention pond along with any unwatched channels and unroutable IP packets.
Thursday, May 17, 2012 2:21:08 PM UTC
Funny you mentioned the ring story. I just listened to that podcast this week!
Thursday, May 17, 2012 3:35:31 PM UTC
This falls inline with what i believe. That eventually there should be no magic. Is okay to not understand things and mark them as magical on good times.

But when problems arise someone better learn the magician tricks or it is doomed to happen again.

On the Zed Shaw line about beginners. Honestly in this profession no one knows everything(particularly me). But i find that a lot of people don't even try to learn and that makes it extremely frustrating to work with them.

My 3 cents
YMMV
Alfredo
Thursday, May 17, 2012 3:43:46 PM UTC
Cool article man. So many things are wrapped up in abstractions, if you can learn to think in them. This is the gateway to freethinking, openmindedness, and liberalism!
Thursday, May 17, 2012 3:49:29 PM UTC
I feel that I am still not a good abstract thinker myself.
as an example, I was trying to fix a bug for a code that I didn't write. The code was doing complex task by calculating the shortest path in a network using a third party library.
And my first approach was to dig in to learn the library API, and what the code was doing.
And after two days wasting my time, I stepped back and try to isolate the code into layers, and voila, in 20 minutes I found the problem.
Someone
Thursday, May 17, 2012 4:17:41 PM UTC
I love to do it yourself.

The great thing about the internet is I now have access to plenty of articles showing you how to do it basically right.

It still takes practice, and you need to know when it's time to rent the right tools and when it's time to give up and hire someone else.

Thursday, May 17, 2012 4:35:34 PM UTC
IMHO the Mayor of NY should concentrate on solving the problems of NY.

I been programming for 20 years (not at your level or at the level of most of your readers) and I can safely say that I know a little about DNS and HTTP -- and only because it is relevant to my line of work. Maybe it's just me, but my family does not understand writing code and I don't have a problem with it.

I fix most of the pluming issues around my home and the only time I had to call a Plummer was to replace a toilet; and I'm sure glad I did. My father was life long auto mechanic but I don't fix my own car and he doesn't want to learn to code. It's all fine: he doesn't need to know how to code, and I don't need to know how to replace the pistons. Neither of us is worse off because of it.

Just my 2 cents
Thursday, May 17, 2012 4:40:33 PM UTC
I say: "You're not a loser, but, hey, don't just sit there! Do something. "
Thursday, May 17, 2012 5:16:15 PM UTC
Its amazing what you learn when you have to do a little DIY. P Traps block sewage gases from coming up through your drain using a couple inches of water. They also are good for trapping lots of hair and other gunk (including rings) that may clog the drain inside your wall.

I've seen many programmers that if they would peel away just a couple layers of abstraction, they would be much better at their jobs and maybe even considered for advancement. But they are happy with mediocrity.

Thursday, May 17, 2012 5:38:51 PM UTC
I showed my brother how to make a very simple data entry screen. It took about an hour from start to finish and he understood most of it. He now "get's" what I do.

He's a very able computer user, but he professionally works 100% with his hands, cook/roofer/eavestrougher/HVAC etc...

I think that a person learn some coding/plumbing/electrical/etc... if:

a) It'll make them noticeably more efficient at their job
b) If it helps them know when they're being lied to (IE from a contractor)
c) If they're interested in it (not going to tell you not to learn something if you want to)
Thursday, May 17, 2012 6:19:40 PM UTC
The internet lives under your sink?
Thursday, May 17, 2012 6:36:13 PM UTC
I've recently:

1. Replaced the front spring on my citroen.
2. .and the disks, pads brake pipes.
3. The relay that drives the fan that cools my huge fridge/freezer, has failed so I wired it seperately so its always on.
4. I built my own wet-room, yes! all of it, electrical, plumbing, new suite and tiling.
5. I stripped out all the old doors and frames in my hall and replaced them with new ones of differing sizes.
5. I took a few months out to get my PRINCE2 Project Management certification.
6. I'm raising six children.
7. I make a great Steak Diane and I remember my demi-johns of home made wine.
8. I'm brushing up on: Silverlight, MVC3, jQuery

I can't get a new contract, why coz I have a gap in my development contracting career (remember the PM thing?).

Put simply, I'm not clever, I'm just a jack-of-all-trades and master of none. I should really focus on just a few things shouldn't I?
Thursday, May 17, 2012 7:11:15 PM UTC
You know, the idea that programming is difficult depends on perspective and context. But, if you think of it as simply writing instructions that could be executed by a machine, it doesn't have to be difficult:

- think Excel: lots of people do Excel programming and they are not programmers: accountant, engineering, technicians, etc, etc...perhaps even the Mayor...
- think VBA: dig a little deeper into Excel and you can have VBA logic.
- I even saw a refrigeration technician do an excel app that does all the calculations...

I remember years ago my dad plugging away at Excel to do his budget--he's a retired accountant and likes doing things the old way: he plugin the formula, do the conditions, etc. And he's not doing it because he likes coding.

Now, if you're talking about C/C++ that is different and recursion, pointers, etc--a lot of people don't grasp well--especially pointers and even among programmers. I won't go to C# and Java as these are relatively new and more accessible to new programmers.
Hpcd
Thursday, May 17, 2012 8:07:51 PM UTC
Thanks. I really like this post and the point it makes.

Figuring out which level of abstraction to use is a skill programmers know to appreciate :-)
Thursday, May 17, 2012 8:10:26 PM UTC
We heard the testimony of Mr. Bloch. I couldn't have told you the first thing about Java before this problem. I have done, and still do, a significant amount of programming in other languages. I've written blocks of code like RangeCheck a hundred times before. I could do it, you could do it. The idea that someone would copy that when they could do it themselves just as fast, it was an accident. There's no way you could say that was speeding them along to the marketplace. You're one of the best lawyers in America, how could you even make that kind of argument?

Would someone please make sure all software patent applications go through him from now on
Michael Brown
Thursday, May 17, 2012 11:19:09 PM UTC
As a software developer, I felt you might be interested to know...

PermaFlow makes a trap that you can easily retrieve dropped rings :)
Friday, May 18, 2012 12:08:03 AM UTC
This is my first ever post in any real forum of this nature. Jeff's post and Scott's really hit a nerve with me and is something I've been internally debating for sometime. I'm a doctor in the UK but also have an IT Developer Masters Degree. It can be hard to persuade developers I can developer and when I tell my colleagues about what I do they normally look at me with blank faces. You could argue it's Jack of all trades and master of none.

I know I'll never be the world's best asynchronous back office web service developer and I wouldn't want to preferring to stick to WPF (which isn't as straight forward as I thought) and front end technologies consuming Web Services.

One advantage I have is to be able to brainstorm, design, build, implement and support code without the need for other stakeholders bridging 2 industries which helps prototyping ideas quickly which might have legs which I can test and iterate in the real world.

I think the important point is to know your limitations and working within an envelope you are comfortable with.

Raza Toosy
Friday, May 18, 2012 8:01:19 AM UTC
The next question is "why?"

The curvy thing under the sink has a purpose other than catching rings.Understanding why it is there opens up a while new level of understanding of what is beyond your sink.
Jason Judge
Friday, May 18, 2012 9:47:04 AM UTC
Our knowledge and the interpretations that we derive from it are the most interesting things about us as individuals and a key part of our collective existence as a society.

Learn everything that you can, great rewards come from learning about what excites you and or governs the world around you.

I don't know of any instances of failing in learning.. you may not learn what you expect to but you will always learn something.

I think Atwood is trying to draw a line that does not exist:

"Research voraciously, and understand how the things around us work at a basic level" .. but don't try to learn to program?!?!

Understanding is the creation of a visualisation within your mind of a process and the properties of the things involved. What is required for each individual to achieve this and what understanding they will develop can only be found out by trying to learn.

This comes from a creator of a site that tries to define a good or bad question.. *cough*autistic spectrum*cough*

Friday, May 18, 2012 11:31:25 AM UTC
Now fix the bug: Put a filter on the drain so it doesn't happen again.
Tony Scarpelli
Friday, May 18, 2012 1:54:41 PM UTC
Let me know if you'd like to delve deeper into the world of plumbing. Understanding venting is a beautiful thing.
Friday, May 18, 2012 3:37:32 PM UTC
I really hope that the oracle/google case adds to the 'righting of the ship' that we call software IP. I want patent laws scrutinized more. I am super glad the judge took the time to learn the basic concepts (the abstraction of what coding is if you will.) And if a Mayor wants to spend some of his time demystifying technology then I see no harm in it. The only people who need to worry are the ones who I would call 'snake oil developers'.

Understanding the concept and actual deep understanding do not need to be confused with one another and when the right roles has the appropriate level of understanding then maybe we will see some people get called out for the fecal code they develop.

I wish that every manager I have would at least understand the abstraction that is coding... Just like I like that my spouse understands enough about plumbing to wiggle this and that when a flush fails, but to get me involved otherwise (I know WAYYY too much about plumbing...)
Friday, May 18, 2012 3:58:20 PM UTC
But sometimes you open up the trap, and the ring isn't there. Something else is in there, like a banana. And then you know that you need to go back and google more ...what is asp.net actually doing behind the scenes before we get to the curvy thing?
Friday, May 18, 2012 5:15:29 PM UTC
Scott, that was a beautiful explanation of abstraction...and I liked the happy ending, too!
Guy Wade
Friday, May 18, 2012 5:45:55 PM UTC
A fantastic article!
You summed up my view on this heated debate quite eloquently.

I think a lot of people reach a period where they stop asking "why?" Things just work and they tend to take that for granted.

At the end of the day: it isn't about what skills you do or don't have. It's about how curious you are, and how much you're willing to learn to satisfy that curiosity!
Friday, May 18, 2012 8:24:32 PM UTC
i an allrounder. i love to diy as much as possible. the downside is that i am extremly overloaded :D
soso
Friday, May 18, 2012 8:37:30 PM UTC
Hey! nice post! i just wanted to say that i kinda wrote a post that i think "complements" yours... you should take a look: http://techtrainedmonkey.com/2012/05/18/about-who-should-learn-programming/

i would appreciate a feedback!
Saturday, May 19, 2012 12:11:05 AM UTC
I like the way the article relates ordinary stuff to programming stuff. It doesn't sound too technical at all.
Andrew
Saturday, May 19, 2012 5:58:49 AM UTC
"I think everyone should learn how to think and when to dig deeper and should be able to do it in a welcoming and friendly environment."

That is so true. I think the part about environment is a bit understressed, though. I don't know how bad it is usually, but I've been to the places where you just can't be treated as a person unless you know the stuff. And every time you try to ask a question or clarify some things for yourself everyone acts like he or she posses The Knowledge and your just some stupid idiot - mean things and condescending tone all over the place. This kind of environment is a motivation killer.
Saturday, May 19, 2012 10:51:34 PM UTC
Scott, we would have loved to help you out with your wedding ring woes, alas we are based in Edinburgh, Scotland.

The plumbing would have been free, but the plane ticket to fly one of our handyman team over would have cost a grand :)

Glad you found the ring though!
Thomas
Sunday, May 20, 2012 12:51:15 AM UTC
LOL! But I'll be in Scotland in a few months! ;) http://hanselman.com/scotland
Sunday, May 20, 2012 8:42:59 AM UTC
It gets interesting when the abstractions are faulty and leads you to an incorrect understanding. The book "The Design Of Everyday Things" talks about this quite a bit. If you haven't read it, you might enjoy it.
dave
Sunday, May 20, 2012 2:32:35 PM UTC
I like the example of the Judge Alsup. It seems to me that there are a lot of examples where it would be better if politicians (like Congress) and other public figures had a reasonable grasp of the basic ideas of technology, science, medicine, etc. The whole SOPA debacle is just one example of legislators not seeing the likely unintended consequences of their actions. With reach of software becoming greater and greater with no end in sight I am certainly interested as many people as possible having at least a clue about it.

It also occurs to me that that judge has a better better grasp of some of the basic abstraction in software than some of the geeks I work with. :)
Sunday, May 20, 2012 9:38:08 PM UTC
Don't learn to blog. But if you do, learn to blog like this guy. He sculpts with his words, and I can see them clearly. Like Orpheus would with his lute.

Keep it up man.
Sunday, May 20, 2012 10:44:38 PM UTC
S Bend Pipe - the curvey thing under the sink, a layer of abstraction with a name :)
Monday, May 21, 2012 8:31:50 AM UTC
Good one, i have seen people taking it for granted and do not care about exploring how "abstractions" really work. May be not everyone is passionate about coding and for them its just a profession which fetches good paychecks.
Tuesday, May 22, 2012 8:00:51 AM UTC
Okay, someone has to say it: Plumbing is a great example of a leaky abstraction.
Tuesday, May 22, 2012 10:03:59 AM UTC
http://en.wikipedia.org/wiki/Zen_and_the_Art_of_Motorcycle_Maintenance
Thummy Trouble
Wednesday, May 23, 2012 5:03:06 PM UTC
I believe there are certain things everyone should just know how to do in order to survive a normalcy bias moment, and there are several lists that attempt to define the things everyone should know, such as...

http://www.popularmechanics.com/home/skills/4281414
Thursday, May 24, 2012 1:27:52 AM UTC
Thank You for the post. I love to read interesting post that has knowledge to impart. I hope to read more articles from you and in return I will post also my articles in the forum so that others can benefit from it. Keep up the good work!
Thursday, May 24, 2012 6:48:49 AM UTC
Excellent outlook/attitude and content in this blog post. Thanks.
Saturday, May 26, 2012 4:18:36 AM UTC
understand the plumbing basics - in certain aspects of life :)
Monday, May 28, 2012 9:46:16 AM UTC
…remove a lawyer of abstraction
Monday, May 28, 2012 3:25:25 PM UTC
Thanks scott for sharing this. I particularly decided to be more handy around the house a couple of weeks ago; and actually went to get small tools like pliers,a tester and a screw driver ... this is kind of validating my moving in the RIGHT DIRECTION :)
Tuesday, May 29, 2012 5:23:14 PM UTC
I always say
'in programming what you know is not as important as what you can learn'
, you must be able to recognize what can be done with programming and from there you can learn how to do it. Just like plumbing, you know that water travels through pipes, if need be you can learn how to install them.
Wednesday, June 06, 2012 4:59:02 PM UTC
The very last comment of your talk was cut off. It was about putting JSON into a class. I would love to know how to put JSON into a class from a MVC Controller and download it and put it into a Knockout model.
Thursday, July 12, 2012 3:51:44 PM UTC
So, I'm a bit late on commenting this one.

Let's take the analogy of piping onto the internet.
Where , or rather how, does our IP packets leave our house or DSL/cable modem, or however we connect to the internet(via cables at least). ?

I think most of us programmers have a rather rudimentary understanding on what happening between a user clicking an URL, and that request showing up somewhere in a stack trace of our webapp across the world. We know there's DSL modem, ethernet routers and we can even discover all the IP routers with traceroute.

I'm talking about the lower layers here. I'm familiar with ethernet, and wireshark, and can certainly see what's happening at my end.

But what's happening inbetween ? How does the packet look like exiting my DSL modem and going down to the telco central office ? I'm fairly sure ethernet frames are not the lowest level here as it is on my LAN.
How does the telco backhaul the internet connection from the central office onto the internet ? Certainly not by cat-5e cables. Likely fibre.Or Old T1's ? And what's at the protocol stack below my IP packets here ? ATM ? Raw STM-1 ? A micowave link ?

Please. Make a show where you follow your IP packet path out of your house, into the great void.
Wednesday, October 03, 2012 8:40:28 AM UTC
IMHO Thinking, designing, solutioning something is way better than coding something.
Monday, November 19, 2012 1:04:54 PM UTC
"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."

Robert A. Heinlein
Andras Ludanyi
Monday, March 04, 2013 7:58:08 PM UTC
Excellent Article Scott, as much as theres a lot to learn in this world of ours, its still not a good enough excuse not to be curious( and stay ignorant) about how thing work especially if they pop up in your life a lot... I myself I'm battling the urge to ignore such things day in and out. Thanks for the reminder though... :-)
Monday, March 04, 2013 9:24:26 PM UTC
Scott,
Thank you for this post. I am going to send this to developers who just report an issue with 'Its not working' instead of 'It's not working and here's why'.
Meghana
Monday, March 04, 2013 9:52:32 PM UTC
Thank you Scott, you really challenged me.
Oyeyemi Adeyeri
Monday, March 04, 2013 10:09:47 PM UTC
I'm guessing that when you mix plumbing and coding you really need to lookout for leaky abstractions!
Andreas
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.