Lessons Learned Writing Swift Foundations
November 10 2014, by Karl Oscar Weber,
A couple of months ago I started a pretty ambitious project, A programming book for Beginners: Swift Foundations. I also began working on a new podcast for this blog. Doing both at once was a bad move and my expectations for both projects were far below what they turned out to be.
I bit off more than I could chew. The Book ballooned from something simple to a directionless wreck. It was riddled with what looked like GOTO statements touching on every programming topic imaginable, I would add a chapter about almost anything. I had a full time job, A budding family, a Podcast to Spin up, and now a colossal book, Spreading myself so thin made everything suffer. It was an unfocused mess. I threw most of it out and started over.
I got distracted with this tiered pricing strategy with bonus content, videos, and sample apps. Eventually I remembered that I didn't want to write books, I wanted to make apps. I just want to write one simple book for beginners, not juice them for cash or become an independent author. Not that there is anything wrong with that, it's just not what I want to do. I want something Small, Focused, and Cheap.
Fewer Chapters made my book BETTER.
I Hit Reboot on my book by focusing on the essential concepts. I dropped the chapter count from 26 down to 6. I took a lesson from my own experience trying to learn to program PHP from a book. I learn best when I have a couple key concepts to practice before I move on to something new. This lesson was completely absent from Swift Foundations, I was teaching too much in a shallow manner It just wasn't a beginner friendly book.
Focus on the Basics
Focusing was the best thing I ever did. It was always supposed to be focused on the basics. Each Chapter teaches a couple core concepts in a relatable and comprehensive way. A quick explanation is given for concepts that aren't necessary to build the app. Core concepts, like the fact that data can be stored (which is earth shattering when you really think about it) are explained and demonstrated in various ways to ensure comprehension.
Show, Don't Tell.
Lots of examples are better than lots of explanation. A picture is worth a thousand words, but so is a block of code. The code to Text ratio in the book is about 60% text to 40% code, Just enough explanation to describe exactly what the code does. There are also examples of what not to do, incorrect syntax, or tricky situations to avoid. Warning signs are there. Enough Screenshots to paint a complete picture of what you'll build. Most of the chapters build a piece of the app step by step so that you won't get lost along the way.