This glossary is intended to help you talk like a programmer, which is an important part of being a programmer.
12 factor app A list of 12 things you can do (aka a methodology) to make your software more robust.
See the list at https://12factor.net/
See, also, devops and software-as-a-service (SAAS)
accessibility - Making software usable
Ada Lovelace - One of the first computer scientists. Only legitimate child of Lord Byron. b. 1815 d. 1852.
Enormous cultural influence, continuing into the modern day.
agile - A theory/approach/set of processes for building software. Agile software development focuses on continually making improvements to existing processes/software and constant communication amongst end users in order to deliver better software in a faster and more consistent way. A buzzword. An alternative to agile is “waterfall”.
algorithm - A set of instructions for solving a specific problem.
API - Application Programming Interface. There are two overlapping definitions:
- How software exposes its functionality to other software.
- A backend appliation that front-end applications talk to
application - Another word for a computer program.
Every web page can be considered a software application.
B2B - Business-to-Business. When the primary userbase(s) of a software are driven there by
B2C - Business-to-Consumer. When the primary users of a software are people, the software is said to be B2C.
back-end web development - Any web development which is not about building user interfaces.
bash - The most common type of command line interface software in the world. It stands for Bourne Again Shell, named after its predecessor, the Bourne shell.
brand - A brand is a name, logo, slogan, design, or other feature that distinguishes an organization or product from its rivals in the eyes of the customer.
browser - A software application that interprets and displays webpages.
In 2018, the most commonly used browsers are Firefox, Safari, and Chrome.
browser developer tools -
The primary web developer tools:
- Network requests
- HTML/DOM elements inspector
- Application Storage (cookies, localStorage, etc)
bug - When software doesn’t do what you want it to do.
Usage: “I spent Friday debugging all the code I wrote Monday through Thursday.”
buzzwords - Words that have become so popular that lots of people who use them aren’t really sure what they mean. Recruiters and business people use a lot of them. When you hear one you don’t know, write it down and look it up later. It is good to be aware of software zeitgeist!
Some buzzwords, like component, still have relatively formal meanings when used by software engineers in the workplace.
It feels corny, but it’s a good idea to use buzzwords when you’re trying to get interviews. Make sure to use them in your resume and social profiles.
C - An old and still-very-relevant programming language. Most operating systems are written in C. A lot of hardware programming is done in C. C is “low level”… if you peel back the cover of “high level” programming languages, you will often find C underneath.
client-server model -
cloud computing - Buildings full of computers that you can rent by the minute.
This is handy - you can host your applications on someone else’s servers - you don’t have to worry about physically maintaining those servers yourself, which is a real pain in the ass.
The biggest cloud computing company is Amazon Web Services.
command line interface - See Terminal Emulator
component - An individual piece of system.
See, also, modularity.
Configuration is a cause of and solution to “It runs on my machine.”
continuous integration - Frequently integrating
“Move fast and break thangs.” as we say in the South.
CRUD - Create, Read, Update, Delete.
These are common needs in software that uses data that changes over time. You will often hear the phrases like “A standard CRUD app.”
CSS - A programming language called “Cascading Style Sheets”. Empahsis on “style” – CSS is used to describe the presentation of a document written in HTML. A CSS style sheet is made up of rules that describe how you want various content in the HTML document to look.
TL;DR This is where you tell the browser how the content should look. Fonts, colors, sizes, etc.
CSS rule -
cybersecurity - protecting your software & clients from bad actors
data - somewhat interchangable with “information”
data science - Any sort of programmatic attempt to get useful information from data. A buzzword.
database - A organized collection of data that is electronically stored.
A fancy synonym for database is “storage layer”.
debugging - Figuring out what went wrong with your broken code and fixing it.
de facto standard - Drivers seats in America are on the left-hand side of the car, even though nobody said they had to be. It just became the norm. Cf. de jure standard
demo Short for “demonstration”. A demo happens when someone gives a visual walkthrough of a software’s functionality.
“The Mother of All Demos” was presented by Douglas Engelbart on December 9, 1968.
dependency - Something your software needs to work properly. Minimizing dependencies is good.
deployment - Getting your webpage to show up at
https://www.SuperFancyUrlLook.com when you want it to, looking how you want it to.
For long-term projects, you will often want to formulate a “deployment strategy”. Every software system is unique, as are their deployments. This is where the rubber hits the road and software is delivered to end users.
developer - a person who uses code to develop software.
developer tools - any software that helps you make your end-product software faster
DevOps - Short for Developer Operations. This is the idea that Deployment (see above) is the responsibility of everyone on the software team. It is a culture – If your boss says “Why isn’t this working on the website?”, “It works on my computer” is not an acceptable response. This is a buzzword.
“In the DevOps world, we are all system administrators.”
distributed - Being in multiple locations. Putting your eggs in multiple baskets.
documentation - The manual for a technology. See RTFM_.
environmental variable -
ETL - Extract-Transform-Load
event loop -
feedback - When someone tells you how they feel about your work. It is important to desensitize yourself somewhat to criticism of your work. Feedback is essential for growth. Remember to be nice and to offer alternatives when giving others feedback!
Same thing as “frontend” and “front end”. Spelling is your choice.
Compare to back-end web development.
gamification - Rewarding (or penalizing) users for certain actions, as a game would.
Gamification is often pursued to make software “stickier”, i.e. more addictive.
git - A system/software library for tracking changes to your code. It’s like “saving” a document (or infinitely multiple versions thereof). Git makes it really easy to experiment with code (you can always go back) and work with other people. Branching is the most important feature in git.
git branches - Lightweight copies of a codebase. Use them for feature development, experimentation etc.
GitHub - A company that hosts git repositories as a service.
Open-source repositories are free. GitHub hosts most of the world’s most important open-source software.
GitHub offers other secondary services, including a simple webpage hosting service called GitHub Pages.
Microsoft purchased GitHub in 2018.
Google.com - A great place to find answers to programming problems.
hack - Making something work.
HTML - A programming language called “HyperText Markup Language”. Note the “Markup Language” – HTML is not formally considered a programming language.
TL;DR This is where you put your content. Titles, paragraphs, images, links.
HTTP HypterText Transfer Protocol. This is the primary protocol by which computers talk to each other and send data around on the Internet.
It is important to be aware of HTTP methods. The most common are GET, POST, PUT, and DELETE.
An HTTP message looks like this:
imposter syndrome - When programmers think they are not good enough at programming to be called “programmers”.
JOIN - The foundation of SQL’s power, variations of the
JOIN command allow you to exploit relations between data (assuming you’ve put some thought into your schema!)
LAMP - Linux Apache MySQL PHP. A common technology stack used to deliver web applications back in the late 90s and 2000s. Apache, MySQL, and PHP are increasingly replaced by other technologies now.
lean - The idea that less is more.
“That’s some lean code.”
“Well, it works and it’s easy to fix and add stuff to.”
library - A body of code that someone else has written that you can import and use within your own code. Often used somewhat interchangably with “package” or “module”, though it’s easy to be more precise with these terms.
linear algebra - The most important branch of mathematics for computational sciences.
Linux - An open-sourced operating system invented by Linus Torvalds in the early 1990s. This is the most popular operating system for servers. There are many different distributions of Linux, including Ubuntu, CentOS, Red Hat Enterprise Linux, and Debian.
local - Something that has to do with only one computer. Most commonly used in reference to your own computer.
local development environment - The computer you’re actually writing your code.
man pages - The manual pages for specific commands on the command line.
Usually a bad idea. See premature optimization.
modularity - The programming concept that you make better software when you divide pieces of code up into logical units.
This can take many different forms.
MVP Minimum Viable Product. The absolute minimum you can do while still achieving the absolutely essential functionality your product users require.
native - Software that runs directly on some system.
A browser is a native application. A webpage is a web application. iPhone and Android mobile applications are native apps. A mobile-friendly webpage is still just a web application.
fetch Web API is a native browser API/library. jQuery is a third-party API/library.
Anything that has to do with different computer systems communicating with one another.
What you should be doing at meetups.
open source software - Software that is available to use, essentially for free, but with wrinkles here and there, dependent on which license they use. OSS has become the predominant mode of collaborative software development – it will be an active source of discussion for decades to come.
“Think free as in freedom of speech, not free beer.”
- Richard Stallman
operating system - The software that manages how a computer’s hardware and software work together.
Examples of operating systems: Linux, Windows, OS X, iOS, Android.
An application that runs on Linux may not run on Windows. An application that runs on OS X 9 may not run on OS X 10.
premature optimization - If you’re building a brand new piece of software, you probably don’t need to worry about whether your software can handle 10,000 concurrent users. See Fuck it. Ship it.
Note the distinction between products and services.
programming language - A language used to make software programs.
Some programming languages are very limited, e.g. HTML and CSS (only good for making user interfaces). Some languages are Turing Complete, which means they can be solve any problem that can be solved by computation.
progressive web app
prototype - An early, trial version of some software. You build a lower-stakes version of software in order to experiment, learn, and discover potential problems before building “production-level software.”
For better and generally worse, “prototypes” often morph into the production software.
quality assurance - Making sure a piece of software does what it is supposed to do - when, where, and how it is supposed to do it.
“Did this pass QA?”
refactoring - Cleaning up your code.
request-response cycle -
REST - Representational State Transfer. A set of coding guidelines that describes how the API endpoints that front-end applications use to query back-end applications should be structured.
retrospective - When software engineers who work together get together and talk about how their work over some immediately preceding amount of time has gone. They talk about what went right, what went wrong, and what they can do to increase output during the next time period.
root user - The God Mode of the operating system. You can do all sorts of things with this. AKA superuser, AKA root. Prepend
sudo to a command to run it as the root user. Be careful if you’re removing or moving files!
RTFM - Read The Fucking Manual. See documentation.
Often used when help is requested by someone who did not RTFM first.
rubber duck debugging - Explaining a problem to a rubber duck instead of another human. A problem-solving technique to help you think through the problem.
security - Keeping people out of your special places.
separation of concerns - User interfaces, data, and programming logic are three different things.
Services are necessarily constrained by their human-dependent element.
set theory - The math behind SQL.
software as a service (SaaS) - Software sold over the internet where you pay to use it, but mostly don’t have to download anything yourself. On-demand software. Wikipedia says SaaS is “a software licensing and delivery model in which software is licensed on a subscription basis and is centrally hosted.”
Wordpress, GitHub, Zoom, Dropbox - these are SaaS companies.
software development -
software development life cycle, software development process -
source code - The collection of code that makes up a program. Usually written in plain text.
spaghetti code - Code that looks like spaghetti when it should be lego blocks.
sprint - The unit of time that an agile software team divides up it’s work by. The most common length of
StackOverflow.com - A question-and-answer site for programmers. It is an indispensable resource in a programmer’s toolkit.
standards body - Any organization that sets standards for a technology (e.g. “The
W3C and WHATWG are the two most relevant standards bodies in web development.
story points - The agile software methodology term for how much effort it will take a software engineering team to complete a user story.
strategy - An overarching plan for achieving a goal.
Do not confuse with tactics, which are the specific actions taken in pursuit of the strategy.
system administration - Keeping the servers running.
systems thinker - Someone who consciously considers the entire system before building one piece of it.
terminal emulator A text display that gives you a window into the guts of your operating system. It lets you make your computer do things at a more granular and system-wide level than graphical displays. When you type in commands like
sudo chown 755 file.txt, you are using a terminal emulator.
When programmers use any of the following terms, they’re often referring to using the Terminal Emulator: shell, command line interface (CLI), command line, terminal, kernel. This book typically uses “command line”.
If you’re using a Mac or Linux, this is the “Terminal” program. If you’re on Windows, this is the PuTTY application - TTY comes from the word “teletypewriter”.
testing - Making sure your code works.
text editor - The program you use to write your code in.
TL;DR - Too long; didn’t read.
Another way to say this is, “This is the main point I’m trying to make.”
Turing complete programming language
URL - Uniform Resource Locator. This is what you use to find resources on the world wide web. This tells you the location of a resource and the protocol you should use to get it. For instance, in
https://google.com – HTTPS is the protocol; google.com is the address.
users - The people who actually use something, e.g. software.
user experience - “UX”
user interface - The graphics users look at when using software. “UI”
user story - A unit of functionality in a software application. It is what a software user needs to be able to do or experience.
venture capital - The money that rich people give in exchange for stock in an early-stage company. Many technology companies take venture capital.
In America today, the majority of money is concentrated in the hands o
Semantic versioning is the most popular.
version control - Tracking changes to code, such that you can rewind, make copies, and experiment with it. Git is the dominant version control system at present.
waterfall - Where agile software development is about iteration, waterfall is about incrementalism. This theory of development has fallen out of favor and will likely not be making a comeback.
web application - An application created to run inside of a browser.
web development - The practice of making webpages for the World Wide Web.
workflow - A set of steps for solving problems or creating things.
World Wide Web - A place where things can be found using URL addresses.
World Wide Web Consortium (W3C) - the main international standards organization for the World Wide Web