What is Coding?

print “Hello, World!”

We’re going to talk today a little bit about coding. Specifically we’ll answer the question, What is Coding? and also cover a little of what happens when we code. Before you begin, though, I want you to right click on your browser window and choose the View Page Source option. What you just got was a view of that web page’s code. Which is to say, you got a glimpse of the language that tells your computer how to make that webpage look the way it looks.

The first time I actually looked at the code in a browser window was a revelation to me. Here was the internet in the internet’s own voice. Sure I didn’t understand most of it, but I could pick out snippets of words and phrases I understood. I knew a font name or two, understood pixel sizes more or less. It was alien to me, but I could understand how it worked. Here was the language that my computer spoke. Or so I thought.

If you’re planning on learning to code at all, it’s worthwhile thinking through what exactly is happening when you code, what exactly it means when we say someone is coding, what the difference is between coding vs. programming, what languages you might end up coding in, and how to get started coding.

<style type=awesome_sauce.css>

So let’s start briefly with what coding isn’t. I mentioned above that when I first saw the source code of a web page, I thought that I was looking at the language my computer spoke. This is one of the common ways of talking about what coding is. It’s not exactly true, though.

Your computer doesn’t really understand the nuances of language. In fact, the only terms your computer understands well at all are “Yes” or “No.” Imagine talking to a group of engineers, but your phone has gone out and your radio only works one way. You can only communicate with a flashlight. One flash for yes, two for no. It might take a while, but eventually, the bridge will get built and all will be happy.

This is how a computer communicates with people. The language the computer speaks is binary code, a mathematical language that looks like a line of ones and zeros. Essentially the computer understands “Turn this function on. Turn this other one off,” and nothing else. So unless you’re typing strings of ones and zeros into your text editor (which, you’re not…just no), you’re not really writing code in a computer language.

OK, so if writing code doesn’t amount to writing in the computer’s own language, what are you doing?

Well, think about it like this. You don’t speak binary and the machine can’t come close to understanding human languages. So in order for you to tell the machine what to do, you have to have a translator who can act as an intermediary. This is code. It’s a form of writing that isn’t binary, but that the computer can understand.

For most of the programs you’re likely to write, the code is actually several steps removed from the binary code. You write in a high-level code that’s closer to human language, and programs built into your computer translate them down into binary. It’s like if you needed to speak to someone who knew Mandarin, but the only translator you could find spoke only French. You would need another translator to translate from English to French and then they can translate to Mandarin.

What sort of blows my mind about all of this is that it works somehow. We have programs translating programs to a machine that only speaks binary, which is an insanely complicated prospect. Yet here I am typing human words on my binary speaking computer.

Luckily, when you start coding, it’s not really important to understand how this all works as long as you understand what programming is you’re headed in the right direction. The important takeaway is that coding is writing in an intermediary language that both you and your computer can communicate in.

<{Coding=Programming} YES>

When I was growing up, my dad was a computer programmer and all the people he worked with were programmers. This was how I understood people who wrote for computers for a long time. They were programmers.

Then it seemed like there was a shift in either terminology or industry, and suddenly people who wrote for computers were coders. Which has prompted me to wonder whether there is a difference between the two activities.

A little research shows me that it depends greatly on what school of thought you subscribe to. Several forums I have looked through say that there really isn’t a difference between a coder and a programmer. It’s a difference in terminology rather than activity.

The egalitarian in me likes this way of looking at things. However, Jonah Bitautas makes an interesting argument that there is a real difference that amounts to a matter of scale. Essentially, a coder is someone who writes language for computers. A programmer is someone who oversees the writing of a whole program — that is to say, a whole project’s worth of code writing.

It’s the difference, I think, between calling someone literate and calling someone a writer. A literate person can write and read words, but doesn’t necessarily see how they work together into elegant paragraphs and sentences. A writer, on the other hand, understands how those words work together in a larger, more complex structure and can maneuver through that structure with intelligence and choice.

Like I said, I love the egalitarian quality of the first definition, but I’m all for preserving a sense of difference between the activities, if for no other reason than it gives people something to reach for. I have written code, but I am not yet a coder. When I am a coder, I think I’d love to be able to look forward to the day when I can call myself a programmer.

Languages

