Developing your Dojo through breadth

Last week I talked about using depth as a way of developing your Dojo. Giving Ninjas a chance to grow their skills in a particular topic—like Scratch, HTML or JavaScript—as a way to continue to develop as coders. The alternative, which I’ll look at this week, is breadth. I want to be clear, though, that I don’t think this is a situation of either one or the other. I think that particular Dojos, and Ninjas, will need to employ one or the other at different stages in their development.

What do I mean by “breadth” in this context?

You can develop your Dojo through breadth by giving Ninjas the chance to experience a variety of different technical topics at a Dojo. From pausing to address design before diving into code, to sampling other programming languages or experimenting with hardware projects, breadth is about exposing Ninjas to a range of topics in the tech space, so they can find what they enjoy.

Why choose breadth?

There are several reasons to take a breadth-based approach at your Dojo, or with particular Ninjas:

  • Ninjas haven’t been very interested in the topics you’ve tried so far at your Dojo. Exploring other languages, tools and kinds of projects might find something more engaging for them.
  • Your Mentors presently lack the technical skills to address your current topics (or maybe any topic) in depth and would be more comfortable continuing at a beginner level in a new topic.
  • You want to help your Ninjas discover the topics they’re really passionate about, so you can later help them develop a deeper understanding and mastery of their favourites.
  • It can be an interesting way to review underlying computational concepts, like variables and loops, by seeing them recur in many different languages and scenarios. Boolean logic even shows up in electronic circuits!
  • Ninjas may not yet have the patience for the deferred reward of more advanced and complex projects.

What to watch out for?

If you do go down this route there are a few things you might want to watch for and take action if you spot them.

  • Ninjas getting bored: If you cover the basics of JavaScript, Python, Java and PHP, you’re going to see variables, loops and conditional statements four times in fairly similar ways. Some Ninjas may grasp these concepts in the first or second language and may not be interested in reviewing them. Using self-led content (like Sushi Cards!) can help here, as those Ninjas can skip over any explanations of concepts, straight to the details of how they’re coded in this particular language.
  • Ninjas finding their favourite and not wanting to move on: If a Ninja is loving a particular topic, ideally you should support them exploring that at a deeper level. However, you may find that your Mentors lack the skills to do so, or that your Dojo can’t split its focus on to too many topics. Options here vary depending on the Ninja. If the Ninja is able, Mentors could offer what help they can while the Ninja pursues self-directed learning. Otherwise, move on to a similar but different topic—maybe the same goals, achieved in another programming language. Pygame instead of Unity, for example.
  • There’s the potential to create confusion, if you cover too many similar topics too quickly. Many programming languages are close enough to confuse you, but not so close that code from one works in the other. It can be frustrating to realise that you’re writing Java code in JavaScript, for example!
  • Getting stuck at a shallow, exploratory level. While the beginner level material is great fun and provides a quick achievement, if you never move away from it then Ninjas will never develop as programmers. Ultimately, at some point, you will have to depart from breadth and choose depth on at least one subject.

Which content to use

We have a whole bunch of it! The Foundation’s Sushi Cards cover a variety of topics and, while they don’t all go to the Advanced level of depth, there are a bunch of them that you can look at for breadth! Also, while the selection below is all Sushi Cards, the resources section is full of community submitted projects, content and ideas to explore an even broader range of topics.

App Inventor

Learn to create mobile apps for Android with App Inventor.


A mini-computer for hardware hacking.


Learn the language I started with! Java is a very popular language and gives a good intro to formal programming concepts.


One of the most popular languages on the web, powering major sites like Facebook.


Learn one of the most readable programming languages around (and my personal favourite!).

Raspberry Pi

Get into hardware with the Raspberry Pi.


Learn a serious games development tool! Unity, which uses the C# language, has been used to create many professional games.


Make some awesome wearable electronics!


Also, don’t forget the Scratch, HTML/CSS and JavaScript Sushi Cards from last week’s post!


Leave a Reply

Your email address will not be published. Required fields are marked *