How to Learn Programming – The Guide I Wish I Had When I Started Learning to Code

barely the think of learning to code can be very intimidating. The discussion code is cryptic by definition. It implies a technical form of communication that computers, and not humans, are meant to understand. One room many people start learning to code is by picking a popular scheduling speech and jump in head first with no direction. This could take the imprint of an on-line gull class, a tutorial undertaking, or a random book purchase on a specific subject. rarely do prospective developers start with a roadmap – a bird ‘s eye view of the tease world that outlines a set of relevant scheduling concepts, languages, and tools that about 100 % of developers use every day. In this article, I propose one such roadmap. I do this by outlining 14 steps – each one discussing an essential concept, language, or joyride – that professional developers use to write code, collaborate, and create professional projects.

I meticulously chose these 14 steps based on my own personal journey learning to code, which spans about 20 years. depart of the reason it took me therefore retentive to feel comfortable as a developer is that I would learn about specific topics without a broader context of the gull world. Each of the steps in this article discusses a “ code necessity ” – something that I believe is critical to at least know that it exists at the start of your coding travel. One final bill before listing the steps in the roadmap : of course reading this article will not make you an expert programmer. It is n’t meant to. The determination of this article is to make you aware that each one of these topics exists, and hopefully give you a basic theme of how each one works sol you can build on it intelligently going forward .

14 Step Roadmap for Beginner Developers

Without far bustle, let ‘s start at the top !

1) Familiarize Yourself with Computer Architecture and Data Basics

One of the fantastic things about modern programming languages is that they enable us to create fondness applications without worrying about the kernel details of the hardware behind the scenes ( for the most region ). This is called abstraction – the ability to work with higher-level tools ( in this sheath programming languages ) that simplify and narrow down the command oscilloscope of our understand and skills. however, that does n’t mean it ‘s useless to know the basics of the alloy that your code is executing on. At the very least, being mindful of a few tidbits will help you navigate workplace conversations about high CPU and memory usage. so, here is a bare minimal of calculator architecture basics to get you started : Your computer ‘s most important parts live on microchips ( besides known as integrated circuits ). Microchips trust on an electrical component called a transistor to officiate. Transistors are bantam electric switches that are either off ( 0 ) or on ( 1 ) at any given time. A one chip can contain millions or billions of bantam transistors embedded on it. Most modern computers have a chip called the Central Processing Unit (CPU). You can think of it as the computer ’ sulfur brain. It handles most of the number crunch and coherent tasks that the calculator performs. Each CPU has something called an instruction set, which is a collection of binary ( zeros and ones ) commands that the CPU understands. fortunately, we do n’t in truth need to worry approximately these as software devs ! That is the office of abstraction. If the CPU is the logical center of the brain, it is utilitarian to have memory a well to store information temporarily or for the long term. Computers have Random Access Memory (RAM) as “ working memory ” ( or short-run memory ) to store information that is actively being used by running programs. ram is made up of a collection of memory addresses, which can be used to store bits of data. In older languages like C, programmers do have access to working immediately with memory addresses using a feature called pointers, but this is rare in more modern languages. last, we ‘ll touch on a component you ‘re surely familiar with – the hard drive. In our doctrine of analogy of the mind, this represents long-run memory. A hard tug is an inner or external device that stores data that should persist even after the computer is turned off. Before moving on to more details about programming languages, let ‘s spend a second talking about data. But what precisely do we mean by the son data ? At a senior high school level, we think of things like textbook documents, images, videos, emails, files, and folders. These are all high-level data structures that we create and save on our computers every day. But underneath the hood, a computer bit ( like a CPU or RAM nick ) has no idea what an “ image ” or a “ television ” is. From a chip ’ s position, all of these structures are stored as retentive sequences of ones and zero. These ones and zeros are called bits. Bits are normally stored in a determined of eight at a time, known as a byte. A byte is plainly a sequence of eight bits, such as 00000001, 01100110, or 00001111. Representing information in this way is called a binary representation .

2) Learn How Programming Languages Work

In the previous section, we mentioned that most computers trust on a CPU, and a CPU can understand a specific fructify of instructions in the form of ones and zeros. consequently, we could theoretically write code that tells the CPU what to do by stringing together long sequences of ones and zeros in a form the CPU understands. Instructions written in binary shape like this are called machine code. Sounds atrocious to work with, does n’t it ? Well it probably is, but I would n’t know since I by and large use higher-level program languages like JavaScript, Python, and Java. A higher-level programming language provides a fit of human-readable keywords, statements, and syntax rules that are a lot elementary for people to learn, debug, and work with. Programming languages provide a mean of bridging the gap between the way our human brains understand the universe and the way calculator brains ( CPUs ) understand the world. ultimately, the code that we write needs to be translated into the binary instructions ( machine code ) that the CPU understands. Depending on the speech you choose, we say that your code is either compiled or interpreted into machine code capable of being executed by your CPU. Most program languages include a program called a compiler or an interpreter which performs this translation pace. merely to give a few examples – JavaScript and Python are interpreted languages while Java is a compile speech. Whether a language is compiled or interpreted ( or some combination of the two ) has implications for developer public toilet, error handle, performance, and other areas, but we wo n’t get into those details here .

