Without Software Technique,
Nothing Works

Figure at a keyboard, typing and learning
Without the right practice the computer does what you tell it to, not what you want it to.

You know what the code needs to do, in that ugly moment. You can see it in your mind… And it’s justNOTdoing it. You wrote a loop, and it’s wrong, and you know it’s wrong. You can explain the right code. You just can’t write the right code.

That blinking cursor is mocking you.

What doesn’t fix that problem? Learning more algorithms. Or reading more blog posts. Or more books. Even if you learn all the math and computer science, there’s a specific technique to writing code, and all the study in the world doesn’t give it to you.

What does? Practice.

The right kind of practice. Conscious, mindful practice done well.

When everything works, you can just write out the loop. It’s straightforward. You pick up a problem and twenty minutes later, you write a solution and it works.

When you’re really good, you can just predictably write the code. You don’t wait for inspiration. You just do it.

When a problem comes up at work and a prototype would show the right answer? You can just write one. Need to verify a design choice or test out a data architecture? Boom, do it.

How do you get that good? The right kind of practice.

What’s the right kind of practice? That’s what this book is about.

Already convinced? You can buy it on Gumroad. Full refund if you don’t like it.

Buy the Book on Gumroad

But I Already Do Coding Exercises…

Yeah, you do. Me too. And they require somebody to have worked them out in advance. But they really only work once for each exercise, so you constantly need new ones. And you can’t tell in advance if the one you’ve found is any good. You hope you’re getting Sandi Metz’s “99 Bottles of OOP,” but usually you’re getting the “Coding Challenge of the Week” to do some little math problem. There’s a reason 99 Bottles costs money - I can’t name a second set of exercises that good. Can you?

You need practice that you can just do right now without hoping Google will be your tutor.

Exercises are fine. But the magic happens when you stop doing somebody else’s exercise and you do the things you care about, that give you the skills you want. That’s the whole purpose.

But I Practice at Work…

Yeah, you do. I do too. And your coworkers argue constantly about what project to do, and what language or tool to use for it.

That’s because the kind of work the business wants is different from the kind of work that makes you better, faster. And the kind of work you need is different from the kind of work that other developers need.

If your job was going to give you the right practice, you’d have to win those arguments. You would have to get good at politics, to win those arguments, to get the kind of practice you need… And you’ll always worry that you’re doing worse work for the business because you’re prioritising your learning over their money.

I don’t want to spend my time at work winning at politics. Do you?

There’s a way around that.

Heck, if you tell your employer you’re buying this book to get better at coding, they will probably be thrilled to pay for it. Do you know how much it costs them when you get stuck for a couple of days? I sell a lot of books that employers cheerfully pay for. Businesses like it when their employees get better at coding.

But How Does a Book Do That?

I’ve written blog posts and spoken at RubyConf on this topic. The short version is that there are some excellent exercises I’ve adapted from non-computer disciplines. They’re not common for software yet, but they really should be - I hope in a few years they’ll be common.

The book introduces a type of programming exercise that doesn’t require another coder to set it up for you. I call my version a “Coding Study.” It can be used with any computer language or library you like. It works great alone or pairing. There are simple steps to start a coding exercise on any topic. I also give guidelines, examples and advice so you can learn even more rapidly.

Then you have to practice a lot. But you’ll learn faster than you could without coding studies. The book can only tell you how to practice.

Don’t buy the book if you’re not planning to do the exercises.

What If It Doesn’t Work? What If It’s Not Right for Me?

If you do the exercises and you don’t improve rapidly, you should ask for a full refund. I sell through Gumroad, which makes refunds quite easy, and I’m happy to do it. If you don’t improve, I don’t want your money.

If you can write basic code in a language of your choice, the book isn’t too advanced for you. It’s not likely to be too simple for you — I use this technique with great success and I’ve been a professional programmer for over 20 years.

The code samples are in Ruby. If looking at Ruby makes you itch, the book may not be right for you. The Ruby code is not particularly complicated.

I assume you want to get better at the skill of coding. This isn’t guaranteed to get you a job, teach you algorithm design or help you with interviewing. Those are different skills. Being better at coding may help your career — or it may not. I get better at coding because I love it, and I advance in my career even though sometimes I hate it. They’re different.

Can’t I Get The Same Thing From You For Free?

More or less, yeah. The RubyConf talk is recorded. Many explanatory blog posts are free. I always do that — you can get the complete code for my previous book on GitHub, even though the full book costs money. I give away a lot of free material, and it’s good. There are no deep secrets that I keep back only behind a paywall.

If you just want the magical secret from the book, it’s not hard to find. You can get a lot of it just by reading this page.

(If you just want the magical secret from the book, that means you’re not planning to do the exercises. If that’s true, don’t buy the book.)

