Posts

Let’s Change How We Think About Learning to Code

Before I ever had my first paid job as a programmer, I spent a lot of time contemplating what it means to get paid as a programmer. I was a hobbyist, teaching myself to code in grade school and high school.

When I became a freshman in college studying Computer Science, I began thinking about the future. I was being asked to commit to being a programmer for the rest of my life. I had no idea what it meant to work with programmers or even work as one on a team.

I’m sure anyone looking to dive into software will have the same questions.

  • How do I start learning to code?
  • What language should I use?
  • What kind of computer should I have?
  • What operating system do I need?
  • What books should I read?
  • Should I go to a bootcamp?

The trouble is that all these are surface level questions. You feel frustrated because every time you ask these questions, you don’t feel like the answers satisfy you. Someone can write a post telling you the differences between Ruby vs Python and yet at the end you still can’t make a decision between the two.

That’s because there is a laundry list of meta-questions you might not even be aware of yet. What you’re really trying to answer are questions like these:

  • Why do we have so many programming languages?
  • How do I know if I’m on the right path, using the right technologies, and working with the right people?
  • What is the difference between a bad programmer and a good one?
  • How can I tell if other people are good or bad programmers?
  • How will I know when I’m a good programmer?

These are just scratching the surface of the underlying questions you probably have.

You will have this intense feeling of discomfort for a while. You know there are lots of important questions you should be asking, but you don’t know what they are yet or how to articulate them.

This experience shouldn’t be unfamiliar to you. Remember in high school when they tried to prepare you for college? You took these career quizzes, teachers gave you advice, your parents pushed you in different directions. It was a huge decision to make and you didn’t even know where to begin.

It’s the same thing when you start programming. The fundamentals of computers have always been the same.

It is called a programming *language* for a reason.

The most obvious purpose of a programming language is to tell the computer to do what you want. I type some code, it reads it, and adds two numbers together and gives me the result just like I expected it to. Perfect.

The hidden purpose of a programming language is to talk with other human beings.

The hidden purpose of a programming language is to talk with other human beings. We have many natural languages like English, Spanish, German, Chinese, the list goes on. There are many ways we can communicate with other human beings. The same thing applies to programming and this is why we have so many different programming languages.

There are a thousand ways to explain an idea. The computer can understand all of them, but humans can’t. When you write code, you have to express your ideas in the clearest ways. Code that you wrote six months ago looks like gibberish because you think differently now. There is so much difference in human thinking due to learning, culture, and experience. That means that great code emphasizes human understanding first and computers second.

Great code emphasizes human understanding first and computers second.

There is a broad spectrum here and each programming language falls somewhere on it.

Some programming languages are designed more for computers than they are for humans. In fact, the most computer-focused programming language would actually be 1s and 0s. Something that, as humans, we wouldn’t even consider a language at all.

As you move up the chain, you can see things shift more towards humans.

Assembly is introduced to make the 1s and 0s more memorable for us.

C is designed to be an easier level than assembly but you still have to heavily think about how the internals of a computer works.

C++ begins to introduce some human concepts into the language so we can represent ideas better in code.

Java builds upon the ideas of C++ but abstracts away the internals of the computer as best it can. You don’t need to care about how things inside your computer like RAM is used as much.

Python takes another step towards humans and focuses on a syntax that’s more readable for humans but still has a lot of the structure inside it.

Ruby is focused on flexibility. They want your code to be like writing a story or a poem. Sure, you still have to worry about how the computer works somewhat, but even less so than Python.

Every programming language fits on this scale somewhere.

The trouble is that it’s hard to even understand what this means as a beginner programmer. If you don’t know how the computer works, then Assembly is going to sound scary. At the same time, if you only ever learn Python then you will feel something is missing because you’ve never learned how the internals of the computer actually work.

The trouble is that it’s hard to even understand what this means as a beginner programmer.

