Posts

Why a Growth Mindset is Essential for Learning

Have you ever heard anyone say “I can’t draw,” or “I’m not good at sports,” or “I could never do that?”

I used to think I’d never be able to draw. The way I understood the world was that there were artists, and then there were other people.

I was one of those other people. I had my own areas of creativity, but drawing wasn’t one of them. And yet somehow I stumbled into architecture and design school at the age of 21, trying to learn how to draw.

“Genius (or talent) is not enough; we need to get the job done.” — Carol Dweck

Even my graduate school teacher stood behind my desk and shook her head and told me that I wasn’t talented. (In retrospect, that wasn’t a very good example of teaching.) For years, I carried around a belief about my skill meant, in my mind, I’d never be able to do it.

Unfortunately, this is a mindset, and it’s one that we are all taught — but it’s incorrect. We can all learn, and part of this learning is about adopting a new mindset about how we learn at all.

How identifying and adapting your own mindset can help you learn

Interestingly, as children we’ll spend hours and hours learning how to do new things — from learning how to speak, crawl, walk, and go to the bathroom — but as adults, we think that our ability to learn is no longer part of our repertoire.

According to researcher Carol Dweck, the attitude and belief that you can’t learn something is part of a mindset, and it’s something that we can change. When it comes to our mindset, people fall into one of two predictable patterns: they learn to adopt either a growth mindset or a fixed mindset. The good news? These basic beliefs are learned, and we can changed them.

A lot of people seem to carry around fixed beliefs about what they can and cannot do.

Growth mindsets vs fixed mindsets

In a fixed mindset, you come to believe that your skills, traits, and talents are fixed. What you know is unchanging, and therefore, you can’t possibly learn anything new. While this seems extreme at first, you can hear it crop up in conversations when people say things like “I’m a terrible singer,” or “I can’t dance,” or “I’m not a good athlete.” All of these are an example of a fixed mindset.

The misfortune here is that people haven’t taken the time to practice — to work through and puzzle over something until they have acquired a new skill. And thus, they dismiss their ability and say that they simply “can’t” do something.

A growth mindset, however, believes that challenges and learning are opportunities, and that failure is an opportunity for growth. Rather than seeking out evidence that proves we’re not smart, people with a growth mindset focus on process and progress, searching out opportunities to stretch their existing abilities.

This belief that intelligence and personality can be developed has profound consequences on our behavior as adults. “Believing that your qualities are carved in stone (the fixed mindset) creates an urgency to prove yourself over and over.” People will avoid difficult situations, refuse to challenge themselves, and effectively evaluate every situation to see if it will make them look smart or dumb, whether they will success or fail.

In contrast, the growth mindset believes that “the hand you’re dealt is just the starting point for development,” and “that your basic qualities are things you can cultivate through your efforts.” The growth mindset embodies a passion for learning (rather than a hunger for approval).

The growth mindset embodies a passion for learning rather than a hunger for approval.

Why prizing natural ability is bad for learning

When we prize “natural ability” or “talent” over learned ability, describes Dweck, we undermine the process of learning. When we expect ourselves to “just know it” and to be perfect from the first time we start anything, we end up creating a framework that scares us from trying anything new:

‘Mindsets frame the running account that’s taking place in people’s heads. They guide the whole interpretation process. The fixed mindset creates an internal monologue that is focused on judging: ‘This means I’m a loser.’ ‘This means I’m a better person than they are’ ‘This means I’m a bad husband.’ ‘This means my partner is selfish.’”

The reality, however, is that learning is a constant experience of expansion, difficulty, repetition, and mastery. When an toddler first learns to walk, we don’t yell at them for being incompetent with their first 100 or 1,000 tries. They fall down, they get back up. Nothing stops them for very long from eventually wobbling about on two legs.

Yet as we get older, we start to expect ourselves to naturally know how to do something. As a culture, we prize natural endowment over earned ability.

