Talk Nerdy To Me: An Artist's Quick Guide to Programming Terminology
Tags: beginners
Published: 2023-08-10 04:19:44

Coming from a non-computer science background and getting into programming, there are a ton of terms thrown around that we are expected to know seemingly inherently. Now, I've come to understand that being lost in the sauce is just a part of daily life as a programmer and that, contrary to what all of the condescending people on StackOverflow think, no one knows it all (and if they say they do they're lying to you!). And while I've gotten really good at smiling and nodding along while secretly chat GPT-ing definitions under the table, I figured I might as well share my little terminology cheat sheet so that you can maybe save yourself some time. So if you're feeling like a fish out of water, here is a just a brief **BRIEF** (did I mention brief?) quick start guide to just a few programming terms so you can talk nerdy:


**1 - Wireframe:**
It is literally just a basic frame of what a website will LOOK like to a user. It's not a component tree, and it's not your domain model. You can make this on Microsoft Paint if you want to. I'm talking circles and squares. Okay maybe don't make it in Microsoft Paint if you want to look professional... Use Balsamiq, Figma, or even Jamboard in the Google workspace. There are probably some VS Code extensions too. Go Wild!

**2 - Iterating Methods**
An iteration method is just a cute little process that we can do in many different languages that lets us cycle through a bunch of stuff and do something to each one of those things. Think of an array of all of your exes:

```
const exes = ['Tommy', 'Chris', 'Brad', 'Chad']
```

Let's say you wanna _iterate_ through this array (or list in Python!) and punch every one of your exes individually in the face. We can't punch the exes all at once; after all, we only have two hands! So we have to create a loop that goes to each ex one by one and sucker punches them right in their nose. Some examples of loops:

**the classic Javascript for loop:**

```
for (let i = 0; i < exes.length; i++) {
    punch(exes[i]);
}
```

**forEach:**

```
exes.forEach(function(ex) {
    punch(ex);
})
```

**map:**

```
const brokenNosedExes = exes.map(function(ex) {
    return punch(ex);
})
```
(Quick side note for this example here, map produces a new array with each ex potentially transformed by our punch function. forEach does NOT inherently produce a new array or change the original array of exes, but the items in the array might be altered if the function we give it does so (like punch here)

**list comprehension in Python**

```

def punch(ex):
    return f"{ex} says 'Ouch!'"

reactions = [punch(ex) for ex in exes]

print(reactions)
```

**3 - Framework**
A framework in software development is a pre-prepared toolkit of standardized, pre-written code. They provide a foundation on which software developers can build applications for a specific platform or type of application. Think of building a website like you're building a house. You can lay the foundation, put up the wooden frame, install the plumbing, lay the bricks with the grey stuff that goes in between them all by yourself (can you tell I don't know anything about construction) OR you could just use a prebuilt frame of a house that maybe has all of that plus the toilet already installed for you! The prebuilt-toilet-house is like a framework. Some examples of some popular frameworks are React, Django, Angular, Vue, and Flask. They can take a bit of time to learn, but are super time savers later on if you can master them!

**4 - Hash**
No it's not the super fun stuff that leaves you sleepy and hungry and cry-laughing at the teletubbies theme song at 1 pm on a Tuesday! Hashes are like a magical little organizer of data. Let's use another dating analogy: For each person you date, you know how you create a little nickname for them that acts as a shorthand code for their entire life story? Here's how this analogy works for Hash's:

Consistent Output Size: No matter how intricate or simple their life story, whether they've traveled the world or never left their hometown, the nickname is always, say, exactly two words long. "Crunchwrap Supreme" for Nick who loves Crunchwrap Supremes, "Golf Guy" for the semi-pro golfer, and "TikTok Girl" for the girl you met on TikTok.

Sensitivity to Input Changes: If "Crunchwrap Supreme" Nick suddenly tells you he's now more into Quesaritos, even that slight preference change would result in a totally new two-word nickname, like "Quesarito Nick".

Speed: These nicknames are quickly made. As soon as you hear a story, bam, you've got a nickname!

Non-reversibility: Here's the catch – if someone only hears the nickname, they can't deduce the entire backstory or even significant parts of it. "TikTok Girl" doesn't tell a third person if you met at a TikTok event, through a specific video, or if she's actually a famous TikToker.

These nicknames are like hashes. They provide a consistent, quick, and unique representation of data. But just like you can't know the whole story from the nickname, you can't get the original data back from its hash.

**5 - Algorithms**
I like to think of algorithms as digital recipes. They're well-defined, step-by-step procedures or sets of instructions crafted to perform specific tasks or solve particular problems. Let's use making a pizza as an analogy. You have the ingredients that you input into the process of cooking and then as your output you get a yummy pizza. However not all pizza recipes, or algorithms, are created equal. You could have a Lunchables pizza or a homemade-sourdough-made-from scratch-and-sun-dried-tomato-sauce-from-the-tomatoes-grown-in-your-garden pizza and they are _technically_ (don't come for me pizza snobs) both pizzas. Meaning they both output the same thing. But one is significantly faster and takes up less space in your pantry (the Lunchable) than the other (the Gourmet pizza). The point? While there are multiple ways (algorithms) to achieve an outcome (like a pizza), not all methods are created equal. Some are faster, some are more resource-intensive, and choosing the right one for the job is crucial in the world of programming and for GETTING a job in the world of programming.

This is only a brief guide into the world of web development terminology. I hope this cleared up a few terms that I personally struggled to wrap my head around when I first started. Good luck out there my little baby hackers!