You know what the code needs to do, in that ugly moment. You can see it in your mind… And it’s just… NOT… doing 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 simple problem and twenty minutes later, your solution is finished and it works.
How Do I Know if My Practice Is Good?Without the right practice the computer does what you tell it to, not what you want it to.
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.
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.
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.
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 an expert 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.
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 around 30 years.
The code samples are in Ruby. If looking at Ruby makes you itch, the book may not be right for you. But 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.
Here’s the table of contents (scroll down as needed).
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 nearly none of the benefit.
I've written a lot of great information for you and tested it with my beta audience of hundreds of dedicated readers and programmers. You'll also get my personal email address. I read every message you send. Email me before your purchase and after it. I love hearing from readers.
I want more people to understand coding. I'll help you.
Still, I know many people don't want to interrupt me at my personal email address. And some day, I may not have enough time to talk to everybody. And so there is now a Slack workspace for buyers of Rebuilding Rails and Mastering Software Technique. Your purchase of Mastering Software Technique entitles you to lifetime membership in that community (assuming you uphold reasonable standards of behaviour.)
Most of it. The RubyConf talk is recorded. I've written many of the same thing in free blog posts. 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:
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's enough. 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.
Noah Gibbs (that's me) has spoken at conferences like RubyConf, RailsConf, RubyKaigi and many more. Noah spent years as a principal engineer, tech lead, architect and Ruby Fellow. His work on Ruby performance appeared regularly for years in Ruby Weekly. He has extensive teaching and mentoring experience over his thirty-year software career.
I'd love to sign you up for the first few chapters of Mastering Software Technique and an email class about how to practice coding effectively, all for free. If you like the sample chapters then please consider buying the full version later on.
Gumroad offers payment via credit cards and PayPal. If you aren't 100% satisfied then get a full refund with no questions asked within 60 days.
Want to get Mastering Software Technique reimbursed by your employer? Great! Gumroad offers invoices.
Contact me if you'd like a site license.
You're a software developer. Your time is expensive. If you don't live in the USA, Mastering Software Technique still only costs several hours of your salary — in the United States, the plain ebook may cost around fifteen minutes of what the business actually pays to keep you.
If MST makes you just two percent better at what you do in Rails and you stay with your current employer for just two more months, then the book has made a tidy profit for your employer. Each post-MST year you work there (say 50 weeks of work at 40 hours/week) with a two percent improvement saves 40 hours of debugging time to be used on more interesting work, or makes you 40 hours more effective writing new features. That's worth far more than the price of the book. By expensing Mastering Software Technique and reading it, you're doing your employer a huge favour.
To do them even more of a favour, you could pick up a site license (multiple book licenses) and share with your coworkers! I also teach workshops, both in person and online.