What you get by paying money is this:

  • A lot about why to do everything - so you can mix and match, or fit it to your situation
  • Simple, step-by-step instructions and good examples
  • Everything in one place without having to click around and put it together for yourself
  • Save a bunch of time
  • Plans about how to build practice on practice into a coherent program
  • You paid, so you feel like you have to do the exercises - and the book doesn’t work unless you do them

None of this is magic. None of it is rocket science. All of it is convenience or commitment, which you could get by just doing more work or having more discipline. Because you’re here, you don’t think that has been enough so far. It isn’t enough for me personally - I pay for books and classes regularly so I can learn faster.

If you believe that paying for the book is robbery when you could just spend hours combing through blog posts (mine and others,) taking notes and collecting examples… You may not be interested in buying this book. Or most other books.

If you believe you should do all of that on work time, please keep in mind what your time costs your business. Four or five hours of your salary is usually far more than this book costs.

But What’s In the Book?

Here’s a current (March 2020) table of contents. This will expand as the book does. The book currently weighs in at 84 pages, but you should expect it to expand to more like 125 by the time it’s content-complete. That should be around June/July of 2020. There may be some additional time before final polish is done (e.g. editing and visual improvement.)

  • Is This the Right Book?
    • Why This Book?
    • Am I Advanced Enough for This Book? Or Too Advanced?
    • Who Am I?
    • Why Ruby?
    • “Coding”
  • Easy Pieces and Fast Examples
    • Tool, Task, and Purpose
    • The First Example
    • What was the Point?
    • Code Inspired by Observing the Real World
    • A Simple Coding Study: A Field of Mushrooms
    • But What is a Coding Study?
  • Another Example
    • The Merry-Go-Round
  • Anatomy of a Coding Study
    • Tools
    • Tasks
    • Purposes
    • Guidelines for Coding Studies
    • Pick Your Tools, Your Task and Your Purpose
    • Pick a Time Limit
    • When You’re Done, Throw It Away
    • Study One Idea at Once
    • Start Simple, Build in Layers
    • Actually Examine a Real-World Thing
    • Break Rules
  • Choose a Task and Purpose
    • Choosing a Task: “Meh, I Should Practice”
    • Choosing a Task: “That One Was Pretty Good”
    • Choosing a Task: “I Want to Learn This Tool”
    • Choosing a Task: “I Want to Improve as Fast as Possible”
    • Choosing a Purpose: “Who Do I Want to Be Like?”
    • Choosing a Purpose: “What Am I Avoiding?”
    • Choosing a Purpose: “What Weird Thing Might Work?”
    • Choosing a Purpose: Playful Simulation
  • Coding Studies from Life: Another Example
    • Looking Around the World
  • Pairing and Coding Studies
    • Pair on Defining the Study, Not Just Coding
    • Start “Flat-Footed”
    • Brainstorm Together Before Typing
    • One Person on the Keyboard at Once
    • Do Something Small, Then Swap Roles or Restart
    • It’s What You Think It Is
  • Useful Failure: An Example
    • First, Simplicity
  • Questions and Worries
    • How Big Must a Study Be?
    • Must I Throw Away the Result?
    • Why Are My Studies Taking So Long?
    • If I Always Throw Code Away, Won’t I Learn Bad Habits?
    • Do I Always Need to Change Anything?
    • Won’t I Learn the Most By Changing Everything?
    • What About Performance?
    • Why Study the Real World?
    • A Different Direction
    • Do I Have to Start a Company?
  • A Course of Study
    • Susan the Mentor
    • GeePaw Hill
    • Repeated Timeboxes
  • Learning from Artists
    • What is an Artist’s Life Study?
    • Why Do We Care? Complexity…
    • Your Brain is a Complexity Summariser
    • On Software and Art Education
    • About Your Worst Enemy: Being “Serious”
  • Acknowledgements

Can I Get Better Without Doing All Those Exercises?

If you’re not going to do the exercises, please don’t buy the book. It really doesn’t work without that step.

If you do a few of the exercises, you get a little of the benefit. If you do none of the exercises, you get none of the benefit.

What If I Don’t Learn Well From Books?

Understandable. There’s the RubyConf talk, of course. And I’m working on more hands-on videos.

If you really don’t like books, you could bring me in to give a workshop where you work, especially if you’re in the United Kingdom.

Not Sure?

That’s reasonable. You could also enter your email address below, and I’ll send you sample chapters and a free email class about software technique and practice.

Besides, what are the chances that I’ll make this book more expensive after launch? I would only do that if it helped a lot of people get better at coding and it was a serious competitive advantage. Because if that happened then employers would often pay for it, and I like to charge them more than random coders.

Sign Up for an Email Class and Free Chapters.
* indicates required

This book isn’t finished. Which means you get more of my time and attention with every comment or issue you have with it. It also means you’re getting a rare advantage. Most developers don’t do this — yet.

All updates are free, naturally. Full refund for any reason or no reason.

Buy the Book on Gumroad