Piecing together tutorials
The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new thing under the sun. — Ecclesiastes 1:9
It’s okay to quote the bible — right? Anyway, I was struggling to write this blog because I felt like I hadn’t really created anything over the last few weeks. Wanting to write about some new tech, but finding nothing particularly novel about your project is a little depressing. In a moment of cynicism, I thought maybe there isn’t anything new. Everything now is just the relabeling or recycling of old stuff. I’m okay with that, really what I’m trying to do is combine things that already exist in the world to solve a specific problem.
It may be a bit reductive, but this project is really an interactive map, a survey app, a list app, a poll app (re-purposed as an interactive tutorial) and a blog. Each of those things have great tutorials out there, most of them are the introductory examples.
So maybe there isn’t anything new. But there is a lot here I didn’t know. I decided I could write a little about what I have learned about learning.
Tutorials are plentiful. There are businesses built around tutorials. Some are free, some are paid. Some are books, some are in embedded IDEs. I’ve put the list of tutorials that I used for this project down below. Here are some of my thoughts on using a combination of tutorials to build a project.
The “best” tutorials
The question I get asked a lot — not just about this but about a lot of python things — “What is the best tutorial for ….” It’s a tough question. There are a variety of things that make tutorials more or less useful, but best tends to be more about fit than content. Finding fit can be tough because like the python library, the tutorial library is quite large.
For me, better tutorials are:
- Short or broken into small pieces
- Specific/targeted to one particular goal
- Plenty of screen shots
- Discussion of rationale for decisions
Video based tutorials
What about video tutorials. They seem to be more and more common. I’m a little torn. It is useful to see the tools, to see the code and to see how things actually look on someone else’s system. It’s like pairs programming but where only one person is doing work (so like pairs programming). On the plus side, it is impossible to get lost as every step is recorded. On the negative side there are large stretches where you are just looking at an unchanging picture. Also, people tend to be a little more coherent and a little more concise when they write things down.
Tutorials that teach a concept
Some tutorials teach a technology. Some walk through a configuration. Others are teach a concept.
My first web tutorial was my favorite. Many have really liked and said a lot about Obey the Testing Goat. It’s a well structured tutorial with discrete sections and goals. There is even some humor in the mix.The tutorial online teaches the concepts of test driven development by working through the development of a simple to-do list application.
I picked this one to work on first because I wanted to learn how to develop an app the right way first. I was learning django and test driven development simultaneously. In retrospect that may note have been the best idea. After I finished the blog tutorial I came back to the list tutorial and I think it wasn’t until that 2nd look that I finally started to understand the concept.
My takeaway? Tutorials that teach a concept are great if you understand the technology they are using to teach that concept. I had to learn a little more django before I could focus on really learning test driven development.
Integrating into a single project
Bringing the tutorials together into one project has been a challenge. If I had a little more foresight, I could have picked tutorials that were a bit more compatible with each other. Or at least I would have altered my implementation beforehand.
For example, there are 3 different databases used in the collection of tutorials that I used. MySQL, Postgres and Sqllite. If I had done the GeoDjango tutorial first (or listened a little more to my mentor) I would have started with Postgres from the beginning instead of spending a couple days down the road converting the other apps to use the same Postgres database.
I’m grateful for all the awesome people that make tutorials. It’s easily one of python’s greatest strengths. I hope to contribute someday with a good tutorial of my own.
Some of the tutorials I worked though.