“As much as our culture talks about individual effort and self improvement, deep down, we revere the naturals.”

How many opportunities for learning are we losing if we place our admiration on youth and natural ability?

Growth mindsets prioritize learning:

People with a growth mindset learn that:

  • Trying and failing is part of the process
  • Learning requires stumbling, correcting, and growing
  • You don’t have to know everything in advance
  • Practice and skill-building are more important than embedded talent
  • You’re always a beginner
  • Life is about life-long learning

Three ways a growth mindset shows up in learning:

Once you know the difference between a growth mindset and a fixed mindset, you can start to notice how it shows up in your everyday habits and in your learning. Here are three ways that a growth mindset stands out:

#1: “Those with a growth mindset found success in doing their best, in learning, and improving.”

People with a growth mindset derive just as much happiness from the process as the results. They look for challenges and opportunities to engage with material, rather than deriving all of their satisfaction from mastery. Rather than focus exclusively on the outcome or the goal, they focus equally on the process.

Rather than desiring a finished book, written and perfected, they are motivated by the process of showing up every day to write and edit. Master athletic champions will continue to find ways to improve their personal best rather than sitting on the bench and buffing their nails.

#2: “Those with a growth mindset found setbacks motivating. They’re informative. They’re a wake-up call.”

“In the fixed mindset, setbacks label you,” explains Dweck. “You’re terrified of losing and performing badly, because to you, you are your performance. When you perform badly, you’re devastated, because you, by association, are now no longer valuable or special.”

Whereas a fixed mindset affixes their identity to the outcome, a growth mindset knows that their performance is not the only indicator of who they are. “Wow, that performance wasn’t as good,” the growth mindset might say. “I wonder what I could do differently to get a different outcome? How can I change and grow here to improve my game?”

#3 “People with the growth mindset in sports (as in pre-med chemistry) took charge of the processes that bring success — and that maintain it.

When you believe you are fixed, “you are not a work in process, you’re a finished product,” Dweck says. When you believe that you already have all of the ability you’ll ever have, there’s little reason to invest in processes that will help you grow your skills — that wouldn’t matter. “In the fixed mindset, you don’t take control of your abilities and your motivation.”

In contrast, the growth mindset knows that we are each responsible for our own learning and growth, and are therefore responsible for setting up systems for continuing our own learning. If we want to become a doctor, we’ll set out to learn everything about pre-med chemistry. If there are particular areas that are challenging or cause struggle, we’ll ask for extra help and spend more time on the puzzles until we figure out a way to do it.

Some of the best hip-hop dancers, for example, don’t just naturally begin with their talent. (And talent is a tricky word and often not a helpful word.) While talent might be what you begin with, where you end up depends on your desire to learn, practice, and improve. Many of my favorite performers have spent hundreds of thousands of hours practicing, falling, tripping, and stumbling over routines until they mastered their moves.

How to adopt the growth mindset in your own life:

  • Reward yourself for the process of working and learning, not the outcome…. such as working on challenging problems. Say to yourself “That was great — I really pushed myself and struggled with that for a while,” not “I’m such an idiot for not knowing this.”
  • When you successfully complete something, try out phrases that reward your ability to learn and grow, not your inherent success.
  • Search for and look for things that challenge you, and find ways to enjoy the challenge.
  • Don’t attribute your success or failure to inherent skills; instead, notice the hard work and effort involved in both.
  • Record the entire process (struggle and all) and begin to link the struggle with the adventure of learning.

Learn how to learn by training your own growth mindset:

Luckily, the growth mindset can be learned, says Dweck. People with the growth mindset are constantly trying to improve. “They surround themselves with the most able people they can find, they look squarely at their own mistakes and deficiencies, and they ask frankly what skills they and the company will need in the future.”

As for me, back in graduate school, I was surrounded by people who were drawing every day, and I had to complete drawing assignments every day for several semesters. Over time, the gap between my skill and my taste began to close, and my drawings improved, bit by bit. (For the first year and a half, I thought I wouldn’t actually be able to master the skills to further my design career.)