There are literally dozens of languages a person can learn to code in. Although a few languages are all-purpose (or multipurpose), most serve a specific function. CSS, for example, functions primarily to make things look pretty on the web. JavaScript, a relatively old language, exists to make web pages more functional. Depending on what you want to accomplish, you’re going to have to choose a specific language. There are a few common ones that you might want to work with, especially if you’re just learning to code.

HTML

When I asked you a minute ago to open the source code for this web page a minute ago, it took you to lines of code written in HTML. Short for Hypertext Markup Language, HTML works as sort of the bones of the Internet. It tells web pages what should be displayed where and how they’ll fit within a given style sheet. It also tells your browser where to look for content like images and videos that you might want to include, as well as where to find the style sheet you’re working off of.

CSS

CSS is the stylesheet. If you open up a CSS file, you’ll see a lot of references to font families, colors, bold or not, etc. When your browser loads a page, the HTML tells it “Hey. Make this part of the page look like a header. OK?” It also says “Here’s where to look to understand what a header should look like.” This will always be a CSS file.

Javascript

Javascript is a language that brings interactivity to the web. It’s a language that makes things happen on a web page. When you click a button on a web site, for example, it’s JavaScript that makes the button seem to click. The controls for video players on the web, animations, etc. Most of these are JavaScript of some other dynamic programming language. In a later post, I’m going to be writing about front-end versus back-end work using Javascript and PHP. Which is to say, programming for the user of the website versus programming for the server of the web site. More on that to come.

Ruby on Rails and Python with Django

We actually already have a baller post on the differences between these two framework languages, which is worth ducking away to read when you’re done here. The short version is that Ruby on Rails (Rails to its friends) and Python (named for Monty Python) are both programs that are used to develop web applications. Which is to say they create programs that allow web pages to do things at a high level of interactivity. If you want to, for example, build a bot to automatically create an automatic payment system for your clients, you’ll probably use one of these. They’re great programs to learn to work with because they are extraordinarily versatile and there is a lot of extant code for you on the web to begin playing with this.

Learning to Code

There are actually a lot of parallels between learning to code and learning to write well (as there should be, since coding is just writing in computer languages). I think the most frustrating of these is that, as with learning any language, you have to be willing to spend time practicing it and doing it poorly.

There are some people who are just natural coders, sure, just as there are people who can speak Italian after listening to a couple of operas. For the vast majority of us, though, learning to code is a process that involves trying to tell the computer to do something, having the computer come back with an error message (which is its way of shrugging its shoulders and saying “Qua?”), and then trying a new way of doing the same thing.

The most successful self-taught coders I know are people who regularly take on coding challenges just to see what they can make. I know a guy who writes Python bots for Twitter as a sort of hobby. He’s made some things that are pretty awesome to behold.

Coding languages now are dynamic and complex enough that often times if you can conceive of a thing you want to have happen on the web, you can do, and probably there’s a web site that can help you work out how.

There are also many ways to find classes that can get you started on the basics of whatever program you want to make. That means there’s really no reason to not start playing a bit. There’s no risk to trying something (you can’t break the web; Kim Kardashian already did that), and the gains are huge. So go for it. Conceive a bot, conceive a web page, conceive a font family, and get started.

8 Ways to Change Your Habits (And Actually Get What You Want)

Click to tweet this quote

What does it take to make a goal or a dream come true?

You know the drill. You’re vowing to change your behavior. Tomorrow I’ll … start meditating. Start brushing my teeth. Finally get around to writing those essays you’ve been meaning to write. Make plans for the new book you’re putting together. Learn to code.

You vow that you’re going to do it. You know it. You have to do it.

But it didn’t get done today. So you wake up tomorrow and do the same thing you’ve always done. Yet your behavior doesn’t change.

When we make broad-sweeping declarations about our life, they don’t work.

In fact vowing to do anything, no matter how strong the vow, usually wears off as your willpower drains throughout the day. So how do you make a change in your life that’s actually effective? “Everyday people plan to do difficult things, but they don’t do them. They think, ‘I’ll do it tomorrow,’ and they swear to themselves that they’ll follow through the next day,” write Carol Dweck, researcher at Stanford and author of Mindset. “Research by Peter Gollwitzer and his colleagues show that vowing, even intense vowing, is often useless. The next day comes and the next day goes.”

So how do you make a resolution that actually works? Here are a few of the best tips and tools we’ve read about, used, and know to work:

1. Make a concrete, vivid plan.

What works, writes Dweck, is making a vivid, concrete plan. Describe to yourself exactly what you’re going to do, how you’re going to do it, and what steps you need to take, down to the minute detail. “Think of something you need to do, something you want to learn, or a problem you have to confront. What is it? Now make a concrete plan. When will you follow through on your plan? Where will you do it? How will you do it? Think about it in vivid detail.”

Increase your possibility of success by outlining when you’re going to do something, by putting it in your mind as a behavior — and on your calendar as an action.

These concrete plans — plans you can visualize — about when, where, and how you are going to do something lead to really high levels of follow-through, which, of course, ups the chances of success.

If you’re looking to write a book in the new year (which, full disclosure, I am), then break it down into its constituent parts. When will you write? What will it look like? What days a week will this happen?

Think about it exactly, not vaguely.

For me: I’m going to set an interim goal of writing on my book for at least ten days in January. More specifically, a writing session includes just opening the doc and working on a single page. I’m focused on making the habit of working on my book part of my regular routine.

2. To make change, visualize the change. Take time to imagine your behavior change in detail.

It turns out, detailed visualization is powerful enough to change behaviors even before you start. As I’ve written about before, the power of visualization is so important, it’s proven to change behaviors:

“In a famous basketball study, players were divided into groups that visualized perfect free throws, a second group that practiced their shots, and a placebo group that did nothing. At the end of the study, the players that visualized their perfect throws improved almost as much as the group that practiced — without ever touching a basketball. It’s important to note that the visualization involved the specific steps and actions it takes to perfect a free-throw shot.”

If you want to change what you do, you can begin with your thoughts.

3. Start small.

Habit change happens when you start really small. Want to learn how to run? Your first month might focus just on the first five minutes of each run, until you’ve mastered that first step. This includes mastering the steps of putting your shoes on, walking outside, and only then maybe adding a few minutes to walk to the corner or around the block each day.

What’s key is successive positive reinforcement, or rewarding the behavior you want more of. Too often we jump cold turkey into a brand-new routine only to find ourselves back in our old habits before we know it. Instead, focus on the smallest possible change that could build into a habit over time. For more on this, check out Stanford Professor B.J. Foggs’ Tiny Habits program.

“We often think that if you start with something so small, it won’t make a difference. But the truth is, because that momentum builds after you get going, you can often start with something really tiny, and it will blossom into something much bigger,” says writer and author James Clear.

If you’re stuck or overwhelmed with a new project, ask yourself: what’s the smallest thing I could do next to make this happen? It doesn’t matter how small it is — the trick is to make it small enough that you actually do something.

Tweet: “Even when you start small, it can make a huge difference.” — @James_Clear

4. Prime yourself.

New behaviors need an introduction, of sorts. Whenever I start to learn something new, I try to expose myself to the new context before actually committing to a new behavior change. Often the weight of how much is going on can be intimidating — researching a new location, mapping it out on google maps, looking up schedules, figuring out payment options, sticking to the plan — that enough friction in any of these steps and you don’t end up doing it.

Instead, make one of the first steps a walk through. Whenever I try out a new gym or studio, I go in for a tour. You can learn the routine, see the studio, and practice the behavior of going to the gym. This makes it easier for you to repeat this action down the line because you already know how to do it.

Want to start flossing your teeth in the morning? Go right now to your bathroom sink and practice the behavior. Get out the floss, put it on the countertop, and floss at least one tooth. Even if it’s 2pm in the afternoon, even if it’s just one tooth. This will prime you for repeating the behavior the next day.

5. Look to the process, not the outcome.

Too often we confuse the reward of the outcome with understanding what, exactly, it’s going to take to get there. Sitting down to write every single day is a lot more boring than having a published book in your hand. So how do you create a schedule that rewards the small successes?

It’s actually psychologically difficult to conceptualize change. We don’t understand thresholds of small changes; instead, we’re biased to see big wins. The biggest change happens over time, however, when you enact small, consistent behaviors. Sometimes mundane acts over time add up to something more exciting, after all.

“It’s so easy to focus on this idea of one defining moment, or overnight success, or some massive transformation to flip a switch and become a new person — but it’s not that way at all,” explains Clear. To make a behavior stick, look closely at the process and whether or not you’re really willing to commit to the, at times, drudgery and slog that it’ll take to get there.

