Programming is normally taught in a very abstract way. Teachers and books all tell you the proper syntax of variables, loops, expressions, conditionals, etc. but without context. The examples in teaching code are very simplified but it’s often difficult for students to put that into practice.
The best way to learn to code is by building something that interests you. Your own self-interest then engages you as a motivating driver to keep learning how to implement the syntax of a programming language until it works in your own very special project.
A great motivator is doing something for yourself, creating something that you want to create. So, what is it you want to create? What do you really want to create? Coming up with ideas may be the hardest part. Invariably at first, you’ll come up with an idea that is too complex. But that’s okay. Really. One of the keys of coding is learning to break down complexity into small, logical steps.
I’m going to walk you through the process that I’m using to create a new web project. There’s nothing highly structured about this process. It’s just a loose series of steps I’ve adopted over the years.
In most cases, in the “real world” as a professional developer, your core concept comes from a client or the company for which you work. Or, you might have the privilege to create your own concept. That’s my case (and I realize that I’m very lucky). If you’re in my class or just following along, you should try to come up with your own concept. Think of a website that you really want to develop. Make it something that you really want to put out there for the world to see. That will give you motivation to invest the time and energy into learning what you need to do to make the site work.
For my current project, I wanted something that I could work on with my 9 year-old daughter Mila. This is the time of the coronavirus, and she’s home with me. It’s fun to do things together. What would she enjoy doing, and what would I also enjoy? That word: enjoy. Well, honestly, with all the sickness and death in the world due to the virus, I find it hard to use that word “enjoy”.
Mila knows about the coronavirus. She knows why her school has been canceled for the rest of the school year. She’s handling it well, and I’m trying not to shield her from the reality of what’s happening. At the same time, her mother and I want our daughter to feel safe. That comes with understanding what is happening. I have a very strong interest in public health. As a librarian, I have a professional of information management and scholarly literature. I tend to think of information products as things I want to spend my time producing. By information products, I broadly mean books, magazines, articles, documentaries, apps, and websites. I can’t help but view “knowledge” has an interconnection among all those formats of materials. Each form share many similarities. But, here, we’re talking about web programming. That leads me to the goal of developing an informative website about a specific topic in public health.
The coronavirus is a fast-moving target. And the science behind it might not fully engage my 9 year-old co-developer, who I know extremely well. In fact, I know that her greatest interest in the world are animals. She’s fascinated by animals and spends most of her spare time learning about all sorts of animals.
Narrow your core concept
I’m narrowing down my core concept down to the timely topic of public health during the coronavirus and animals. If you know a bit about the origins of the coronavirus covid-19, then you know it came from a bat. Those flying mammals carry a lot of viruses that occasionally are passed onto humans. Scientists have a term for diseases that are transmitted from animals to humans: zoonoses. (You may also see the singular spelling zoonosis, or the term zoonatic disases.)
I don’t really know much at all, yet, about zoonoses but it’s a fascinating topic that I want to learn more about. It involves animals and public health. And it’s an extremely important topic, particularly in today’s world. But also a topic that is under reported to the general public. I pose the concept to my daughter that I want her to help me develop a website about how diseases are transmitted from animals to humans. She likes the idea!
Focus: make the scope even smaller
We’ll focus initially on bats so that we can keep the scope manageable. Setting boundaries around your core concept is an important part of project management. You may have this grand vision of a site that is all encompassing. Maybe someday you’ll get there, but you can’t start out that way. As you go along, you’ll be narrowing the scope even further. You really want to aim at getting something completed and done in order to produce a great sense of accomplishment. Narrowing the scope of a project is an important part of maintaining motivation.
The next task for me is to get out a pen and paper. My mind works best in scribbling out quick notes of whatever pops into my head. Your brainstorming process may work differently. That’s okay.
Brainstorming is an important step in creativity. Find a process that works for you. If you’re working with a collaborator or in a team, find a process that works for everyone. That’s easier said than done, but it’s also a great skill to learn. You could build an entire career around being a great facilitator of team-based brainstorming.
Next: we’ll look at specific details that we’re thinking about implementing for our zoonotic bat-focused website.