Category Archives: Teaching

11 Influential Web Developers You Should Be Following

“There is no such thing as a ‘self-made’ man. We are made up of thousands of others. Everyone who has ever done a kind deed for us, or spoken one word of encouragement to us, has entered into the make-up of our character and of our thoughts, as well as our success.”

- George Matthew Adams

One major lesson I have learned in my career and in life in general is that if you want to be successful, find others who are already being successful at doing what you want to do, and do what they do.

I thought I’d share in this post some of the web developers, (although I hate to classify anyone so narrowly), that I follow and that have inspired me or provided me with great resources or advice.

Brad Frost

brad frost thumb 11 Influential Web Developers You Should Be Following

This guy just recently schooled me on responsive web design.  Best part is he did it in a way that made me actually feel smarter and not like I was stupid.  Hard to find someone so brilliant with so much tact.

If you want to know about responsive design, listen to Brad Frost.  He is laying out the future of responsive design and blazing trails in every direction.

I haven’t ever had the chance to hear Brad speak myself, but I hear that he is an excellent speaker as well.  I definitely plan to try to attend one of his sessions in the future.

Brad makes extremely compelling and convincing arguments about the things he believes in and it is really hard to argue with someone who checks all their facts and knows what they are talking about.

Brad has put together an excellent resource called This Is Responsive that contains lots of great information about responsive design.

Website: http://bradfrostweb.com/

Twitter: @brad_frost

Christian Heilmann

chrisheilmann280 thumb 11 Influential Web Developers You Should Be Following

Christian is the Principal Developer Evangelist of the Mozilla Developer Network.  I have to tell you, I really like this guy.  I’ve only had a couple of conversations with him on Twitter, but he seems to genuinely care about making the web a better place.

He is extremely well spoken and has an awesome German accent—oh, and he also knows what he is talking about.  He’s written many articles and blogs posts for Ajaxain, Smashingmag, Yahoo, Mozilla, ScriptJunkie and others.  And his Twitter stream is legendary.  If you want to know what is going on in the web world, check out his stream.

Website: http://christianheilmann.com/

Twitter: @codepo8

Books on Amazon

Dan Wahlin

DanHeadShotBlog thumb 11 Influential Web Developers You Should Be Following

Dan is a very experienced web developer that has kept up with the changing tides in web development.  He is the founder and owner of The Wahlin Group where he provides consulting and training on web technologies.

Lately Dan has been producing a huge amount of great content about Angular.js, including his very popular AngularJS Magazine on Flipboard.

Dan also is a Pluralsight author and has some very popular courses. (His latest is jQuery Tips and Tricks and I highly recommend it.)

Website: http://weblogs.asp.net/dwahlin/

Twitter: @DanWahlin

Books on Amazon

Elijah Manor

6b5037440980edbea493871fc133381e thumb 11 Influential Web Developers You Should Be Following

When it comes to JavaScript, it is pretty difficult to find someone more knowledgeable than Elijah.  Elijah breathes JSON.

One of the main reasons I like Elijah though, is because of his ability to take complex, and sometimes boring topics, and make them interesting and simple.  For example, he did an excellent series which he called “The Angry Birds of JavaScript” which I found really entertaining as well as useful.

Elijah is a trainer, speaker and also a fellow Pluralsight author. (You should check out his latest course: Fixing Common JavaScript Bugs.)

Website: http://www.elijahmanor.com/

Twitter: @elijahmanor

Glenn Block

WP 000784 thumb 11 Influential Web Developers You Should Be Following

Glenn is another one of those developers who seems to have a contagious passion for development that you can’t help but catch.  Glenn is always doing something cool that I want to learn about.  He was involved in all kinds of cool things at Microsoft like Web API, Azure and MEF.

Glenn Block, until recently, had been a PM at Microsoft, working on—you’ll never guess it—that’s right, node.js.  How cool is that?  He was one of the main guys to bring node.js on Windows to Azure.  I like how Glenn is able to combine these two separate worlds and make them make sense.  I consider Glenn to be very pragmatic.