The internals of the computer are the building blocks of programming that you’re taught in college. The problem is that college is on one end of a spectrum that we didn’t realize existed until recently.

In a college computer science degree, you’re put in a world of heavy theory and concepts. There is little practical application of these ideas, but you dive deep into these topics. You learn about algorithms and data structures and how the electricity flows through the computer to make it work. Yet, you learn all this without seeing its value applied to problems that make money in the business world. At the end of the day it feels very disconnected.

Bootcamps tend to be the opposite end of the spectrum. You learn how to type code without ever learning how a computer works. The stuff you learn is built upon a fragile foundation because you’ve been quickly pushed through a system designed to get you a job after just three months (or less).

Until the recent rise of bootcamps and online learning, I don’t think it has been obvious this spectrum even existed in education. As you read this, 5 more bootcamps are getting started and 5 more colleges are committing to teaching old technology for another year (not really, but basically).

The value of programming and tech is becoming apparent to the entire world and it’s becoming cool.

The value of programming and tech is becoming apparent to the entire world and it’s becoming cool. Being a programmer used to be considered unattainable if you weren’t trained in it. With the rise of popularity in startups and the financial success of tech companies, learning programming and investing in technology is becoming the cool thing to do. The barrier to entry isn’t as high as it has been in the past and the average person is able to hop online and start learning Rails in 30 seconds.

The value of having skills in tech are becoming increasingly obvious as well. Being a programmer means you can work from home, remotely, and still take home a six figure salary. Print designers are looking to add web design to their skill set because they know they can advance their careers that way. Corporate managers are looking to start a startup because they feel like they would get more value out of it. The list goes on and on.

The important piece of all this is that these are all people without a technical background.

They come from careers where software was not a large part of their job. The need for learning software from a more human focused vantage point is clear.

It is likely that college will persist as the place to learn deeply technical things and bootcamps will be the place to dip your toes in the water.

There is a middle ground though that is largely unfulfilled — and what online education startups are beginning to address. A place where you can go to dip your toes in, but shows you that going deeper isn’t scary.

The reality is that everything about computers that exists today was created by humans. It’s all a product of our imaginations and hard work. We have the tools for anyone to learn it.

The path to becoming a programmer is simple. You start at a point on the spectrum where you feel most comfortable and you work your way towards the middle.

The path to becoming a programmer is simple. You start at a point on the spectrum where you feel most comfortable and you work your way towards the middle. The middle ground is a place where people are equally comfortable with people and computers. It’s the future we’ve dreamed about where most people are able to write their own software to solve their problems.

If you start on the deeply technical side of the spectrum, you’ll be best served by figuring out how to apply your technical skills to solve human problems. All the hard work and innovative software you create can be used by thousands of people to solve their problems in unique ways.

If you start on the human side, learning technical skills and programming will give you a tremendous advantage in solving those human problems you work on every day. Maybe that nagging issue you can’t seem to fix is solvable by writing your own tool to improve communication.

The important thing to realize is that there’s no one way to start and no one direction to go. If there were, everyone would be doing this and it would be easy. But you should keep trying because coding is one of the most valuable and creative things you could ever do. You can literally build things out of thin air that don’t exist yet.

And one day you’ll step back from the computer and realize you finally get it. There’s no feeling like it. As Neil Gaiman says, “Perfection is like chasing the horizon. Keep moving.”

How Online Communities Thrive: An Interview with Fizzle

What does it take to be a thriving online school with an engaged, active community? We’re not the only ones building online schools here at One Month, and we frequently reach out to our friends and neighbors to ask them what they’ve learned along the way, and how we can be doing better.

We sat down with our friends at Fizzle, because we love what they’re doing with online community building. (Confession: I’m a member of the Fizzle Community, as well as about a dozen other online schools. I’m sure you are, too).

Fizzle is an online education platform and community for independent entrepreneurs building businesses they believe in.

Tell us about the Fizzle journey: how did it get to where it is today?