3) Understand How the Internet Works

Whatever type of programming you aspire to do, you ‘ll run into situations where it helps to know how computers interact with each other. This typically occurs over the Internet. The Internet is nothing more than a ball-shaped collection of affiliated computers. In early words, it is a ball-shaped network. Each calculator in the network agrees on a hardening of rules that enable them to talk to each other. To a calculator, “ talking ” means transferring data. As we discussed in the previous section, all types of data – web pages, images, videos, emails, and then on – can all be represented as ones and zeros. consequently, you can think of the Internet as a identical large sic of computers that can transfer ones and zeros amongst themselves, in a way that preserves the meaning of that datum. The Internet is nothing more than a digital conversation medium. If the Internet is merely a big conversation sphere, let ’ s define the conversation participants. first, an doctrine of analogy : most human conversations require at least two participants. In most cases, one person initiates the conversation and the early person responds, assuming they are both present and available. In Internet talk, the calculator initiating the conversation is called the client. The computer responding or answer is called the server. For example, let ’ s say you open a web browser and go to “ ”. In this scenario, your network browser is the client. By extension, you can besides think of the calculator you are working on as the customer. In a more pilfer feel, YOU are the node because you are the one initiating the conversation. By typing “ ” into the search bar and clicking , your browser is requesting to start a conversation with one of Google’s computers. Google ’ south calculator is called the waiter. It responds by sending the data required to display Google ’ s world wide web page in your browser. And voilà ! Google ’ s web page appears in front of your eyes. All Internet data transfers utilize this kind of client/server relationship .

4) Practice Some Command-Line Basics

The Command Line can be intimidating at first gear glance. It is often featured in movies as a cabalistic black shield with incomprehensible text, numbers, and symbols scrolling by. It is normally associated with an evil hacker or genius techie buddy. The truth is that it doesn ’ t take a genius to use or understand the command line. In fact, it allows us to perform many of the like tasks that we are comfortable doing via a point-and-click mouse. The main remainder is that it chiefly accepts input via the keyboard, which can speed up inputs importantly once you get the hang of it. You can use the Command Line to browse through folders, list a booklet ’ s contents, create new folders, transcript and move files, erase files, carry through programs, and much more. The window in which you can type commands on the Command Line is called a terminal. Let ‘s walk through a short tutorial of basic navigation commands that will give you a feel for working on the instruction note. once you open your terminal, a typical first base question is “ Where am I ” ? We can use the pwd command ( which stands for “ Print Working Directory ” ) to figure that out. It outputs our stream placement in the file arrangement which tells us which folder we are presently in. Try it yourself :

How to Use the Command Line

If you ’ re on a Mac, open the Terminal app, which is basically a Unix Command Line terminal .
If you ’ re running an operate on system without a GUI ( Graphical User Interface ), like Linux or Unix, you should be at the Command Line by default when you start the calculator. If your flavor of Linux or Unix does have a GUI, you ’ ll necessitate to open the concluding manually .
At the prompt, type pwd and press . The Command Line will print out the path to the folder that you’re currently in.
By default, the active booklet when opening the Command Line is the logged-in user ’ s dwelling directory. This is customizable in font you want the public toilet of starting in a different location .
For appliance, the home directory can be referenced using the tilde ~ quality. We will use this in a few examples going forward .
nowadays that we know what folder we ’ re in, we can use the ls command to list the contents of the current directory. The ls instruction stands for “ List ” .
Type ls and urge . The contents (files and subfolders) that reside in the current directory are printed to the screen.
Rerun the previous command like this ls -al and press . Now we will get more details about the directory contents, including file sizes, modification dates, and file permissions.
The hyphenate in the previous command allows us to set certain flags that modify the behavior of the control. In this case we added the -a flag which will list all directory contents ( including hidden files ) angstrom well as the -l pin which displays the extra file details .
next, we can create a new booklet using the mkdir command, which stands for “ Make directory ”. Below we create a new folder called “ testdir ” .
Type mkdir testdir and press . Then type ls and press . You should see your new directory in the list.
To create multiple cuddle directories at once, use the -p flag to create a wholly chain of directories like this : mkdir -p directory1/directory2/directory3
The Command Line international relations and security network ’ metric ton that utilitarian if we can only stay in one localization, therefore permit ’ mho learn how to browse through unlike directories in the charge organization. We can do this via the cd command, which stands for “ Change Directory ” .
beginning, type cd testdir and crush . Then type pwd and press . Note the output now shows that we are inside the “testdir” directory specified in the cd command. We browsed into it!
Type cd .. and press . The .. tells the Command Line to browse backwards to the parent directory.
then type pwd and press . Note the output now shows that you are back in the original directory. We browsed backwards!
Next we ’ ll learn how to create a newfangled evacuate file in the current directory .
Type touch newfile1.txt and imperativeness . You can use the ls command to see that the new file was created in the current directory.
nowadays we ’ ll copy that file from one folder to another using the cp control .
Type cp newfile1.txt testdir and press . Now use the ls and ls testdir commands to see that the new file still exists in the current directory and was copied to the “testdir” directory.
We can besides move files rather of copying using the mv command .
Type touch newfile2.txt and press to create a new file.
Next, type mv newfile2.txt testdir and press to move the file into the “testdir” folder.