And be ready to surprise yourself. Entrepreneur Corbett Barr reminds us that “Not a lot will change in one single day, but a lot can change in 30 days.” It’s rare that I’ll have a breakthrough day to finish my book (and by definition, that will only be one day out of many), but if I keep showing up, that day will arrive.

6. Motivation doesn’t last long, so plan ahead for when you’re not motivated.

How do you stay motivated? Well, it’s not about motivation — it’s about habit. Stephen Pressfield describes Somerset Maugham’s relationship to motivation and writing:

“Someone once asked Somerset Maugham if he wrote on a schedule or only when struck by inspiration. “I write only when inspiration strikes,” he replied. “Fortunately it strikes every morning at nine o’clock sharp.” Maugham reckoned another deeper truth: that by performing the mundane act of sitting down and starting to work, he set in motion a mysterious but infallible sequence of events that would produce inspiration, as surely as if the goddess had synchronized her watch with his.” — Steven Pressfield from The War of Art

In other words, the difference between a professional and an amateur is that a professional doesn’t wait for motivation. They get to it, even if they don’t feel like it.

7. When you get stuck, reduce the scope, but stick to the schedule.

This idea comes from 37 Signals, and I heard about it from Eric Zimmer and James Clear on “The One You Feed,” podcast. James writes every Monday and Thursday, and he explains that even when there’s a dud of a day, he still shows up and sticks to the schedule.

It doesn’t matter how you feel, it’s about shipping something. Rather than skipping altogether when circumstances get dicey (skipping your workout because you only have 20 minutes, avoiding your writing session because you’re tired), instead, find a way to do something, even if it’s just for a moment. Do jumping jacks for 6 minutes, then 1 minute of pushups. Write 200 words, or three sentences.

Whatever time you have is how much you do.

A little of something is a lot more than nothing.

Click to tweet this quote

8. Behavior change requires… change.

In order to get a different outcome, change the inputs.

This might seem exceptionally obvious, but it’s worth pointing out: if you want a different result, you’ll have to do something differently than you’re currently doing. What you’re doing right now (and for me, it’s spending three weeks not writing, then a day stressing about writing) — isn’t getting you the result that you want.

If you aren’t getting what you want, then what you’re doing isn’t working. In order to get what you want, something about the process will have to change.

What are you willing to do differently to get what you want?

How can you change your habits to get more of what you want?

What is Growth Hacking?

Key Takeaways

Growth hacking is marketing + coding. It includes things like: landing page optimization, SEO, public relations, advertising, and copywriting.

Three things that a Growth Hacker might do in a typical day:

  1. A/B testing landing pages
  2. Capturing emails before you launch your product
  3. Optimizing the virality of your product so that more people use your product.

How to Learn Growth Hacking Today

  1. Read “Growth Hacker is the new VP Marketing” by Andrew Chen (5 minutes)
  2. Read “Find a Growth Hacker for your Startup” by Sean Ellis (5 minutes)

Additional Resources

  • Growth Hacker TV — Over 100 episodes where the experts on startup growth reveal their secrets. Multiple new episodes released every week.
  • One Month Growth Hacking — learn growth hacking in 30 days or less with Mattan Griffel

LLC vs. Corporation: Which is Right for Startups?

If You’re Starting A Startup:

If you’re starting a startup, and you want to deal with equity, you’ll need to start something known as a C-Corp.*

The two major ways you can create a company are as a C-Corporation (C-Corp for short) or a Limited Liability Company (LLC). If you want to have equity in your company, then you shouldn’t start an LLC. An LLC is just for multiple partners owning a business. A C-Corp will let you take investment and have equity in your company.

Another important thing about a C-Corp is that you’ll have a Board of Directors. That might start out as just you and your Co-Founder, but as you grow and get more investors, they may join as board members as well.

For now, you probably don’t need to know about A-Corps or B-Corps (but if you want to geek out, we won’t stop you from Googling). Focus on LLC vs Corporation.

*Of course, for questions specific to your particular situation, it’s best to seek the advice of an attorney or accountant.

Key Takeaways:

  • If you want to take investment (and have equity in your company), you’ll need to start a C-Corp.
  • The two main forms of company structure are C-Corp and LLC.