Glenn is now working for Splunk, and I am sure he’ll do amazing things there as well.

Oh, and I almost forgot.  Glenn actually combined C# with node.js and birthed scriptcs, a way to write C# code without compiling.  Pretty cool stuff.

Website: http://codebetter.com/glennblock/

Twitter: @gblock

Books on Amazon

John Papa

JPBW 150x150 thumb 11 Influential Web Developers You Should Be Following

John is an awesome developer and an awesome guy.  He used to be a technical evangelist for Microsoft on Silverlight and much of his training and guidance was on using Silverlight.

But, after Silverlight… died, John found a way to reinvent himself and now is highly respected as an expert on SPA or Single Page Applications.  He is an amazing and inspiring example of how a person can redirect their career and use their existing strengths and knowledge to go in a different direction when needed.

John also is one of the most talented technical speakers that I have ever heard.  He speaks at conferences all over the world and even used to host the Silverlight TV show on Channel 9.

He’ll be speaking at DevIntersection in October in Las Vegas and Visual Studio Live! in November in Orlando, so if you get a chance, I’d highly recommend attending one of his sessions.

I’ve had the opportunity to meet John in person at the Orlando Code Camp and even interviewed him on an episode of my Get Up and CODE podcast, and I can tell you he is a genuinely nice and kind person as well.

He also happens to be a fellow Pluralsight author. (Check out his latest course Essential Knockout and JavaScript Tips.)

Website: http://www.johnpapa.net/

Twitter: @John_Papa

Books On Amazon

Kelly Sommers

b81b99287e78b1cd6cbd0e5cbfb3295c thumb 11 Influential Web Developers You Should Be Following

I like Kelly because she is transparent and passionate about development.  It is rare to find anyone who is so excited about technology and learning.

Both her blog and Twitter stream are constantly filled with valuable information.  Some of the things she talks about and writes about make my brain hurt.  For example, she wanted to learn about how to write very high performance code, so what did she do?  Oh, just learned C and wrote her own HTTP server called Haywire.

Many developers are ok with surface level answers to questions, but not Kelly, she keeps digging and digging until she finds a real answer that makes sense.  If you want to learn how to learn, follow Kelly. (Plus, you have to love the name of her domain.)

Website: http://kellabyte.com/

Twitter: @kellabyte

Paul Irish

avatar150 thumb 11 Influential Web Developers You Should Be Following

Paul is a very, very busy man.  He is involved in many web technologies like Modernizr, Yeoman, and HTML5 Boilerplate.  He is currently a developer advocate for Google Chrome.

Paul has had a huge impact on the modern web and although his blog isn’t updated all that often lately, it contains a huge amount of in-depth information about browsers and browser technology.  I turn to Paul when I want to understand the deep questions of the web.

What I like about Paul is that sheet volume of code that he has written.  He doesn’t just talk about technologies, he makes technologies.

Website: http://www.paulirish.com/

Twitter: @paul_irish

Rob Eisenberg

Rob1 thumb 11 Influential Web Developers You Should Be Following

Rob is an expert at looking at patterns and building frameworks out of them.  Rob has developed a framework called Caliburn.Micro which makes WPF, Silverlight, WinRT and WP7 development much easier.  Along the same lines, he created another framework called Durandal which helps take the pain out of JavaScript web development.

Rob figures out ways to simplify complex things, which of course is something I really like.  He owns a consulting company called Blue Spire and he speaks at many events and writes articles regularly at devlicio.us.

Website: http://robeisenberg.com/

Twitter: @EisenbergEffect

Books on Amazon

Scott Hanselman

headshot2 thumb 11 Influential Web Developers You Should Be Following

I’m going to go out on a limb here and assume you’ve already heard of Scott Hanselman—it is hard to be involved in web development and not have heard of him.

Scott has this natural talent of cutting through the BS that is out there in the tech world and getting to the heart of the matter.  He posts many things about the web and web development that other people are afraid to say or ask.