Then, about a year and a half in, I pinned a drawing up to the wall — a graphite still-life sketch. The teacher paused and said, “This one is not so bad — in fact, it has great linework in here, and we can work on the perspective over here…”

Today, a decade later, I still smile when people watch me draw and they tell me that I’m a natural. I think about the years it took for me to overcome my own beliefs and push my abilities, and how now I believe that anyone can learn anything. When people cough and say “I can’t draw,” I know for certain that yes, they too can learn to draw.

It might not be easy.

But everyone can learn.

How Bloomberg Exec Susan Kish Learned To Code

It was a normal Tuesday.

Susan Kish was sitting on the 29th floor of her building, looking over Manhattan, when she got mad. She was in a meeting with young man named Mattan Griffel (before he founded the company now called One Month), and they were talking about his experience in teaching himself how to code. He was building a class to teach other young entrepreneurs how to code, and something snapped.

“Why is it that everyone assumes young people are the only ones who want to learn to code?” she asked.

Kish is the Head of Cross Platform Initiatives at Bloomberg LP, and she manages a strategic portfolio of projects across new products, sales, finance, and media. Yet she found that she wasn’t able to have strategic conversations with the technology teams in terms of media and project scheduling. So, she challenged Mattan, our CEO, to teach her how to code.

“If you can teach me, you can teach anyone,” she explained in her 2013 TED main stage talk.

The last time she coded, however, it was in BASIC: with little green tapes, hand-held, when she was a young child. “I am the definition of a digital immigrant. I am also a mother, a super-commuter, a former banker, and an executive,” she said, “and my schedule does not allow me to sign up for biweekly classes downtown.”

So what did it take to get this busy executive to learn code?

She signed up for lessons with Mattan online, once a week. She said it was frustrating, at times — she threw her hands up in the air, sometimes stalled for a week or two.

After a few months, however, she started to get the hang of it. She learned that “coding” means having the command of at least 5 languages, no easy task. It also requires a problem-solving mentality, a keen sense of aesthetic, and a sharp eye for grammar and punctuation.

Taking coding classes improved her mental clarity, her ability to focus, and reminded her of just how precise and dedicated her technology teams are when designing new prototypes and building out projects.

She found that learning to code and the act of coding itself delivered an extreme joy of accomplishment. Coding is the future, and not learning to code was akin to taking a huge professional risk: “In the professional world of tomorrow,” she said, “you have to know two things: you have to know the basics of business, and the basics of coding. Without both, you are taking an enormous risk. And if you start with the technology side, you have a tremendous advantage.”

Learning to code helped her reboot her computer, it lets her understand the jokes and allusions in team work sessions, and she can walk into meetings with other senior execs and speak knowledgeably about timelines, costs, and prices. Knowing technology is a tremendous advantage in the business world of tomorrow, she says.

Learn the language of technology and build a better business.

We all need to learn to code. Watch her TED Talk here.

What is Javascript?

Key Takeaways

JavaScript is a programming language. It’s one of the three front-end languages. JavaScript is responsible for the “behavior” of your Website. It’s how HTML elements and CSS style animate and move around on the page.

There are many popular JavaScript frameworks (i.e., free code to help you succeed). Some of the popular JavaScript frameworks include: jQuery, AngularJS, Backbone.js, and Handlebars.

Your Assignment

Additional Resources to Keep You Learning

What is iOS Development?

Key Takeaways

  • Swift is the language used to make apps for iPhone, iPad, and Mac OSX (desktop) apps.
  • Why Swift? Well, You don’t really have a choice. Apple decided that part for you. The rule is: if you want to make an iPhone app, and get it into the Apple Store, then you’re going to have to develop it using Apple’s Swift programming language.
  • Before you start learning Swift, ask yourself: do you really need your project to be an iPhone app? If not, a prototyping tool might be the quickest way for you to develop a Minimum Viable Product. My first choice for iPhone prototyping would be Keynotopia, but also there are some great questions to check out over at Quora.

