Web App Development Watered Down with Weird Spaghetti Analogies
If you have ever opened up the can of worms known as web app development without any experience or any background book knowledge of the subject, you will know the sinking, sickening feeling of being completely confused out of your mind.
You might think “Hey, I made a website once — how hard can a web app be?” You might have found one of those “quick start” guides on github or a random blog. “Oh ok, so this is supposed to get me “up and running” in “no time.”
Soon you are up to your shoulders in a flood of strange terminology and processes. Backend? Servers? Packages? Modules? Environments? Libraries? Frameworks? JS this and JS that? And why does everything need this NPM thing? OMG I have to use a TERMINAL? I can’t do this… I’m going to break my computer or get caught by the NSA for looking at a black screen with white text. Am I going to be labeled forever as a hacker?!? *shrieks of pure horror*
So Here’s What No One is Telling You…
Building a web app is a lot like making spaghetti.
(Yes, I’m using a cooking analogy and not a stupid library analogy. Because in real life you can’t lift up libraries, stack them in your town square, and call it Mega Town Reading Center Version Beta)
So back to spaghetti. First you need to make a list of your ingredients.
- Noodles. (Made from Flour and Water) Hmm… Flour is ground up wheat.
Are you planning on growing your own wheat, grinding it into flour, and adding it to water? No? Ok — add Noodles to the grocery list.
2. Sauce (Made from Tomatoes and billion spices)
…yeah better add that to the list too.
3. Meatballs (yeah, yeah… I really don’t want to butcher a cow myself)
Add it to the list.
4. Cheese (Made from Milk and bacteria… and a few years… )
Add it to the list.
What does this have to do with a web app?
Web apps are created from a lot of ready-made ingredients. But here’s the catch. You need to get them yourself, portion the ingredients, add a couple of your own spices, put them in the pots and pans yourself, and set the cooking time and temp.
So here’s the quick translation guide.
Server which usually comes from node.js = Your stovetop and oven (Nothing’s getting cooked without it). Of course if you want something over the grill or in the microwave, there are other tools for that.
NPM (Node Package Manager) = Your grocery store. There are other grocery stores out there but trust me, this one’s got almost everything.
Packages & Libraries = Your packaged up pre-made food like the noodles, sauce, meat, and cheese that you need for your spaghetti project. Beware, there are a lot of ingredients and brands out there.
Modules & Components = Your pots and pans. You have to organize and separate your food to cook it before you put it together. You are going to get sick if you put that raw meat all over your raw noodles and mix it in a blender.
Frameworks = Different brands and styles of the same food that usually come with a couple recipes. But like you might want to think about it before you try mixing brands. Would you want that cheese powder that comes in the mac and cheese box to be on a grilled cheese sandwich? Hell no.
Environment = Your kitchen — the place you make the food. Some of them have neat tools like knives and measuring cups.
Backend = That’s you, the chef. The girl getting up at 5 a.m. to find the perfect fresh basil at the market.
Frontend = That’s the guy decorating the tables and folding those napkins pretty — although without him… no one’s coming to your restaurant. (Yes, you’ve gotten so good at making spaghetti, you have a restaurant now.)
Platform/Cloud Platform = That’s your restaurant. Without it, no one can see or eat your food.
OK, so does it all make sense now?
No? Yeah… you should probably read a book, take a course, try it out yourself. Moral of the story, people don’t just build web apps overnight. It’s not magic. It just takes time and practice.