Fizzle is the brainchild of Corbett Barr, Chase Reeves, and Caleb Wojcik.

Corbett and Caleb were previously running a site called ThinkTraffic.net, where they used Corbett’s startup and programming background to help online entrepreneurs understand how to build a successful business by growing their traffic and email lists.

Their original vision was “to teach people how to build fun, profitable and sustainable independent businesses, creating a community of smart ambitious micro-entrepreneurs.”

Corbett and Chase met at a conference over a shot of Fernet (yes really, over Fernet). Corbett hired Chase to redesign Think Traffic, and they worked so well together on the project that they talked starting a new company together.

Their original vision was “to teach people how to build fun, profitable and sustainable independent businesses, creating a community of smart ambitious micro-entrepreneurs.”

We’ve stayed true to that vision to this day.

What do you teach?

Everything we teach is centered on helping independent entrepreneurs make progress in their business week after week. Our ultimate goal is to build an end-to-end curriculum to help independent entrepreneurs at any stage and across many different business archetypes.

Specifically, our courses include things like Choosing a Topic (business idea), Defining Your Audience (target market), Email Marketing (build a list), Podcasting (beginning and advanced), and the Just Ship it Challenge (for building and launching products).

How are your classes shared? How do people learn with you?

People take classes through monthly membership at Fizzle.co. Our courses live in a library and students are guided through them by the small business roadmap. We created the roadmap to help link different resources together to help our customers reach a specific milestone, like launching a website, or earning their minimum viable income.

How our students share what they’re learning with each other is every bit as important as the courses.

We’re also big on community at Fizzle, so how our students share what they’re learning with each other is every bit as important as the courses.

How many members have you had in your community to date? How many active members do you work with each month?

We’ve had over 8,000 members to date and we work with more than 2,000 members every month.

Who is responsible for community management? How much time does it take, and what does it involve?

We think of community management in terms of “member success.” In 2014, we hired Barrett Brooks to be our first director of member success. He took on that role for a year and just recently passed it off to Steph Crowder, who joined the team from Groupon, where she was leading their sales training team.

We think of community management in terms of “member success.”

Steph wears a lot of hats around Fizzle, so the rest of the team helps balance the community management workload to give her a bit of a break.

It’s been said that people “come for the content, stay for the community” — what are your thoughts on this quote?

We’ve definitely seen this to be true. We’re big believers in “just in time learning,” which means our customers should only take courses when they need them to make the next breakthrough in their business or to learn a new skill that will help them make meaningful progress.

We’re big believers in “just in time learning,” which means our customers should only take courses when they need them to make the next breakthrough in their business or to learn a new skill that will help them make meaningful progress.

When you encourage your customers to avoid just in case learning, it means you have to have something else to keep them around in between courses. That’s where our community has been so crucial for our business model and so valuable for our customers.

The relationships our customers have formed with one another thanks to our community has been remarkable. Whether it’s using the forums to find a mastermind group, encouraging each other in their progress logs, or showing up to local meetups, our community has been invaluable.

Chase shared a story in one of his podcasts about reading through all of the comments and getting to know every person in the community when he was getting started. Can you share a bit about this story? What did you learn? Why is this so important?

To Chase, the purpose of design is to make something useful for a specific group (or groups) of people. Chase read every comment to get inside the heads of the audience for Think Traffic. He wanted to know what they were struggling with, what their dreams were, what they were saying in comments vs what they had actually accomplished in their own businesses and why they were coming to the site to begin with.

That process helped him decide what was most important on the site and led him to emphasize the resources that were most valuable to the reader while still keeping Corbett’s goals in mind.

He also made it look very pretty, which was a bonus.

Tell us a little bit about how people’s lives are transformed when they use Fizzle. What are people like when they first join your group, and what changes when they ‘grow up’ or ‘graduate’ from the community?

Our customers always say it better than we can, so here’s a quote from one of them:

“The content provided on Fizzle exactly fits where I’m at, and more importantly it fits who I am. I have developed more expertise in the past three weeks than I had in the previous 6 months. The confidence that comes from doing technical things myself, like setting up auto responders and adding a payment button, is empowering. Fizzle leaves out all the fluff. The tutorials cut to the chase (no pun intended… well… maybe a little bit). Your team boils down huge concepts into essential, practical, achievable steps without alienating the most important component: my driving passion to serve the way that only I can.

I have been introduced to inspired, passionate people through Fizzle: Chase, Corbett, and Caleb to start with, but also Leo Babauta, Chris Johnson, Scott Dinsmore, Seth Godin (indirectly), and more. As a result of those connections, my voice, and the accompanying message, is clearer and more confident than ever.

“While I find great value in what I learn on Fizzle, what makes it most valuable to me is how it creates an environment where I can learn from myself.”

While I find great value in what I learn on Fizzle, what makes it most valuable to me is how it creates an environment where I can learn from myself. Your team creates that learning space exceptionally well in regard to online business. I do that exceptionally well in regard to personal growth. My own story of personal transformation has inspired me to create that space for others to learn from themselves, and with the resources provided on Fizzle, I will succeed.”

This story is similar to so many we see in the way our customers develop through their learning and connection at Fizzle. Many entrepreneurs come to Fizzle a bit jaded by what they see across the web about “making money online” and overnight successes as compared to their firsthand experience. It’s our job to help them set more realistic expectations and then give them the support and education necessary to reach their goals.

The most common story we see is that of an entrepreneur who has just gotten started. She has launched her business, perhaps even built a product, but has not seen the kind of results she hoped for. She joins Fizzle to find out where she went wrong and to get support from like-minded entrepreneurs.

She joins a mastermind group, finds her place on the small business roadmap, and then starts to see small improvements. She interviews customers to understand their fears and dreams. She redesigns her website and rebuilds her product based on what she learns. She writes copy from a place of authenticity and trust.

Each week, we see another success story where another entrepreneur has just had her first month earning enough money to support her family. In that moment, it’s incredible to see the realization that this whole business thing really is possible. It just takes hard work and the right support system.

Each of these little changes adds up. And each week, we see another success story where another entrepreneur has just had her first month earning enough money to support her family. In that moment, it’s incredible to see the realization that this whole business thing really is possible. It just takes hard work and the right support system.

Technical marketers (us at One Month included) can get really geeky about churn. We’re always trying to figure out the best ratio for how many subscribers we lose in a month versus how many we have joining. There’s an idea about churn that says, “If churn isn’t in the single digits, that’s the only thing you should be focused on.” Do you agree? What do you think is a “healthy” level of turnover? How do you know when people are ready to leave your community?

We’re still exploring what healthy churn means for a business like Fizzle. More than shooting for someone else’s standard, we focus on getting better. We believe the better we make our product, the lower our churn will go. Whether we ever reach the holy grail of single digit churn is anyone’s guess.

We think we can provide value to entrepreneurs across their entrepreneurial life cycle — from business idea to sale or retirement. Over time that may mean different products or communities for different stages of entrepreneur, or it might mean building micro-communities inside of one larger Fizzle.

We’re not scared to say when we don’t have all the answers and the realm of healthy churn metrics is definitely an area where we don’t have all the answers. We think we can provide value to entrepreneurs across their entrepreneurial life cycle — from business idea to sale or retirement. Over time that may mean different products or communities for different stages of entrepreneur, or it might mean building micro-communities inside of one larger Fizzle. We’ll see.

Do you have any special celebrations or delightful surprises that you love giving to your community?

The more we can delight our customers, the better.

At World Domination Summit 2014, we made up a short-run shirt that we gave away to our customers and friends of Fizzle. Chase hand-lettered a beautiful “Heart and Hustle” slogan for the front and we added a little tagline of “Fizzle — Make Your Thing” on the back.