Use the ls and ls testdir commands to confirm that the file has been moved into the “ testdir ” folder ( it should no long appear in the master placement you created it, since it was moved not copied ) .
The mv command can besides be used to rename files .
To do that, type touch newfile3.txt and press to create a new file. Then type mv newfile3.txt cheese.txt and press to update the file’s name. Use ls to confirm that the filed was renamed.
last, we can delete files and folders using the rm control .
Type rm cheese.txt and press to remove the file. Use ls to confirm the file was removed.
Type rm -rf testdir and press to remove the “testdir” directory and its contents. Use ls to confirm the directory was removed.
note that we need to use the -rf flags when removing directories. This forces the removal of the booklet and all of its contents .

5) Build Up Your Text Editor Skills with Vim

At this degree, we ’ ve covered the basics of the Command Line and seen a few examples of how we can work with files without a mouse. Although we now know how to create, replicate, move, rename, and edit files from the Command Line, we haven ’ thyroxine seen how we edit the content of text files in the end. Working with text files in the concluding is authoritative because calculator code is nothing more than text saved in an form set of files. certain we could use a fancy text editor program like Microsoft Word ( or more probable specialized code editors like Sublime or Atom ) to write and edit our code, but this is not required. The concluding is frequently the most convenient place to write and edit code since we normally already have it overt to run commands ! There are several excellent textbook editors created specifically for this purpose, and I recommend learning the basics of one called Vim. Vim is one of the oldest text editors around and it is a tested gem. Vim stands for “ VI one M proved ” since it is the successor to a creature called Vi. As mentioned, Vim is a text editor that was built to run directly in the terminal, so we don ’ t need to open a offprint window to work in or use a mouse at all. Vim has a located of commands and modes that allow us to conveniently create and edit textbook capacity using only the keyboard. energy does have bit of a memorize curvature, but with a little act of practice, the skills you learn will pay dividends throughout your coding career. Vim is installed by default on many operating systems. To check if it ’ sulfur installed on your computer, open the Command Line and type vim -v. If Vim opens in your terminal and shows the adaptation, you ’ ra adept to go ! If not, you ’ ll need to install it on your system. ( Note that you can quit Vim by typing :!q and crusade ). For more information on installing Vim, see In my opinion, the quickest and easiest room to learn how to use Vim is to use their built-in tutorial, the VimTutor. To run it, ensure that Vim is installed on your system, open the Command Line, type vimtutor, and bid . It is such a estimable tutorial that there is no reason for me to waste time trying to explain it here. sol go do the VimTutor, like now ! See you in the adjacent section. If you distillery have department of energy left after you ‘ve completed the VimTutor, check out these 7 Vim commands that will dramatically improve your productivity as you get started with Vim .

6) Take-up Some HTML

You can think of HTML – short for H yper T ext M arkup L anguage – as the bones of a web page. It determines the structure of the page by specifying the elements that should be displayed and the arrange that they should be displayed in. Every world wide web foliate that you ’ ve always visited in your browser has some HTML associated with it. When you visit a web page, the web server hosting the web page sends over some HTML to your browser. Your browser then reads it and displays it for you. Most web pages contain a fairly standard set of message, including a title, text content, links to images, navigation links, headers and footers, and more. All of this information is stored as HTML that defines the structure of the page. One thing to keep in thinker is that HTML is not technically a scheduling linguistic process, although it is often referred to as “ HTML code ”. As we ’ ll see late, other scheduling languages enable us to write code that does stuff, such as running a stage set of instructions in sequence. HTML doesn ’ t do anything. We don ’ metric ton run or execute HTML. HTML just sits there in a file and waits to be sent to a web browser which will display it to the end-user. In fact, HTML is basically merely data. It is data that defines what a network page should look like, nothing more. sol how do you write HTML ? HTML uses a standard set of tags ( basically precisely labels ) to identify the available elements that make up a web page. Each rag is defined using angle brackets. For exemplar, the title rag is defined as My Page Title and the paragraph tag is defined as

A bunch of random text content.

. Each HTML component is made up of a start tag and an ending tag. The starting tag is merely the tag label in between angle brackets, like this : This opens the new HTML tag. The ending tag is basically the same, but it uses a forward convulse after the first lean bracket, to mark it as an ending tag :

Any text between the two tags is the actual content that the foliate will display. Let ’ s covering a couple of the most common tags in use. The beginning is the chase. This defines the start of an HTML page. A corresponding tag (note the forward slash) defines the end of the HTML page. Any content between these tags will be a part of the page. The second is the tag. This defines extra information that the browser will use to understand the page. Most of the content in this tag is not displayed to the drug user. A match tag defines the end of the HEAD section. previously, we saw the tag. It defines the championship of the network page, which the browser will display in the browser check. This tag needs to be placed inside the ... section. future is the tag. All content inside this rag makes up the independent message of the web page. Putting these four tags together looks something like this :

        My Page Title
         A crowd of random textbook capacity .

