Why Learning to Code is So Damn Hard

Erik Trautman of the Viking Code School Blog did an outstanding job explaining “Why Learning to Code is So Damn Hard“.  It’s a rather long read, but it’s easy to get, and it explains the different stages extremely well.

coding_is_hard_combined_chart

He looks both at the variability of confidence as one gets competence, the scarcity of resources for each stage, and the scope of knowledge.  Just to have it here for a quick reference, here are the stages:

  1. The Hand Holding Honeymoon is the joy-filled romp through highly polished resources teaching you things that seem tricky but are totally do-able with their intensive support. You will primarily learn basic syntax but feel great about your accomplishments.
  2. The Cliff of Confusion is the painful realization that it’s a lot harder when the hand-holding ends and it feels like you can’t actually do anything on your own yet. Your primary challenges are constant debugging and not quite knowing how to ask the right questions as you fight your way towards any kind of momentum.
  3. The Desert of Despair is the long and lonely journey through a pathless landscape where every new direction seems correct but you’re frequently going in circles and you’re starving for the resources to get you through it. Beware the “Mirages of Mania”, like sirens of the desert, which will lead you astray.
  4. The Upswing of Awesome is when you’ve finally found a path through the desert and pulled together an understanding of how to build applications. But your code is still siloed and brittle like a house of cards. You gain confidence because your sites appear to run, you’ve mastered a few useful patterns, and your friends think your interfaces are cool but you’re terrified to look under the hood and you ultimately don’t know how to get to “production ready” code. How do you bridge the gap to a real job?

I’ll also borrow the resource density chart, which is very handy:

coding_is_hard_resource_density

 

Not only the article explains why learning to code is so hard, but it also suggests how to make it easier, depending at which stage you are.

I think this is one of the best articles on professional development in software development that I’ve seen ever.  Do read the whole thing.  It’s that good!

SchemaSpy – Graphical Database Schema Metadata Browser

SchemaSpy – Graphical Database Schema Metadata Browser.  This is a tool written in Java that helps one to generate database schema documentation.  Have a look at some sample pages.  Those familiar with Graphviz will immediately realize that the tools is using dot for graphing tables and their relationships.  Those familiar with SugarCRM documentation will immediately notice that SchemaSpy is used for the API documentation.

Mail::RFC822::Address: regexp-based address validation

This is pure gold!  Check out the regular expression for an RFC822 email address validation. I’m not going to paste it here, being concerned that it will open the gates of hell or something, but here is a sneak preview of about the first third or so.

regex

Extending WordPress With Custom Content Types

Smashing Magazine’s take on “Extending WordPress With Custom Content Types” is one of the best I’ve seen around.  It is very complete – skipping only, from what I can tell, the REST API functionality of the custom post types.  It’s easy to read and follow.  It has both screenshots and code snippets.  And it is based on a real example.

wordpress-custom-post-type-menu-preview-opt

This article alone can answer a gadzillion of those “Can this be done in WordPress?” questions.

Random.org – true random number service

RANDOM.ORG offers true random numbers to anyone on the Internet. The randomness comes from atmospheric noise, which for many purposes is better than the pseudo-random number algorithms typically used in computer programs.