We’ve had people ask us on a weekly basis where they can get one of those shirts, but the point wasn’t to make a shirt that we could sell over and over. It was to make something our community would love and give it away so they didn’t have to worry about paying for it or having it shipped to them.

Any big no-no’s in community building? What would you never do, or what do you see people doing that ticks you off? (Like not being able to cancel or unsubscribe, etc).

We’re constantly taking the long-view on our business.

It sounds cliche, but we really do try to operate from a standpoint of, “What experience would I want to have?” If you can honestly use that as your north star in building a community, I think you’ll be ok.

The Case for Online Education

I have a prediction: Not only will online education eventually be as good as offline education, it will be better.

The honeymoon is over. People are writing about how online education will never replace offline education. I’d like to challenge that view: not only will online education eventually be as good as offline education, it will be better.

Saying that online education will never be as good as offline (because it’s not currently as good) is like taking one look at a Model T, saying that it’s unsafe, and urging everyone to switch back to horses.

The reason online classes will eventually be better than offline classes is simple:

We can measure and respond to students’ behavior much more easily and quickly when education is digital than when it is analog.

On the other hand, what makes for a good teacher in a classroom setting? A good teacher is someone who can:

  • Come up with compelling content that explains complicated topics
  • Take in a lot of information about how students are responding to that content
  • Adjust the style based on that information quickly

A good teacher can see the look in a student’s eyes and tell immediately whether a particular topic is resonating or not. He or she has the ability to reiterate a point and respond to questions in real time. That’s what we mean when we say that an in-person classroom experience is more “personal” — and it’s hard to imagine online education being able to match that anytime soon.

But let’s suspend disbelief for a second. In theory, a computer can take in vastly more information than a human can and respond to it much faster. According to Scientific American, two years ago the fastest computer could store almost ten time as much data as the human brain and process it almost four times as fast.

Imagine what a good teacher could do if he or she knew where exactly a student was getting confused during a lesson, how long it took that student to complete an exercise, or even the student’s physiological responses to the content (say, for example, by tracking heart-rate or eye movements via webcam — forget about the creepy-factor).

There are a handful of education startups already tracking some of this data, but they’ve barely scratched the surface of how to use it to make education more compelling.

This brings me to my second and more pressing point:

The biggest problem with in-person education is that it forces a linear, one-size-fits-all teaching style.

In any classroom, there will be some students that are behind and some that are ahead.

Even the best teacher in the world must deal with this tradeoff, which boils down to the following question: Should I slow down to help more students understand, or speed up to cover more material?

And so they inevitably end up settling on a pace and an educational approach somewhere in the middle.

Online education can solve this problem because it allows for personalized learning. Educational content and style can adapt to a particular student and that student’s response to a particular lesson.

Imagine a world in which no one person experiences the same class in the same way. One that adjusts a lesson on computer programming depending on whether a student already has previous experience with programming, or is a total beginner — why not use concepts a student may already have to allow them to learn something faster?

Or one in which the way the material is delivered is different depending on whether the student is an auditory, a visual, or a kinesthetic learner.

Or one in which the order of the lessons themselves are rearranged. (Or A/B tested!)

Or one that can identify early that a student might get stuck in an upcoming lesson and takes him or her on a learning detour to reinforce important concepts and avoid frustration that might otherwise lead to abandonment.

Actually, you don’t have to imagine this world, because Salman Khan is already doing it with Khan Academy (watch 13:35 if you’re not yet sold on the value of personalized education).

Finally, advancements in online education allow teachers to treat classes in the same way that startups treat products.

There are tons of amazing tools out there for A/B testing, onboarding, gamification, email campaigns, measuring user satisfaction, and so much more that startups use. Why not apply the same tools to education? It’s going to happen, it’s only a matter of time.

That’s why it’s frustrating to hear people brush off online education as a failure that will never amount to anything. Let’s see the current batch of online educational classes and platforms as what they really are: a first attempt.

(This post was originally posted on the One Month Rails blog)