Scott also is the host of 3, that’s right, 3 podcasts.  I’ve been listening to Hanselminutes for a long time and I’ve even had the honor of being on the show a few times.

He is also a very talented public speaker known for meticulously preparing every detail of his presentations and rehearsing them to a diamond-like polish.

One thing I really like about Scott is that he seems to reflect the interests of most software developers and technologists.  His posts on all kinds of technical topics interesting to developers, not just web development and programming.  Scott is diverse.

Website: http://www.hanselman.com/

Twitter: @shanselman

Books On Amazon

Troy Hunt

Photo thumb 11 Influential Web Developers You Should Be FollowingThere is only one word for Troy… scary.  This dude scares the hell out of me—routinely.  Just when you thought your website was secure, here comes Troy showing you why it’s not.

Troy is the person I trust more than anyone else to tell me what I need to know about security in today’s web world.  Sure, everyone knows about SQL injection and salting passwords, but Troy’s knowledge goes far, far beyond that.  Troy routinely finds big security vulnerabilities in production websites and posts about them.

If you are doing web development and you don’t want to get hacked, you better pay attention to what Troy says.  His tweets and blog posts are like the bitter pill that you need to swallow if you want to live.  Oh, and he is a pretty nice guy as well.

Also, a Pluralsight author with some excellent courses on security.

Website: http://www.troyhunt.com/

Twitter: @troyhunt

That’s my list, what is yours?

Obviously I can’t list every single influential person in web development that I rely on for advice and wisdom, but this is a pretty good list of some of the people I have found most helpful.

Getting good advice and mentorship is really important to advancing your career.  I’m actually putting together a package of all my advice on career development that I have learned over the years, in a product that I’ll be launching sometime next year.

The project itself is still a bit secret, but sign up here if you are interested and I’ll be sure to let you know the moment it becomes available.

What about you?  Who is your list of top resources for web development?  Leave a comment and let me know.  Also, if one of the developers I mentioned above has helped you, leave them some love in a comment.

After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

Wow, I can’t believe I have actually reached the milestone of authoring 40 Pluralsight courses

My first Pluralsight course, Introduction to Android Development, was released on April 12th, 2011.  That is just over two years ago.

And my latest course, which makes number 40, if you count my contribution to the Design Patterns course, is Using Glimpse With ASP.NET, MVC4, and Entity Framework, which was published on May 5th, 2013.

The total hours of video content I have published in the 2 years from my first to my latest course is around 122 hours.  That means you could watch my Pluralsight courses for about 5 days straight.

Fotolia 51250682 XS thumb After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

Thank you

But before I tell you about what I learned from this experience, I just want to take a moment to say thank you.

I couldn’t have done this by myself and I am very thankful to everyone that helped me reach this important milestone.

Fotolia 35206134 XS thumb After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?First of all, you viewers of my courses who have been so supportive and encouraging and have made it possible for me to make a living at doing this, thank you.

I have interacted with many of you over email and Twitter and I have gotten lots of positive feedback and encouragement as well as some constructive criticism which has greatly helped me to improve my courses and to feel like I am doing something that is meaningful and helpful to many people.

So, sincerely, from the bottom of my heart, I thank you faithful viewers for watching my courses and I commend you on being the kind of developer that cares about learning and improving their skills.

I also want to thank Pluralsight and all of the staff and management of Pluralsight.  When I say that the folks at Pluralsight are some of the best people I have ever had the opportunity to work with, it is no lie. I have never met a more friendly group of energetic people that really care about what they do than the management and staff of Pluralsight.

The biggest lesson from creating Pluralsight courses

You may be expecting that the biggest lesson I have learned during my super-speed course creation at Pluralsight is how to learn technologies quickly, and although I have certainly learned a great deal about doing that, the biggest lesson I have learned is that we can accomplish what we put our minds to if we are willing to not let anything stand in the way.

I don’t have any special skills or talents, besides my ability to say “Hi, this is John Sonmez from Pluralsight.”  I’m just a regular guy who works really hard and stays as focused as possible.