What is iOS? How to Learn Get Started Today

  1. Read Swift vs. Objective-C (5 minutes)
  2. Download Xcode from Apple’s App Store. Note: you’ll need an Apple computer to develop iOS apps. Windows won’t work (20 minutes).
  3. Browse the additional resources below, and choose the one that’s best for your next step!

Additional Resources to Keep You Learning

  1. “The Swift Programming Language” (iBook): published by Apple
  2. “Start Developing iOS Apps Today” (website): some programming experience will be helpful to understand these two resources.
  3. One Month YouTube tutorials for iOS

What is WordPress?

Key Takeaways

WordPress makes it easy to create websites.

How easy? That depends on your skill level.

  • At its core, WordPress is really just an easy way for you to make updates to your website. You can update text and images, and create new pages without touching a line of code.
  • WordPress is actually two things: WordPress.com and WordPress.org.
  • WordPress.com is for non-developers. It’s where you go to launch a cat blog or a portfolio site. You can’t do much customization over there.
  • WordPress.org is for developers. With WordPress.org, you’ll get complete customization over your site. WordPress.com is currently being used by CNN, Time, TED, and millions of other people.

Your Assignment

Decide if you want to learn WordPress.com or WordPress.org. Spend 10 minutes browsing the two sites to learn more.

If you want to learn WordPress.com, start your first site for free today by registering at WordPress.com. If you’d like to learn WordPress.org, check out the resources below.

Additional Resources to Learn WordPress Today

Digging Into WordPress is a great book for getting started with WordPress.org

WordPress Step-by-Step is a free guide for building your first WordPress.com theme. Just click on the titles to get started with each lesson. Chris Castiglione made this (that’s me).

And now we have added a great WordPress course to our library of offerings. Learn how to build your own WordPress themes. Sign up today! 

What is Web Development?

Key Takeaways

The four most important roles for building a website are:

  1. User Experience (UX)
  2. Information Architecture (IA)
  3. Visual Design
  4. Development

To clarify this… they’re not “people,” they are roles.

If you’re at a small startup, you may have to be all four of these roles. At a larger company, each of these roles might be covered by a group of people.

Question:

Are you missing one of these four roles on your project? If so, leave a comment down below with a description of your team and what you’re working on. Ask any questions you might have, and I’ll try to get back to you ASAP!

Keep Learning!

What People Really Mean When They Say “I Want To Learn How To Code”

There are two important things to know about coding education:

  1. Most people don’t actually want to learn to code
  2. Learning to code doesn’t mean one thing anymore

It’s important to know these two things because otherwise the way we teach people about coding is wrong, and people won’t learn.

The first point I’ve seen over and over again. People who tell me they’re going to learn how to code, then they start learning, and they think it’s boring as hell.

I call it the coding fallacy. People think they want to learn to code but what they really want to do is build a product.

When we think about it, this should be fairly obvious. Knowledge of code in and of itself is not valuable if you can’t do anything with it. So for most people the biggest motivation for learning to code is building something (although a close second is getting a higher paying job).

That brings me to point number two. Learning to code doesn’t mean the same thing anymore.

It used to be that in order to code you had to know almost everything about computers (hence the term “Computer Science”). Then things were abstracted to the point where you didn’t really have to dive into certain topics unless you really needed to. For example, as a web application developer at this point I need to know very little about system administration because it’s mostly done for me by tools like Heroku and Amazon Web Services.

So when people say they want to learn how to code, most teachers start where they assume they should (where they always have), with data types, the various structures of a language, and help students develop a deeper understanding of computers.

The problem is that’s not what people want. They want to build something. And we should no longer take for granted that in order to build something you have to learn everything about computers or even coding in general.

