Why Scratch is the Ideal Development Environment
Tags: scratch, productivity, discuss
Published: 2019-07-01 19:29:03

I don't need to tell you that [Scratch](https://scratch.mit.edu/) is not a professional tool. Certainly, there are some [very impressive people](https://scratch.mit.edu/users/griffpatch/) creating [very impressive projects](https://scratch.mit.edu/projects/113321949/), but they are the exception, not the rule.

**Scratch is designed for children.** It isn't built to be powerful. It isn't designed to be fast. You can't pass around arrays or objects as data, and you can't create a function that returns a value. As a tool for real development, Scratch is worthless. **But Scratch gets one thing right: It makes programming intuitive.**

### You Know Your Options

In Scratch, every "block" — every feature and method available to you — is visible on-screen in a single scrolling panel:

![](https://thepracticaldev.s3.amazonaws.com/i/e7yd5ck9x6gukjj9smui.png)

You don't need documentation because everything you can possibly do is right there in front of you. And if you don't know what something does, you can *just try it*.

### Experimentation is Everything

**Want to run some code? Just click it.** It's that simple. If you have a block or two, you can click them and they will run. Always.

![](https://thepracticaldev.s3.amazonaws.com/i/c15p6qgqptehbs6qhsra.gif)

This means that **you don't need documentation, tutorials, or anything except a willingness to try.** If you find a block that looks like what you want to do, you can click it — even while your project is running — and see the result immediately.

### Military-Grade Hot Reloading

In Scratch, your project is a stage and you are the director. Code is merely a way of communicating with your actors (technically, "sprites"). You can, of course, give your actors a script ahead of time, but there's nothing stopping you from giving additional directions as the scene unfolds.

The Scratch interpreter is baked directly into the editor, which means that when you interact with your code you are manipulating the world directly. **You can change a script *while it's running*, and it will just work. That's magic.**

## The Result? Insight and Intuition.

When you combine these elements together, what you get is a very intuitive programming experience. It's underpowered, of course, but it's also *empowering*. By giving you as many tools as possible to see into your project and manipulate it, Scratch makes it easy to get a grasp on how code works. When you want to make something, you just start clicking bricks. You can see how they fit together in a way that feels tangible. Code is no longer a black box.

## I Want Scratch Back

I spent [a lot of time](https://scratch.mit.edu/users/PullJosh/projects/) with Scratch in my early years, but eventually moved on to bigger and better(?) things. There's a lot to love about the broader programming landscape, but I'm honestly not thrilled to have left behind the editing experience that was once so near and dear to my heart.

**But why are intuitive programming environments reserved for children?** Surely even the big kids could use a little extra assistance. The challenge of programming is understanding what's happening inside our little black boxes. But the more that we can [poke holes in the box](https://techcrunch.com/2019/06/03/goodbye-trash-can-hello-cheese-grater-apples-reinvented-mac-pro-will-shred-your-workflow/) — the more that we can give insights into how our code looks and feels from the inside — the better software we will be able to create.