But, I didn’t always have the work ethic that I do today.

One thing that authoring Pluralsight courses has taught me is that when you see an opportunity, you must seize it and make the most of it.Fotolia 49321484 XS thumb After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

In order to do that, I had to drop many things in my life that I used to like to do, like watching TV or playing games, and focus on my opportunity.

And, yes, the opportunity to author courses at Pluralsight is an excellent opportunity, and I realize that not everyone has that opportunity.  But, we all have opportunities that sometimes are hard to see.  Opportunities that we need to seize and make the most of.

Many of these opportunities are once-in-a-lifetime, some of them come and go.  I’ve had opportunities in the past that I have let go, or I didn’t put my heart into, but with Pluralsight it was different.

I won’t bore you with the story of working a full time job for almost two years and doing Pluralsight courses every single night and weekend.  But, in order to seize this opportunity, I had to put in some hard work and be willing to make some sacrifices.

The reason why I mention this is because, if you are reading this post, you are probably the kind of programmer or IT professional who is already starting to seize an important opportunity to advance your career and skills.  I just want to encourage you that you can do whatever you want to do. You can be as successful as your willingness to work hard and believe in yourself will allow.

I hope that more than learning about a technology or development language from my courses, that I could teach you something much more valuable—the power of believing in yourself and not letting anyone put limitations on you.

Some other lessons

It is really difficult to summarize everything that I have learned over the past 2 years and 40 courses, because there is just so much, but here is a list of some of my biggest takeaways from this whole process.

  • Learning a technology effectively can be broken into 3 steps
    • Create something simple with it
    • Learn the breadth of the technology to understand what there is to know about it.
    • Determine the most important high level topics to learn and only go into details when necessary, you can always fill in the details later
  • Effective teaching is showing people something new in terms of what they already understand
  • Have a goal, make a plan to get to it, and don’t deviate from it until it is accomplished
  • If you fall off the horse get back on as soon as possible
  • Encouragement feels better than criticism, but criticism if much more valuable
  • Writing your thoughts out refines them and sands the jagged edges off of them
  • Redoing work is much harder than doing it right the first time
  • Nothing is the best.  No technology, no programming language, no way of doing things
  • No matter how much you know, everyone and everything has something to teach you, if you will only listen
  • It is very easy to type “HellWorld” and not notice until you’ve finished recording 30 minutes of video
  • The right caption can make any image funny
  • The key to efficiency a repeatable process
  • Videos with just slides are much hard than videos with demos
  • A good microphone adjusted properly makes a huge difference in audio quality
  • Quotas are proactive, metrics a reactive

Onward to 50

So what’s next on my agenda?  Hitting 50 courses of course. wlEmoticon smile After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

I’ve also been working with Iris Classon to produce a new podcast on programming and fitness called Get Up and CODE, because I am very passionate about fitness as well.logo300x300 After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

I’ll be working hard for the rest of this year to keep producing courses, since I still have a pretty big list of ideas, but after this year, I’ll probably be slowing down a bit, since I can’t keep up this ridiculous pace forever.

So thanks again for to everyone for all the support and encouragement, and to Pluralsight for this awesome opportunity.

My YouTube video for the week

Get Up and CODE

And here is the latest Get Up and CODE episode, where Iris and I interview John Papa about fitness.

play audio After Completing 40 Online Training Courses for Pluralsight, What Have I Learned?

Everyone Should Learn To Program, But Not Everyone Should Be A Programmer

The recent free courses from Pluralsight on teaching kids to program really got me thinking about this subject.

There seems to be a big backlash in development community against the idea that everyone should learn to program.

I’m not sure exactly where it is coming from, but I suspect it has something to do with egos and fear.

Even within the development community, there seems to be a distinction between “real programmers,” and “not real programmers,” based on language or technology choice.

programmer thumb Everyone Should Learn To Program, But Not Everyone Should Be A Programmer

I have to admit, I have been guilty of this type of thinking myself, because a very easy way to increase our own value is to decrease the value of others.