The childlike HTML snip above represents a simple vane foliate with a title and a individual paragraph as body content. This example brings up a point we didn ’ deoxythymidine monophosphate mention in the last section. HTML tags can be nested inside each early. This just means that HTML tags can be placed inside other HTML tags. HTML provides many other tags to provide a ample jell of capacity to web users. We wo n’t cover them in contingent here, but below is a short tilt for reference :

  • : A paragraph of text starting on a new line.

  • : A page heading usually used for page titles.

  • : A section heading usually used for section titles.

  • : Where x is a number between 3 and 6, for smaller headings.
  • : An image.
  • : A link.

  • : A form containing fields or inputs for a user to fill out and submit.

  • : An input field for users to enter information, usually within a form.
  • : A content division, used to group together several other elements for spacing purposes.

  • : Another grouping element, but used to wrap text phrases within another element, usually to apply specific formatting to only a specific part of the text content.

7) Tackle Some CSS

A vane page without CSS – or C ascading S tyle S heets – is like a cake without frosting. A frosting-less cake serves its purpose, but it doesn ’ metric ton expression appetizing ! CSS allows us to associate style properties such as background color, baptismal font size, width, stature, and more with our HTML elements. Each manner property tells the browser to render the desire effect on the screen. Like HTML, CSS is not technically a program linguistic process. It doesn ’ triiodothyronine let us perform actions, it simply lets us add styles to bare bones HTML. Let ’ s see how to associate CSS styles with our HTML elements. There are three pieces to this puzzle : The CSS selector: Used to identify the HTML element or elements we want the style to apply to. The CSS property name: The name of the specific style property that we want to add to the matched HTML elements. The CSS property value: The rate of the style property we want to apply. here is an example of how these pieces come together to set the tinge and baptismal font size of a paragraph :

p {
  color: red;
  font-size: 12px;

Let ’ s begin at the begin, before the curly braces. This is where the CSS selector goes. In this encase, it is the letter p which indicates the

( paragraph ) HTML tag. This means that the styles inside the curly braces will apply to all

tags on the web page. Let ’ s move on to what goes inside the curly braces – the styles we want to apply to the target elements. here we find pairs of CSS properties and values, separated by a colon. The properties ( in this lawsuit “ discolor ” and “ font-size ” ) are on the forget. The values of these properties ( in this case “ crimson ” “ 12px ” ) are on the right. A semicolon ends each property/value couple. You can probably see how this works. The snippets of CSS code above distinguish the browser to use red, 12px size letters for all the text placed inside

tags. so how does an HTML page know to include these CSS styles ? Enter the HTML tag. normally, CSS styles are created in separate files ( .css files ) from the HTML. This means we need some way to import them into our HTML files then the browser knows that the styles exist. The element exists for this aim. We include elements in the segment of HTML files which allow us to specify the external CSS files to import :

    My Page Title


In this case, we are importing the CSS styles specified by the href property, in this casing the file /home/style.css. In the adjacent 3 sections, we ‘ll ( last ) prima donna into some more technical programming languages ! We ‘ll go over a general overview of JavaScript, Python, and Java, a well as base on balls through some of the substantive code concepts common to the 3 languages. We will compare and contrast the linguistic process features and exercise code so you can hopefully get a all-around understanding of the basics of all three .

8) Start Programming with JavaScript

Let ’ s starting signal by answering the follow motion : if we can use HTML to build the social organization of a web page and CSS to make it look reasonably, why do we need JavaScript ? The answer is that we technically don ’ thymine. If we are felicitous with a inactive site that sits there and looks pretty, we are good to go with fair HTML and CSS. The keyword here is “ inactive ”. If, however, we want to add dynamic features to our web pages, such as changing content and more complex exploiter interactions, we need to use JavaScript .

What is JavaScript?

therefore what precisely is JavaScript ? JavaScript is a program language that was created specifically for websites and the Internet. As we mentioned in section 2, most scheduling languages are either compiled or interpreted, and programs are typically run in a standalone manner. JavaScript is reasonably unique in this deference in that it was designed to be executed directly inside vane browsers. It allows us to write code representing sets of actions that will be executed on our web pages to make our sites much more dynamic. You can either write JavaScript code in text files named with a .js annex or inside This will load in the JavaScript code from the file, which will execute when the web page is displayed in the browser. once you get comfortable with your JavaScript skills, you can try building some of these fun beginner-friendly projects to drill .

9) Continue Programming with Python

now that you 've learned some basic JavaScript, it will be utilitarian to jump into another scheduling linguistic process – Python. many programming languages provide a alike set of functionality, including variables, arithmetic operators, if/else statements, loops, and functions. It 's helpful to see how different scheduling languages implement alike features. The concepts are normally very like, but the syntax ( the way the code is written ) varies from speech to lyric .

What is Python?

first we ’ ll cover a small morsel of background information on Python. Like JavaScript, Python is a high- level programming language that prioritizes ease of development over the rush of murder. In my opinion, Python is one of the best languages for beginners to learn. The syntax is cleanse and intuitive and it is a very democratic linguistic process in the open-source and business spheres. Earlier we talked about compiled languages versus interpreted languages. Python is an rede linguistic process. Each time we want to run a Python course of study, the Python interpreter actively processes your code and executes it line by line on your car. This is different than compiled languages, in which we would first use a compiler to process the code into a more optimize shape ( an feasible ), and then execute it later. Unlike JavaScript, Python was not built to be run directly inside web browsers. Python was created to be a commodious script language – a lyric that can be used to write code for arbitrary tasks that normally execute on a drug user ’ s local calculator. Python code can be executed on any computer that has the Python interpreter installed on it. It is distillery a normally used script linguistic process but is besides used extensively for data skill and server-side applications .

