6/10 – Understanding Software Programming

So you’ve planned out your software and are ready to build it? Threepio is not going to learn this on his own so let’s get started.

What is Software Programming?

If you remember learning to tie your shoe for the first time, it wasn’t easy, right? You practiced a few times, got frustrated, someone convinced you to keep trying, you got brave, kept going and eventually you conquered it like a hero. (Unless you skipped it altogether and opted for those sick velcro strap shoes). Programming software is similar but you are training (programming) your “droid” with a new skill (software). You do that by writing in the specific language that your “droid” can understand. Using the shoe tying analogy it would be something like: pick up the right string, pick up the left string, loop them around each other, etc, until the whole job of tying the shoe was complete. You use nouns to tell what a shoestring was, used verbs to tell it to loop the strings & described the size of the loops using adjectives.

Here in the digital realm, someone programmed the page you are reading this on. They wrote code that tells your browser (your droid in this case) how to put these words in the shape they are in (using a language called html). Those are the nouns. The color, size, styling of the font are examples of the adjectives that style the content (using a language called CSS). Finally when you click on the link to the next article it will be happen (verb) by written instructions (using a language called Javascript).

The actual code looks like this:

HTML: creates structure of content (nouns)

CSS: describes content (adjectives)

Javascript: creates action (verbs)

(all examples from w3schools – great resource)

Exactness

If you’ve ever experienced teaching a little kid to tie a shoe, you’ll find a very different experience training skills to a computer. What is great about computers is they do exactly what you tell them to do every single time and they never forget it. This sounds better than it is, since in exchange for that exact obedience and perfect memory you’ve got to speak their language, well … perfectly. This can be frustrating and leave you mouth open, staring at the screen wondering if writing code is your calling in life or not. However; once it works it works over and over, it can be copied, used by others and generally be so useful that software programs have profoundly changed the world. It is helpful to remember when the frustration of the process spikes that it is a lot easier today than it was at the inception of programming when you had to write in 1’s and 0’s. The computers liked binary just fine, we created the languages for us!

Types

In the Star Wars universe you can boss a great variety of droids. In our universe, you boss around things like: servers, browsers, and computer operating systems.

A front end language carries instructions that your browser executes. HTML, CSS, Javascript that we talked about in the introduction are good examples used to boss the front end.

Together, knowing the front and back end constitute a full-stack developer. These highly valued members of the economy create web apps. Web apps are programs that use your browser and an internet connection.

Not all programs require a browser & internet. You can also use code to lord over your computer & your phone. “Desktop” applications & phone apps use languages like: Swift for iPhone apps, Java for Android, & .NET for Windows machines.

Tools

Whatever you decide to boss around you are going to want to have a place to work and a few tools.

Editor

You use a text editor to write down your various world-domination commands – think Microsoft Word but specifically for programming. It will live on a computer that is often referred to as an IDE or individual development environment. You’ll need some other tools to go along with your text editor, like:

Packages, Libraries, & Frameworks

This sounds like a lot, but they are similar & you’ll like this: you don’t have to write everything from scratch. Noice! (Wow that word is annoying but I’m gonna leave it in here anyway.) These exist because other smart developers write huge chunks of code and publish it online. If you’ve heard the term “open source” before, this is a great example of it. There are interesting differences between the 3 terms but they are all sets of pre-written code. Think of packages as smaller; libraries as bigger; and frameworks as the biggest sets. You plug these in to your project. Specific languages will have specific packages, libraries & frameworks used for each.

Together, work you will

Some projects will need more help than you can do alone. With many people working on one project you will start running into the problem of version control. You could try the Microsoft Word strategy where you’d call a version: _final, then _final_final, and then _final_final_REALLYfinal, but that should cause actual pain in your body. Luckily there is a solution for this: Git or Github (which is cloud storage for git). You enable Git on your computer and it tracks all the relevant changes. You send it to Github as a cloud storage & version control for your programs. Now sharing is much easier, conflicts can be resolved and you become a happier more successful team.

How do you actually do this work? Let’s talk about that next…

Leave a Reply

Your email address will not be published. Required fields are marked *