But what I have come to find is that not only is the distinction between “real programmers” and “not real programmers” a false dichotomy, but that the distinction between a programmer at all and a layperson, is also not quite as clear, or at least it shouldn’t be.

Not everyone should be a programmer

It’s true.  Just like not everyone should be an accountant, or not everyone should be a writer, but I think we can all agree, that everyone should understand basic math and be able to write.

Learning how to program and doing it professionally are two distinct things and they should not be lumped together.

It it pretty hard to imagine a working world where no one except writers could write.

Imagine wanting to send an email to your boss, but you don’t know how to write, so you have to ask the company writer to do it for you.

That is what the world would be like if we insisted that only writers needed to learn how to write.

But perhaps you think I am just being silly, I mean the need to write is so prevalent in everyday situations, but the need to program isn’t.

But I challenge you to consider if whether it is actually true that the need to write is much more prevalent than the need to program, or because everyone knows how to write, the need for writing is just recognized more.

Imagine if everyone you interacted with on a daily basis knew how to write code.  Imagine that, just like everyone has a word processor on their computer that they know how to use, there was an IDE that allowed them to write simple scripts.

Think about how that changes the world.

APIs everywhere!

The first thought that comes to my mind in that world is that there would be APIs everywhere.

Every single program would have an easily accessible, scriptable API, because every user of that program would want to be able to automate it.

In time, the way we viewed the world would completely change, because just like products today are designed with the thought that users of those products can write, products of that time period would be designed with the assumption that users of those programs can program.

Suddenly everything becomes accessible, everything interfaces with everything else.

Doctors build their own simple tools based around their specific process by combining general purpose software from their equipment.

There is a Pinterest full of code snippets instead of pictures.

Every device and piece of software you interact with has an API you can use to automate it.

The point is that we can’t conceive what the world would look like if programming was as prevalent as writing, but such a world can and should exist.

Computers and technology are such a large part of everyone’s lives that it is becoming more and more valuable to be able to utilize this so common element.

It starts with kids

We have to stop thinking programming is hard and realize that it is one of the easier things we can teach kids to do.

If a person can grasp and use a complex language, such as English, that person can learn how to program.

Programming is much more simple than any spoken or written language.

But, we have to stop erecting these artificial barriers that make programming computers seem more difficult than algebra.

Nokids computer thumb Everyone Should Learn To Program, But Not Everyone Should Be A Programmert only that, but we need to start integrating programming concepts into learning these other subjects.

Is there really much difference between an algebraic variable and a variable in a programming language?

Isn’t most mathematics solved by learning an algorithm already?  Why not at the same time, teach how to program that algorithm?  Not only would it make the subject much more interesting, but it would build a valuable skill as well.

We spend a great deal of time educating kids with knowledge they will never use—basically filling their minds with trivia.  But, how much more likely would they be to use the skills learning to program would give them?

What was hard yesterday is easy today

Calculus, geometry, probability, the structure of a living cell, electricity… What do they all have in common?

These concepts used to be advanced topics that only the most educated in society knew about or discussed, but now have become common knowledge that we teach children in school.  Ok, well maybe not calculus, but it should be.

Over  time, the concepts that only the brightest minds in a field could possibly understand are brought down to the masses and become common knowledge.

It is called “standing on the shoulders of giants,” and it is the only way our society advances as a whole.

Imagine if it was just as difficult for us to grasp the concepts we are taught in school as it was for the pioneers of that knowledge to obtain it… We wouldn’t ever advance as a whole.

But, fortunately, what is hard yesterday ends up being what is easy today.

The same will eventually happen with computer programming, the question is just how long do we need to wait?

It’s all about breaking down walls

I try to never say that something is hard, because the truth is that although there are some things in life that are hard, most things are easy if you have the right instruction.

It is natural for humans to want to think the knowledge or skills they have acquired is somehow special, so naturally we have a tendency to overemphasis the difficult in obtaining that knowledge or set of skills, but we’ve got to work through the fear of job security and egos and remove the veil of complexity from programming and make it simple.