Variables and Assignment in Python

Like JavaScript, Python allows us to define variables. In Python we can just use the equals sign to create and assign variables as needed :
x = 10
y = "cheese"

There are two differences between the syntax for defining variables in Python and JavaScript. In Python, we don ’ t need the let keyword and we besides don ’ t need a semi-colon at the end of each line. Python uses a specify of syntax rules based off of whitespace and indentation. This removes the indigence for lineage terminating characters like the semi-colon, and stuff scoping using curly braces .

Data Types in Python

Python besides has a typeset of data types that we can assign to our variables. These include integers, floating-point numbers ( decimals ), strings, lists, and dictionaries. Integers, floating-point numbers, and strings are basically the same as their JavaScript counterparts, so we won ’ triiodothyronine repeat that information here. In Python, booleans are very exchangeable to those in JavaScript, except that the keywords True and False must be capitalized :

x = True

y = False

Program Flow Control Statements

Like in JavaScript, Python has as similar set of stream control condition statements, but with slenderly different syntax .

If / Else Statement

This is the Python equivalent of the if/else example we saw in the JavaScript section :

x = 10

if ( x > 5 ):
    print('X is GREATER than 5!')
    print('X is NOT GREATER than 5!')

We defined a variable called ten and set its rate to 10, followed by our if statement. Since the condition in the parentheses evaluates to True, the code indented after the if statement will be executed, and we will see the string 'X is GREATER than 5 ! ' printed to the screen. In Python, we use the print() routine for printing information to the screen. besides note the else instruction above, which will print an alternative string to the screen if ten if the condition is False. There are two chief differences between the Python code above and the JavaScript code we saw previously. Python uses a colon alternatively of curly braces to indicate the beginning of the if instruction blockage. In addition, the indentation of the print() function actually matters in Python. In JavaScript, the indentation or white space between statements doesn ’ triiodothyronine count since JavaScript identifies code blocks using curly braces and identifies the end of a argument using a semi-colon. But in this Python model, there are no semi-colons and no curly braces ! That is because Python actually uses the ashen distance and newline characters to identify the end of statements and code blocks. The colon tells the Python spokesperson that the if block is starting. The code that makes up the if engine block must be indented ( 1 tab = 4 spaces is the convention ) for the Python interpreter to know that it is a part of the if obstruct. The following unindented line will signal the end of the if blockage .

While Loops

Next we ’ ll hash out loops in Python. The while loop in Python is basically the same as we saw in JavaScript, but with the Python syntax :

x = 1

while ( x <= 100 ):
    print('This is a very important message!')
    x = x + 1

print('This is not in the loop!')

The differences between this while loop and the JavaScript adaptation are that :

  • We removed the let when defining our variables.
  • We removed line-ending semicolons.
  • We replaced the curly braces with a colon.
  • We made sure that the code in the loop is indented with a tab.

We printed an extra message outside of the loop to show that unindented lines of code are not a contribution of the loop and wo n't be repeated. For founder Pythonistas, I recommend taking a peek at the Zen of Python, which is a list of 20 rules-of-thumb for writing Pythonic code. And when you get comfortable with the basics, try building some of these fun beginner-friendly Python projects .

10) Further Your Knowledge with Java

nowadays that we ’ ve worked with a couple of higher-level program languages, let ’ s take it one pace lower with Java. Unlike JavaScript and Python which execute source code in real time using an interpreter, Java is a roll up language. This means a compiler is used ( alternatively of an interpreter ) to convert Java source code into a form the calculator can understand. Most compilers generate one or more feasible files made up of machine code that are ready to run on the specific operating system and hardware platform they were compiled for. But Java is slightly particular in that it compiles the Java source code into an intermediate class called bytecode. This is different than the machine code that most early compiled languages produce. Java bytecode is intended to be executed by something called the Java Virtual Machine (JVM). You can think of the JVM as a program that you install on your calculator, which allows you to run Java programs by executing Java bytecode. When people talk about `` whether or not Java is installed on a calculator, '' they are normally asking whether or not the JVM is installed on the calculator. The JVM serves a similar function to the interpreters we discussed in previous chapters. But rather of taking informant code ( which is stored in .java files ) as an input, it takes compiled bytecode. The benefit of this apparatus is that it allows bytecode compiled on detail operating systems and platforms to be executed by a JVM on any other platform. For exercise, think we have a file of Java code that was written and compiled to bytecode on a calculator running the Windows function system. This bytecode can be executed ( that is, the program can be run ) by a JVM on any platform, including Windows, Mac OS, Linux, and so on. This is not the case with most compose executables in other scheduling languages, which can only execute in the environment which they were compiled for .

Variables and Assignment in Java