For example, if someone is already working with a great back-end developer, it would make sense to just teach them the front-end, because that’s going to be the most useful thing for them. They will actually get what they want done faster, and they will be able to learn the back-end at a later point in time. By doing so we reduce the cognitive load on the student and enable him or her to learn faster.

There’s so much that could possibly be taught about coding that we need to start identifying at least semi-complete subsets that someone could learn. At the very least I want to pose the following important distinction I’ve learned:

  1. Web development
  2. Non-web development

When you’re developing for the web you specifically have to deal with:

  • HTML
  •  CSS
  •  Routing
  • Databases
  • Hosting/DNS
  • Application structure

There’s a lot here to learn. And most of it is pretty irrelevant to non-web development (except databases and application structure obviously).

The way I see it, most coding education involves a bait and switch. It goes like this:

Student: “I want to learn how to code.” (But what they really — but don’t know enough to ask — is I want to build a web or mobile application.)

Teacher: “Okay let’s start with data types.”

Student: “…”

(2 weeks later)

Teacher: “Now we can design efficient algorithms.”

Student: “But I just wanted to make a cool-looking website!”

As teachers, we need to recognize that when people say they want to learn how to code, they often really mean that they want to build a web or mobile application.

That’s because to them, that’s what coding IS. It’s all they’ve ever been exposed to about coding. The problem is that they don’t know how to ask for it! So we shouldn’t just be taking everything they say at face value. It’s our job as educators to read between the lines.

I remember watching a play a few years ago in which a priest says that you have to tell the truth even in difficult circumstances. The person he’s talking to asks: “but what if someone asks you a question and you know the truth will hurt them?” The priest responds: “When someone asks you a question, answer the question they are REALLY asking.”

In education as well, you have to read between the lines to figure out what people really want. If they’re asking some specific thing, you have to guide the person towards what’s going to lead them towards their ideal learning experience.

So it’s up to us as educators and as experts to guide people in the right direction and not just let them flounder. If we can do this, then we can empower a lot more people to do amazing things.

As a student: learn what you want to learn.

One of the best things you can do in your own learning adventures is learn a little bit about a lot of things — so you know what you want to dive deeper into later. Here at One Month, we’re launching a Learning Library in the new year, a free resource of videos, essays, and information on topics related to coding, design, and entrepreneurship. It is your first 1 minute, 1 day and 1 week of content for any subject.

Some People Say Ruby Is Too Complex for Beginners…

Is Ruby the right programming language for beginners?

One of the biggest criticisms I hear lobbed against learning Ruby as a beginner language is that Ruby has so many different ways of doing things. People say that these different ways of doing the same thing makes it hard for beginners to learn.

To be specific, here’s one example of this argument that I read on reddit recently in response to my earlier post, Why Beginners Should Learn Ruby on Rails:

“Ruby almost always has 100 ways of doing any problem, and frequently the user-submitted examples on Stack Overflow are meant to dazzle rather than instruct.”

or

“So much shorthand and so many options that when I’m trying to learn one particular function, I get 100 different users telling me to do the problem 100 different ways, none of which helps me understand the thing I’m trying to learn.”

This is true.

Ruby in particular has lots of instances where there are multiple, equally good , ways of solving the same problem. But rather than that being a weakness of Ruby, the flexibility of the language is an incredible strength for beginners.

But rather than that being a weakness of Ruby, I actually think the flexibility of the language is an incredible strength, especially for beginners.”

You see, there’s no one way that you learn something, and whichever way sticks is usually the best for a beginner.

Here’s an example.

In Ruby, there’s the select method (in Ruby, functions are called “methods”), which lets you take a list of things and pull out a sub-set of that list.

It looks like this:

list_of_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_of_numbers.select { |number| number.even? }

Even if you’ve never coded in Ruby in your life, read that second line and take a guess at what you’re going to get. That’s right, you’re going to get the sub-set of even numbers: [2, 4, 6, 8, 10]

There’s a second way to do the same thing. It’s called the find_all method.

So instead, you could write:

list_of_numbers.find_all { |number| number.even? }

What do you think you’ll get here?

Right! It’s exactly the same result as the select method.

So why does Ruby have at least two ways of doing exactly the same thing?

It’s because the people who created Ruby were inspired by a few other programming languages — Perl, Smalltalk, and Lisp are a few — and they borrowed the different names for doing things from those languages. Also, it happens to be really easy to write a method once in Ruby and just point other methods to it. That’s not as easy to do in other languages.

So why is this an advantage?

Well, because you don’t have to remember both of these ways of doing things! You just have to remember the one that works for you. I almost always use select.

Doesn’t this get confusing? Maybe, if you’re looking at lots of different people’s code. But by that point you’ve already learned that select and find_all are the same, and it’s not so hard to figure out. Language is a lot like this. There are many ways to say the same thing in English:

Language is a lot like this. There are many ways to say the same thing in English, which enables creativity.

I’m happy, I’m cheerful, I’m pleased, I’m delighted, I’m jolly, I’m beatific, I’m glad, … do I need to keep going?

Flexibility=Creativity

The flexibility actually opens up creativity, which I think is one of the coolest parts about a language like Ruby. Meanwhile, in most other languages there’s only one way of doing something. If you don’t remember that way then you’re screwed.

Another clear example that people like to hate on all the time: parentheses.

In Ruby, parenthesis are optional in methods. So are brackets { } a lot of the times, and you can basically use either single quotes or double quotes interchangeably.

Take that same list from before:

list_of_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

What if you wanted to see if it included a particular number?

You could use the include? method:

list_of_numbers.include?(2)

But you could also leave out the parentheses in this case (and lots of Rubyists do) because it’s prettier and easier to read:

list_of_numbers.include? 2

Sure, there’s a few rules about this. You have to put a space beforehand instead of parenthesis (otherwise Ruby would think you were trying to run a method called include?2 which doesn’t exist).

The point is, you can try many different ways of getting at the same issue, and get an answer to your question in many ways. Rather than get stuck on needing to know the exact way to write something, you can solve your problem in more than one way.

The same is true for software applications, like AutoCAD. As a user, you can type into the command line, navigate towards a button, or use drop-down menus. In addition, you can choose to draw a line with at least eight different tools (line edit, polyline, arc, points, etc). One way isn’t better than the other — they’re just all different tools for drawing. Having many different ways to get shit done makes it easier for people to remember the technique that works best for them.

Flexibility! It’s a beautiful thing.

I’ve never understood why people thought that having multiple ways of doing something was a bad thing. When you’re first learning, you have to grasp and understand whatever concepts you can, as a starting point.

Meanwhile, a language like JavaScript is a truly hard language for beginners to learn. This is because there are so many specifics that don’t come naturally to a beginner, and you have to do them that way. I’m not saying you can’t learn it, but the amount of times I’ve heard beginners so frustrated they were ready to give up because they’ve forgotten a “;” somewhere and have no idea where.

If you’re interested in reading more about why Ruby is a great language for beginners, check out Why’s (Poignant) Guide to Ruby. It’s one of the most beautifully and interestingly written pieces about programming. It is also one of the biggest reasons I fell in love with Ruby in the first place.

And then, if you want to learn more about Rails, watch our free one-minute video or check out our Rails course to go build your first app.

Let’s Change How We Think About Learning to Code

I taught myself how to code.

In college I was a music major. I never thought the Computer Science department was cool. Piano and audio recording were the only things on my mind. But, one day I had a problem: My band needed a website. This was around 2003 — a time before SquareSpace, and WordPress —  and so I ventured on my own to built a website myself.

I had lots of questions. I’m sure anyone looking to dive into software will have similar questions.

  • How do I start learning to code?
  • Which language should I use?
  • Is there a specific kind of computer I should 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 building blocks of programming that you’re taught in college are the internals of the computer. 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. It used to be that being a programmer without training in it was unattainable. 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.

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.”