The value we can bring by helping others to understand the knowledge we have is much greater than the value that using that knowledge alone provides.

If you like this post don’t forget to Follow @jsonmez or subscribe to my RSS feed.

The Myth of the Super Programmer

I received an email this past week that disturbed me.

Basically the author of the email inferred that most of the topics I talk about in my blog posts and Pluralsight videos are relatively easy topics, but that I had hypocritically suggested that interviews should be hard and should be designed for “real programmers” or super programmers.

Essentially the point of the email was that application developers are not “real programmers” and “real programmers” do hard stuff with difficult math.

Searching for the super programmer

super duper awesome programmer thumb The Myth of the Super Programmer

I don’t think this attitude or understanding about programming and software development is unique or irregular.  Even Scott Hanselman has called himself and thought of himself as a phony.

His post on the subject resonated with me, because I think the same thing about myself sometimes.

Sometimes, I wonder if I could really tackle the really hard problems.

I would venture to say that most software developers have some sort of belief that they are just a regular programmer, but there exists out there some super programmers who actually do the difficult algorithms that control caches on hard drives and index search results for Google.

Now, of course there are programmers writing code that does all kinds of complex things that you and I don’t understand, but how different are those programmers from the rest of us?

Is there really a difference between an enterprise application developer and a programmer who writes search algorithms for Google and firmware which controls the mechanical operation of the head of a hard drive as it reads data from the platter?

Before I give you my answer…

Let’s talk about problems for a minute.

What is the most difficult problem you have ever been asked to solve?

How did you go about solving it?

In the end, when you actually solved the problem, did the solution seem easy?

When you go back and look at the problem, does it seem much simpler now?

Lots of questions, I know—but I want you to really take the time to think about those questions before reading on.

It is important to understand the difference between perception and reality and many software developers, myself included often have trouble distinguishing between the two.

You see, our perception of a problem is often much different than the reality of that problem.  When we don’t understand a thing, it seems much much more complex than it is.  But, once we come to understand a problem, we see how simple it actually was to begin with.

Let me give you a real example.  Take a look at this mathematical equation below.

e1 thumb The Myth of the Super Programmer

Now there are two kinds of people who will look at this equation.

  1. Those who have a decent understanding of mid to advanced mathematics and immediately recognize it and understand it instantly.
  2. Those who have never seen these symbols used together and immediately think this is some kind of complex thing that would take them years to learn.

I may not be exactly correct, but my point is there is a clear division between those who understand and those who don’t.

I can very simply explain this set of symbols to you in terms you already understand.

Ready?

That equation is the same as this code:

var total = 0;
for(int i = n; i <= m; i++)
{
   total +=  f(i)
}

So what is my point?

My point is that there are very few actual hard problems in math, programming, heck life in general, and usually those few hard problems can be decomposed into smaller problems (sometimes more than once), until you end up with a simple problem.

The point of this blog, the point of my Pluralsight videos, the point of my life, basically, is taking complex things and making them simple.

If you want to succeed as a programmer, you have to learn how to do this for yourself, because this is the single most important skill you can possess.

So, to answer the original question—No, I don’t believe there are super programmers.  I don’t believe that there is a difference between an enterprise application developer and programmers working on problems that most other programmers would perceive as really hard problems or “real programming.”

Now, don’t get me wrong and think that I am saying that I don’t think some programmers are orders of magnitude better than others.  I would venture to say that really good programmers are about 10 to 20 times as effective as just average ones.

What I am saying though is that we have a tendency to forget how simple all problems really are when they are decomposed to smaller problems and that ALL problems can be decomposed in that way.

What I am saying is the thing that might be stopping you from growing to become a really good programmer is your own false belief that you can’t possibly understand something that you currently perceive to be complex.

What I am saying is that when you write what appears to you to be a simple enterprise application, you might be forgetting just how difficult and damn near impossible it seems to all your friends and family that know nothing about programming.

Still think I am wrong?

Fine, you are entitled to think so.