One major deviation between Java and the languages we have seen so far ( Python and JavaScript ) is that Java is a statically typed language. This means that the data types of our variables must be known and established at the time the platform is compiled. Each time we create a variable in Java code, we need to explicitly specify the data type of that variable, such as an integer, string, and sol on. This is called variable declaration. once we declare a variable ’ s data type, it can only hold that type of data throughout the performance of the program. This is very different from JavaScript and Python, where variable data types are established during program performance, besides known as run time. Languages like JavaScript and Python are therefore refer to as dynamically typed languages – we don ’ deoxythymidine monophosphate explicitly state variable data types in our reservoir code and can well reassign a variable to any character on the fly. In Java, we create variables using this syntax :

Datatype name = value;

here the Datatype is the character of data that the variable will store, such as Integer, String, and so on. adjacent, the name represents the list of the variable we are defining so we can use it in our code. The value is the actual value we are assigning to the variable star. Note that like JavaScript, all Java statements end in a semicolon .

Data Types in Java

In Java, the basic built-in data types are called the primitive data types and they will look very familiar based on what we have seen in higher-level languages like Python and JavaScript. The chief archaic types are :

  • Integer int: Stores whole numbers between −2,147,483,648 and 2,147,483,647.
  • Float float: Stores decimal numbers between 3.4x10^−038 to 3.4x10^038.
  • Boolean bool: Stores one of the two boolean values true or false.

note that there are a few other primitive types ( abruptly, long, byte, and double ) that we won ’ thymine be covering here since they aren ’ deoxythymidine monophosphate used angstrom much as the others. here is how we initialize these data types : integer : int x = 100; float : float pi = 3.14; char : char middleInitial = 'T'; boolean : bool isHuman = true; I do want to reiterate that once the data type of a variable is declared, that variable can only hold values of the specified datum type. For exercise, an error would be thrown if our program tried to store a character value inside a variable that was declared to be an integer. We can ’ thymine assign the character 'S ' to the integer variable ten in the previous model. The future datum character we ’ ll hash out is the string – a sequence of characters, numbers, or symbol represented as textual data. Strings in Java are a non-primitive data type, which means they are built up from smaller parts. To declare a bowed stringed instrument variable we use the String data type and place the assigned value in double-quotes :

String name = "Harry Potter";

Program Flow Control Statements in Java

Like JavaScript, Java uses curly braces to define code blocks for if statements, loops, and functions. We ’ ll examine the same program control statements as in the former chapters and update the examples to use the Java syntax .

If / Else Statement

here is the Java if/else statement that mirrors the examples in the former sections :

int x = 10;

