I'm writing a book that teaches Swift to beginners. Unlike my previous attempts to write a book I have a co-author this time.
My Sister Danny said to me that one day she wants to do what I do. I make apps and websites, So naturally I was very excited. Teaching brings a whole new perspective to a subject. It's one thing to program, but another to teach programming to someone else. It's really difficult. I was excited at the opportunity of teaching her to program.
Danny started to learn to program about 2 months ago. I was teaching her the basics of Objective-C development, I had given her all the heavy programming books that I read through trying to understand Objective-C, I became a much stronger developer for it too. None of these books are written for a beginner's audience. Every book required some programming experience before, and no explanation about how anything actually works. Very abstract for a student completely new to programming. This always frustrated me when I was first learning to program.
When I was growing up my older brother was the one that had the computers. He bought the computers, used the computers, even administrated them. He was the Lord of the computers and I wasn't allowed to touch them. Which SUCKED. Imagine trying to learn to program from arcane texts of crazy math that all assumed you had some programming experience, when in fact you didn't even have a computer.
I understand the frustration. So now that Danny wanted my help to learn to program I decided to write the book I wish that I had when I started. Danny is writing this book with me, each chapter is a team effort, make now mistake. Swift is a brand new language and there are going to be bumps along the way.
How we work
I write most of the text, code examples, and tutorials, Danny reads, learns from, and edits the book. We track changes using Github. We use Github's issues to track bugs, and progress on the book using Milestones. We've set up a Raneto installation that is synced with Github to share the book as it's being written. Danny can read new chapters and leave feedback on Github for me to correct. We meet one to two times a week to go over new chapters and each issue in depth. We believe that having a beginner Read the book as we're writing will identify any problem areas in the text before we publish. Plus it gives us the opportunity to teach Danny completely, without leaving anything out.
The goal of the book is to have complete beginners pick up the book with a bit of determination, and to finish with the ability to write fully featured iOS apps.
It is a rewarding experience to see this come together so well. The opportunity to teach is awesome.
We plan on selling the book as a ebook with resources, videos, sample apps and code included. Nathan Barry has been very successful with this model. He's actually just released the second edition of his book Authority it's about building an audience through teaching. Our goal is to release our own apps together. The journey to finishing an app is paved with lots of tough problems that we will write about it. Danny doesn't have previous programming experience, this makes every new app we work on not just an opportunity to learn, but also to teach.
There is no other career that I can think of that has such an endless expectation of continual education. What we do is always changing, and it always will, and that is a blessing. There will always be something new to learn, or an existing skill to improve upon. It is so much fun. On the way we'll write books with our apps. We'll share as much as we can on our blogs. The generosity of the Web community is something that I've always wanted to participate in.