But I do have a challenge for you.  Surely you know a “super programmer.”  You might even be one.  If so, let’s hear from you or them.  Tell us that complex problem that is too difficult for the rest of us to possibly understand.

I don’t even mean that sarcastically at all.  Seriously, if you can prove me wrong, do so.  I’ve just never seen a problem that couldn’t be broken down into simple to understand components, yet.

Teaching is Simplifying

I’ve been doing quite a bit of teaching lately.

I really enjoy it, but it is not always easy.  Many people have asked me what I think makes someone effective at teaching and I have given it quite a bit of thought.

I don’t think there is one simple answer to this question, so I’ll try and approach it from one perspective – the way I view it.

Programmers teach the computer

If you are a programmer, you are already a good teacher.  You just may not know it yet.

When you are writing code you are basically teaching the computer different algorithms.  Of course the computer never really learns what you are trying to teach it, but the process of teaching to humans is very similar.

Think about the steps to write some code.  We usually have to start by fully understanding a problem or algorithm we are trying to solve.  We can’t teach the computer to solve the problem if we don’t understand it ourselves.

Then we have to take this big problem and break it down into bite-size chunks.  We take each chunk and we translate that chunk into the language the computer understands.

Teaching effectively to humans is very much the same process.

When I am preparing for a course I am doing, I spend a good deal of time first making sure that I have researched the topic and understand it well myself.

I may read a few books, play with some code, implement a project or whatever it takes to get a very good grasp of the subject matter.

After I feel like I have enough knowledge to talk about a subject, I spend some time breaking down that topic into smaller pieces that need to be understood or digested in order to understand the whole.

The final step is to take those bite-size chunks of knowledge and translate it into the language of the students or target audience. 

You always have to know who you are targeting when you are trying to teach something.  Sometimes you can target multiple audiences, but you have to know who you are trying to target so you can know what language to translate the subject matter into.

Translating to your audience

One method I frequently use to translate my message to an audience is the analogy.  I find that if you can take a thing that someone already understands well and map it to some concept you are trying to convey, you can accomplish the task with much less effort and a much higher chance of success.

As humans we tend to always relate new things to things we know.  It seems to be a built in process of how we learn.  Whenever I am teaching a subject and someone makes a statement like:

“Ah, I see so it’s just like this _______”

Then I know that they are grasping what I am trying to convey, because their mind is mapping the unfamiliar to the familiar.

I usually try to find an analogy that can map in some way to what I am trying to teach.  It doesn’t even have to be an exact match.

For an analogy to be effective, you just have to take some concept you are trying to convey and map it to one or more aspects of some other thing that is well known.

Analogies are kind of like Velcro.  The two velcro surfaces don’t have to match up exactly, but as long as there are enough “hooks” matched to the “fuzzies,” it’ll stick.

michael thumb Teaching is Simplifying

It is all about simplification

The most important thing when teaching is to take something that is complex and to simplify it down.  Part of that simplification process is breaking things down into bite-size chunks.  Part of it is to translate it into your audiences language.  Analogies can go a long way to help you accomplish both.

Ultimately though, you are just trying to take something that might be difficult to understand and make it into something that is easy to understand.  A large amount of what I do is repackaging.

I’m pretty good at reading technical books and sitting down with problems and working them out.  I enjoy that kind of thing.  Many people aren’t or prefer not to take the time to do it.

My job as a teacher is to take those forms of learning that are complicated (reading boring technical books, hunting through APIs, trial and error, etc.) and repackage them into something that is much more simple.

Often the real world has all the information out there that we want to know, but it is not packaged in a way that is easy for us to consume.

A good teacher can take a bunch of hard to peel fruits with pits and stems and skin them, chop them up and make a fruit salad you can eat with a fork.

By the way, I just got my Java Fundamentals course published on Pluralsight!  Check it out if you are interested in learning Java.

As always, you can subscribe to this RSS feed to follow my posts on Making the Complex Simple.  Feel free to check out ElegantCode.com where I post about the topic of writing elegant code about once a week.  Also, you can follow me on twitter here.