if ( x > 5 ) {
    System.out.println("X is GREATER than 5!");
} else {
    System.out.println("X is NOT GREATER than 5!");

This basic if exemplar is about identical to the JavaScript version. The only differences are we declared the datatype of ten to be int and we using System.out.println() rather of console.log() to print out our message. future, we ’ ll move on to loops in Java. Since Java and JavaScript syntax are quite similar, the while iteration in Java is basically the like as we saw in JavaScript :

int x = 1;

while ( x <= 100 ) {

    System.out.println("This is a very important message!");
    x = x + 1;

This while loop topology will print out the stipulate message 100 times. This concludes our sections on specific scheduling languages. It may have been a spot insistent since we covered the same set of concepts in 3 languages, but hopefully this helped hammer in these basic but fundamental ideas. now we 'll round out this article with a few in-between topics that you might not otherwise startle learning right away. We 'll talk about an necessity collaboration cock called Git. then we 'll learn to store and access data in a database. following we'l concisely touch on Web development frameworks, and ultimately we 'll shed some unhorse on package managers .

11) Track Your Code Using Git

Git is the most popular Version Control System ( VCS ) in use today. It allows multiple developers to collaborate on software in concert. In this section we ’ ll learn what Git is, how it works, and how to use its basic commands. Before jumping straight into Git, let ’ s human body out some concepts coarse to most programming projects. The wide typeset of directories and files that make up a software stick out is called a codebase. The project root is the highest-level booklet in the undertaking ’ s directory tree. Code files can be included directly in the plan root or organized into multiple levels of folders. When the codebase is ready for testing or deployment it can be built into the plan that will run on your calculator. The build process can include one or more steps that convert the code written by humans into an feasible that can be run on your calculator ’ second serve chips. once the code is built, your plan is quick to run on your specific operating system, such as Linux, Mac OS, or Windows. Over clock time, developers update the project code to add fresh features, repair bugs, follow through security updates, and more. In general, there are three ways developers can make these changes to a software project :

  1. Add new files and folders to the project
  2. Edit the code in existing files and folders
  3. Delete existing files and folders

As projects grow and raw features are added, the count of files and folders ( a well as the total of code within them ) increases. large projects can grow up to hundreds of thousands of files containing millions of lines of code. To support this growth, the numeral of developers on large project teams typically increases. Large software projects can have hundreds or even thousands of developers all working in tandem. This begs the question : `` How the heck do all these developers, who may be geographically spread out all around the global, keep track of their software project code in such a way that they can work together on a unmarried project ? '' Development teams need a way to keep racetrack of precisely what changes were made to the code, which files or folders were affected, and who made each change. Each developer besides needs to be able to obtain updates from all early developers. This process is called versioning or version control. Developers use special tools called Version Control Systems (VCS) to track, do, and share the versions of software projects. here are a few popular version control condition systems that are actively used these days :

  • Git
  • Subversion (SVN)
  • Mercurial (Hg)

however, Git has won the crown as the go-to VCS of the day. It is by far the most popular VCS in function by politics, commercial, and open-source communities worldwide. Git forms the core of democratic web-based VCS platforms like GitHub and Bitbucket. Git is an essential tool for any all-around developer to add to their skill set .

Basic Git Commands

Git creates and stores information about our software projects in something called a Git repository. A Git repository is good a hidden booklet on your calculator that Git uses to store data about the code files in a software project. Each software project we work on typically has its own Git repository for storing information related to that project. This room, code related to different projects on a single calculator can be tracked individually. There are two main ways to create a Git repository on your computer. The first is to create a trade name fresh Git repository in an existing folder on your file organization. To do this, just open up the Command Line, create a new folder somewhere convenient like on your Desktop, and crop into it :

cd ~/Desktop

mkdir testgit
cd testgit/

now that we created a new folder and browsed into it, we can initialize a new Git depository using the dominate :

git init

You should see some output exchangeable to the follow :

Initialized empty Git repository in /Users/me/Desktop/testgit/.git/

All of the Git commands we ’ ll run start with the word git followed by a space and then the specific Git command we would like to run. sometimes we ’ ll lend flags and arguments after the Git commands equally well. The git init command creates a hidden folder called .git in the current directory. This booklet is the Git depository we mentioned above. You can see this by running the command ls -al. The irregular way to get a Git depository on to your computer is to download one from somewhere else, like Bitbucket or GitHub. Bitbucket and Github are websites that allow people to host clear source projects that can be downloaded to your computer. If you browse to a project you find interesting on Bitbucket or GitHub, you ’ ll see a clitoris labeled Clone. This release will provide you a command and URL that you can copy and paste into the command line terminal. It will look something like this :

git clone https://[email protected]/jacobstopak/baby-git.git

The git clone command downloads the depository from the specified URL into a new booklet on your computer. The URL can either be a web URL as in the exercise above or an SSH URL as follows :

git clone [email protected]:jacobstopak/baby-git.git

After running the rotter ringer command, you should see a newfangled folder created. If you browse into it, you ’ ll see all of the files and subfolders that make up the project you downloaded. The next command we 'll mention is git add . The git add control is used to tell Git which files we want it to track, and to add changes in already tracked files to Git 's staging area. once modern or changes files have been staged, they can be committed to the repository by using the dominate git commit -m "Commit message". This will store the changes in all arranged files in the Git depository. The git status and git log commands are handy for reviewing the current state of the working directory and the commit history of your project. We scantily scratched the surface here. Git has many more essential commands which are decidedly worth getting comfortable with .

12) Store Data Using Databases and SQL

A database is a program specifically designed to efficiently store, update, retrieve, and delete large amounts of data. In a nutshell, we can think of a database as a container for a set of tables. You have credibly worked with tables in Microsoft Excel. A postpone is equitable a rig of column and rows containing data. We can set up tables in a database to store the information that our programs need to work by rights. Whether we are writing programs in JavaScript, Python, Java, or some other lyric, we can tell our programs to interact with databases as needed. We can retrieve data from the database to display to our users on a network page. We can accept a web sign-up form from a drug user and storehouse that exploiter ’ mho information in a database for later use. Our programs can interact with databases in real-time as events transpire in our application. To do this, most databases speak a lyric called SQL, unretentive for Structured Query Language. SQL is a programming speech specifically created for databases. It allows us to tell databases what to do. A collocate of SQL code is called a query. We can write SQL queries to fetch the data we need at a detail meter or to insert raw data into a specific table. approximately speaking there are two main types of SQL queries : read-SQL and write-SQL. A read-SQL question is one that merely fetches data from the database for us to see or use. It doesn ’ t change the data in the database at all. On the early hand, a write-SQL question either inserts newfangled data into a postpone, updates existing data, or deletes existing data. We ’ ll learn how to write some basic read-SQL queries in this section. Before writing a question, it helps to know what we are querying ! traditional databases contain tables made up of column and rows. When we write a read-SQL question, our goal is normally to retrieve a subset of those rows and column. For exemplar, let 's say we have a postpone called PERSON with 4 columns, FIRST_NAME and LAST_NAME. We can use the follow question to select all the datum from merely the FIRST_NAME column :


The SELECT keyword tells the database that we want to retrieve data. It is followed by the appoint of the column – FIRST_NAME – that we want to get. then we use the FROM keyword to tell the database which table we want to get the data from, in this case, the PERSON table. besides, note that all SQL commands are terminated by a semi-colon. One of the most coarse requirements we have with data is to filter it. Filtering means restricting the result set based on a specify condition. For example, we might entirely want to select rows from the PERSON board for people who are named `` PHIL ''. We can apply filters in SQL queries using the WHERE keyword :


This question would return all columns in the PERSON mesa since we used an star * in the SELECT clause alternatively of listing particular column names. only rows in the PERSON table where the FIRST_NAME is set to `` PHIL '' would be retrieved. last, we ’ ll talk about sorting. There are many times when we ’ d like to see our question results sorted in a finical arrange. We can use the ORDER BY clause for this :


This will return all columns in the PERSON table sorted alphabetically by last name. By nonpayment, the results will be sorted in ascending order, from A to Z. We can add the optional ASC or DESC keyword, to specify whether to sort in ascending or descending club :


13) Read About Web Frameworks and MVC

frequently, we ’ ll find ourselves writing code for very park types of applications. Web applications ( or web apps ) are applications that rely on the Internet in ordain to officiate. Webapps are some of the most normally created types of software applications. A web app is basically a more functional and robust adaptation of a web site. Most web apps implement some backend code that resides on a web server and performs logic behind the scenes to support the application ’ randomness functionality. park scheduling languages to use for a web app ’ s backend code include Python, Java, and JavaScript, among others. Some functionalities common to most vane apps include :

  • Providing a convenient way to dynamically alter content on web pages
  • Performing secure user authentication via a login page
  • Providing robust application security features
  • Reading and writing data to a database

A vane framework is a set of code libraries that contain the common functionalities that all web apps practice out of the box. Web frameworks provide a system for developers to build their applications without having to worry about writing the code for many of the behind the scenes tasks common to all web apps. We only need to utilize the parts of the framework that meet the needs of our web app. For case, if we don ’ t need to connect to a database in a detail web app, we can just ignore the database features and use the other features that we do need. We still have the full ability to customize the network pages that make up our application, the user flow, and the clientele logic. You can think of a world wide web framework as a program tool suite that we can use to build web apps. Each programming language we covered in this article has one or more popular web frameworks presently in use. This is great because it gives exploitation teams the flexibility to use the framework of the lyric that they are the most adept in. Java has the Spring Framework that 's made specially convenient via Spring Boot. Python has the Django Framework. JavaScript has the Node.js runtime environment with the multiple framework options including Express.js and Meteor.js. These frameworks are all free and open-source .

14) Play with Package Managers

The final examination topic that we ’ ll cover in this guidebook is the package manager. Depending on the context, a package can either represent a standalone program that is ready to install on a computer or an external code library that we want to leverage in one of our software projects. Since our applications much depend on these external code libraries, we besides refer to them as dependencies. A software director is a program that helps us maintain the dependencies of a system or software project. By `` uphold '' we mean installing, updating, list, and uninstalling the dependencies as needed. Depending on the context, the package managers we ’ ll discus can either be used to maintain the programs we have installed on our operating systems or to maintain the dependencies of a software project .

Mac OS X: Homebrew

Homebrew is the most popular software coach for the Mac OS X operating organization. It offers a convenient way to install, update, track, number, and uninstall packages and applications on your Mac. many applications that can be installed via downloaded .dmg files can besides be downloaded and installed using Homebrew. here is an exercise of installing the wget package via Homebrew :

brew install wget

Linux: Apt and Yum

Since Linux was built around the Command Line, it ’ second no surprise that box managers are the default option way to install programs. Most mainstream flavors of Linux ship with a built-in software coach. Advanced Package Tool (APT) is the native package coach for Debian and Ubuntu-based Linux distributions. Yellowdog Updater, Modified (YUM) is the native software coach for the RedHat Linux distribution. here is an example of installing Vim using APT :

sudo apt-get install vim

And using Yum :

sudo yum install vim

JavaScript: Node Package Manager (NPM)

now that we have seen how some OS-level box managers work, let ’ s take a attend at some programming language-specific package managers. These can help us manage the software libraries that many of our coding projects depend on. Node Package Manager (NPM) is installed by default option with Node.js. One difference between NPM and the former package managers we have seen is that NPM can be run in local or global mode. local mode is used to install a package alone within a particular project/directory we are working on, while ball-shaped mode is used to install the software on the system. By nonpayment, packages are installed locally, but you can use the -g pin to install a box globally :

npm install request -g

Python: Pip

Python besides has a package director called Pip. Pip may already be installed on your system as it comes prepackaged with recent versions of Python. Pip allows us to easily install packages from the Python Package Index using the pip install command :

pip install requests

Java: Apache Maven

Apache Maven ( normally referred to as merely Maven ) is a free and open-source creature suite that includes dependence management. Maven is by and large used for Java projects although it does support other languages as well. Maven custom is a bite more complicate and it can do a draw of things, so we wo n't get into the weeds hera .


In this article, I introduced a set of necessity gull concepts and tools with the intention of presenting a bird ’ s eye view of software exploitation that I wish I had when I started learning to code. I covered topics including the Internet, respective programming languages, version control systems, and databases with the goal of describing how these pieces of the perplex fit together .

Next Steps

If you enjoyed this article, I wrote a book called the Coding Essentials Guidebook for Developers which has 14 chapters, each covering one of the topics discussed in this post.

In the record I go into flush more depth on these 14 subjects, so that might be a good resource for you to check out if you got value out of this article. After reading this, you may feel string to a especial linguistic process, tool, or concept. If this is the case I encourage you to dive deep into that area to further your memorize. If you have any questions, suggestions, or concerns about this koran, I would love to hear from you at jacob @ .

Related Posts

Leave a Reply

Your email address will not be published.