How to learn programming
How to learn programming
How to Learn Programming?
Do you want to learn programming in 2020??… Do you want to build a website like Facebook, Twitter, Instagram or something like WhatsApp?
You are really excited about these websites or apps and decide to learn to code. You want to build next Facebook, Instagram or any other favorite application. So what approach you will follow to build these kinds of the website?
The most common approach which most of the people follow is…You buy some programming related books which some blog post or website has recommended or you go to some courses or tutorials on youtube (or any other resources) to start learning to code. You also enjoy and love it initially watching that tutorial and you feel like you are learning a lot of cool concepts and new things about programming. Well, That can be really good for a short period of time but what happens with most of the newbie programmers is…they get overwhelmed with so many concepts and get stuck in one tutorial to another tutorial. It becomes more problematic and frustrating for them when they are asked to start a real-world project on their own without any help. They don’t get logic, they don’t understand where to start, how to solve a specific problem or how to build some specific module on their own.
Yes, that’s correct… so how to learn to code, what’s the best approach to learn programming…?
Well, most of the beginners face this problem in coding. Tutorials are fantastic and it teaches a lot of concepts or different approaches in coding to build something but when you start working on some real-world project you feel dissatisfied because you are unable to use all those concepts in your project. So the best advice to learn programming in 2020 is follow the project-based learning approach. Build as many projects as you can to strengthen your problem-solving skills in programming. Remember that programming is not about learning a language (Python, C++, Java, etc.), it is the ability to solve the problems. Also in a job, an employer needs a problem solver so, during interviews, your problem-solving skill comes first before anything else.
So how to build the problem-solving skill while learning to code? tell me the steps I should follow to learn programming…
Let’s discuss the steps to learn programming and some tips to build problem-solving skills…
1. Choose a Language and Understand the Basic Fundamentals Concepts
A lot of beginners skip the fundamentals and jump directly to the shiny tools and technology. That’s not going to work in interviews or building any kind of project. You will become more confused and distracted if your fundamentals are not clear. So firstly choose the programming language you are most comfortable with (Python or C++ is good still it depends on your end goal) and understand the syntax and basic concepts (variables, conditionals, operators, loops, etc).
Make programs and build the basic foundation using your favorite language. If you are in college then colleges are good in teaching the basic concepts else you can take the help of the internet. GeeksforGeeks, Codecademy, HackerRank etc. are good to build the basic fundamentals. Below are some useful tips to follow when you start with fundamentals. This will also build your problem-solving skills.
2. Learn Data Structure and Algorithms
Data Structure and Algorithms are the heart of programming. Once you are comfortable with any of the languages and making some basic programs, the next thing you should do is learning data structures and algorithms. You will get better at building your problem-solving skills if you understand the fundamentals of data structure and Algorithms. Understand that not all the data structures can be used everywhere so for any kind of problem firstly you need to implement an algorithm which is a step by step process to solve a specific problem and then you need to choose the right data structure to solve the problem. A right combination of data structure and algorithm is really important in solving the problems.
Learn to implement the data structures and algorithms, practice it in your programming language every day. GeeksforGeeks is good for beginners to start with practicing the problem on data structure and algorithms. Below are some useful tips to follow while learning these two fundamentals.
3. Build Projects
Like we have already mentioned that when it comes to building a project on your own most of the newbie programmers get stuck. You feel like all the tutorials or exercises are just a waste of time because that’s not helpful in your own project. You retain a lot from tutorials but it’s just going right over the head and now you are unable to apply all the concepts and logic in your project… Relax!
Initially try to build a small project or static website first, it can be your own portfolio, a web application, android application or any kind of game. It’s better to start with some simpler projects and then moving on to the complex projects. You can try to build or start something like I am TK site. A lot of beginners don’t understand what they should include in their projects. So here is the example.
If you want to make an eCommerce site start with building small features. You can start from signup or login form, then you can move to the next feature such as the navigation bar. So instead of doing everything at once analyze the whole project and break that in smaller problems or chunks. It depends on your project complexity, which features you need to build first. Initially, you will be making a lot of mistakes and you will face a lot of problems but that’s how you will learn to build and handle the complex projects. Below are some useful tips you should follow while making a project.
4. Explore
Your journey doesn’t end when you are finished with your project. Explore more, explore as much as you can in the computer science field. Computer Science is a vast and rich field so analyze what fascinates you the most. You can explore different fields such as Machine Learning, Cloud Computing, Systems Programming, Mobile App Development, Blockchain, Virtual Reality, Web Development, etc. There are a lot of projects on Github and a lot of resources available on the internet. As per your interest, you can find some tutorials or projects on the internet. Learn from there and try to make some projects on it.
Check the different approaches and methods of other developers. Make a habit to read code on GitHub or StackOverflow. You will find multiple ways to solve a single problem. Adapt the best practices to solve the problem in programming. Join some online tech community, contribute to open source projects or participate in some contest. If you are a student participate in ACM – ICPC or GSoC. The more you explore and practice the better programmer you will become.
How to Learn Programming: 5 Steps to learn to Code
How to Learn Programming: Programming is one of the most resourceful and highest paying skills you should have as a millennial.
If you are good at programming, there will be abundance of opportunities for you.
If you are a beginner and struggling through your programming journey, then this article is for you.
Most of us don’t know the proper way to learn to code.
Therefore, they get confused and struggle to grasp the basic concepts of a Programming Language.
Today, we will go through the 5 step process which will guide you and pave the way for you to make your programming experience much better.
Here are the 5 Easy to follow Steps to Learn Any Programming Language:
Table of Contents
1. Ask Yourself Why You Want to Learn Programming
The first step in learning Programming is to ask yourself why do you want to learn it.
This is the most important and underestimated step in learning Programming.
If you do not have a good and substantial reason for Programming, then probably you will lose motivation and quit very easily.
You should have a substantial reason for learning Programming.
Whether you want to make an app, website, software or you want to crack a coding interview or you just want to score good marks in your class.
It should be good enough to drive you towards your goal.
2. Choose the Programming Language
The next important step is to choose your Programming Language. You should wisely choose the programming language you want to learn.
The programming language you choose should be based on many factors. Like – It’s popularity, future scope, and much more.
We have sorted the list of top Programming Languages you should learn, which will have the highest scope in the future.
If you are a beginner and starting into Programming, then C or C++ is best for you. As it will make your computer fundamentals much clear.
With C and C++, you will know how the memory actually works and how to efficiently perform memory management.
In C++, you will learn a lot about object-oriented programming.
Most colleges and universities also teach C and C++ as their first Programming Language.
It is a common say, that if you can learn C++, then you can learn any Programming Language.
Best Course for learning Python: Python for Everybody Specialization
How to Learn Programming?
Table of Contents
As you might already know, people write software or applications to optimize the use of these computers. With all this popularity comes a massive demand for the people who can write or code those applications that can run on these computers. This has created an opportunity for everyone to learn to program and use that skill in almost every industry they work in.
This article discusses how to learn to program languages and the right way to begin the journey. It primarily covers the following pointers:
Full Stack Java Developer Course
Learn Programming Fundamentals
The first step to learning programming is to identify the programming language you’d want to learn. This step involves deciding which platform you are most interested in developing an application for. I have enlisted below the programming languages that I suggest you go for when choosing one:
If you haven’t chosen a field yet, we recommend that you start with Python, since it is relatively easy to learn than the other languages.
There are several ways to learn the language of your choice:
Through Online Courses and Tutorials
В Focus on courses that start from the basics of a programming language. Because in the end, concepts should be clear so you can grasp any language you want to learn and gain proficiency in that language. Simplilearn offers a variety of courses that focus on beginner. You should check them out for a better understanding.
Through Books
Books are an excellent source for understanding theoretical concepts about programming languages. But since the languages are updated every so often, it is hard for the readers to keep up with all the additional language features. Moreover, online tutorials are much more interactive and offer just a bit more motivation.
Learn Data Structures and Algorithms
Data Structures and Algorithms are integral to and at the centre of computer programming. Computer stores everything in memory, and you need to understand the process. Different kinds of data structures hold different data types, and the algorithms help store and retrieve data efficiently from data structures. The right data structure-algorithm combination can provide a massive boost to an application’s performance.
Take a look at few pointers on learning data structures and algorithms:
After you have learned all the basic concepts of programming and the data structures and algorithms, you should definitely think about building a project that will further help cement the knowledge you’ve just gained. The projects will also help you in the interview process because you will know how to apply what you learned, and that’s what matters.
Full Stack Web Developer Course
Build Projects
As we just discussed, building your projects is the best way to analyze what you have learned. Building a project provides you with the much needed hands-on experience of a particular programming language. You’d have to implement the concepts that you learned earlier in the tutorials, and you might get stuck at some point, but that’s what makes you a better programmer than everyone else.
There is a common question in every starter’s mind, “How should I choose a project?”. To avoid that confusion, you may go through the following pointers:
By now, you should ideally have a few projects in your portfolio, with a clear understanding of programming concepts and data structures and algorithms. That makes you a perfect candidate for a software development role in the industry.
Explore Opportunities
Your journey doesn’t end when you finish your project; instead, it has just begun. Now that you are aware of essential theoretical concepts and practical implementations, it is time to search for opportunities. Because there are too many, you just need to get into a role that fascinates you the most.
Here is the average salary of a software engineer in the US: (source: Glassdoor)
Fig: Software developer salary in the US
Here is the average salary of a software engineer in India: (source: PayScale)
Fig: Software developer salary in India
That brings us to the end of this guide to learn to program. Are you ready to dive into the software development field? We have excellent YouTube playlists covering everything from the basic programming concepts to advanced software development frameworks. Don’t forget to check those out!
Learn top skills demanded in the industry, including Angular, Spring Boot, Hibernate, Servlets, and JSPs, as well as MVC, web services, and SOA to build highly web scalable apps with theВ Full Stack Java Developer Masters Program.
Get Ahead of the Curve and Become a Software Developer Today
If you are wondering how you can get the skills necessary to enter this immensely popular tech industry, we’d suggest you enroll in a comprehensive Java Full Stack Developer Masters’ Program. To gain all the practical, work-ready skills, you need to become employable in the field immediately upon completion. If you are looking for additional information before enrolling in a program, check out our YouTube video that provides a quick introduction to programming or coding.
We hope this article on “How to Learn Programming” was helpful for you. Do you have any specific questions for us? Mention them in this article’s comments section, and we’ll have our experts answer them for you at the earliest!
Find our Full Stack Java Developer Online Bootcamp in top cities:
Name | Date | Place | |
---|---|---|---|
Full Stack Java Developer | Cohort starts on 24th Aug 2022, Weekend batch | Your City | View Details |
Full Stack Java Developer | Cohort starts on 26th Aug 2022, Weekend batch | Your City | View Details |
Full Stack Java Developer | Cohort starts on 31st Aug 2022, Weekend batch | Your City | View Details |
About the Author
Taha is a Research Analyst at Simplilearn. He is passionate about building great user interfaces and keeps himself updated on the world of Artificial Intelligence. Taha is also interested in gaming and photography.
Recommended Programs
Full Stack Java Developer
Post Graduate Program in Full Stack Web Development
*Lifetime access to high-quality, self-paced e-learning content.
How to Learn R Programming
Recommended Resources
The Ultimate Guide to Top Front End and Back End Programming Languages for 2021
Best Programming Languages to Learn in 2022
The Complete Guide to Learn the Difference Between Coding Vs Programming
Getting Started With Low-Code and No-Code Development
Top 10 Reasons to Learn JavaScript in 2022
The Top 10 Reasons to Learn C++ Language in 2022
How to Learn Programming: Approaches, Bootcamps and Courses
Table of Contents
With every chore being digitized and becoming smart with AI technology, learning to code has become the need of an era. There are some subtle differences between coding and programming, but either way, it is an important skill to have.
Getting an Uber, shopping online, streaming movies — all of these involve coding and programming. Here, we discuss how to learn the programming language of your choice and the correct way to begin your programming journey.
How to Learn to Code
Before we begin, you have to note that learning programming demands patience and motivation — and above all never giving up despite the challenges on the way. With that out of the way, let’s start learning about the fundamentals of programming.
Learn Programming Fundamentals
The first step is to choose a programming language to learn. Python is a good choice for beginners as it is English-like and easy to learn. You can check out some of the best Python tutorials to get started.
But you may also choose languages that interest you or based on a project that you would like to develop. So if you plan to develop a mobile app, you may want to begin with Java or Kotlin for Android and Swift for iOS respectively. If you want to build a website, choose Javascript.
For data science, AI & ML, Python & R are the languages to study. There are primarily two ways to learn programming languages. But in both cases, you will have to spend a lot of time coding — there’s no way to avoid that.
1. Through Interactive Websites
Websites like Codecademy and Freecodecamp are good choices for interactive coding sessions. These were built with the idea that many beginners are stuck at the beginning — when they start to learn to code while setting up the development environment. These websites offer online text editors and compilers to begin coding instantly.
2. Through Video Tutorials
If you like detailed instructions with step-by-step guidance, then we recommend enrolling in any online programming tutorial. Some tutorials and courses also offer certifications that could help when you apply for a job. We recommend Pluralsight and Lynda for beginner tutorials. Of course, you may also want to check out the top-rated tutorials on Hackr.io.
Focus on Learning Programming Basics
Build Your First Project
Building a personal project is the best way to understand what you have learned. This gives you a practical learning experience and gets your hands into the debugging process. Add your projects to your profile or your GitHub account, as this helps when you look for a job in development.
So how do you choose a programming project?
How Should I Choose a Project?
This is where most people get stuck at the deciding stage, but the solution is fairly simple.
1. Choose What Interests You
Whether it comes to studying or coding you must do what interests you the most. You must enjoy the project area you choose so that you are passionate about it and it keeps you engaged until it is built.
If you choose something that is not of your interest you may end up giving up your project in the middle as you might eventually lack interest in it. For that reason, you should pick a project that is related to something you have a passion for.
For example, if you like playing games, then you might just want to develop a simple video game. If you are an amateur photographer or artist, you might want to build a portfolio website that showcases all of your artistic work.
2. Start With Something Simple
Being confident about your capabilities is good, but being overconfident is not. Start with simple and easy projects to explore the language before you dive into building complex projects.
For example, if you choose to build a video game do not attempt a complex one. Instead, begin with something like tic-tac-toe.
3. Build Something Useful for Yourself and a Community
Build something that is useful for you and interests a community at the same time. This gives you an opportunity to have several downloads or viewers and this way you can demonstrate your skill, and have an edge over other candidates.
For example, you could build a finance application that makes it easier to monitor and handle investments, a script that automatically tells us when an item is back in stock, a web app that helps you increase productivity, and much more.
Some Starter Ideas
If you’re still having trouble, we’ll give you a few ideas for inspiration. You could begin with a simple website that offers a to-do list. If you want to make a game app, then games like Tetris and sudoku are good places to start.
Feeling Stuck?
It is inevitable that you will get stuck at some point when programming. This could be anything from getting errors, your program crashing without any message, or even your code executing fine but not generating the output you desire. You will get frustrated but don’t give up!
Stay motivated, and use these tips to continue working on your project.
1. Learn to Google the Error Correctly
This is a crucial step that you must master. Searching and surfing the error of your code would help you correct your code within a few minutes. One good tip is to put the error generated by your compiler in double-quotes (“ ”) before searching on Google. This way Google would specifically target the error as the same sentence.
2. Popular Websites to Guide You
Websites like Stack-Overflow and Reddit top the charts here to guide developers around the world with their code. You should also answer questions that others have posted and this helps you learn too.
3. Events and Meetups
This step might be difficult to start with as it requires you to leave your comfort zone but it makes a tremendous difference. Start by looking for people who have similar interests and try to learn from and work with them. You could try searching for “coding events” in your area or visiting a meetup site.
Get a Job or an Internship
Finally, many learn programming languages to start a career. When you are confident enough or believe that you know some basic programming, you may want to step into the development industry by starting with an internship. Working as an intern gives you an opportunity to learn and enhance your skills, and sometimes even get paid.
You can find an internship opportunity through LinkedIn, career fairs, and networking.
Computer Science Degrees or Bootcamps: Which is Best to Learn to Program?
Bootcamps are a common thought for those starting their coding journey. The truth is that it entirely depends on the person and their learning capability.
If you are a high school student who is yet to enroll in college, then a degree in computer science might be better. If you’re much older, then you might want to go for a bootcamp in a programming language of your choice.
Online courses are free and are available for all programming languages. Beginners may want an easier language, so you might want to look at something like the best Python courses online.
It’s best that you begin with an online course to get a flavor of coding first before spending on a bootcamp, as they are often expensive. If you’re really interested in bootcamps, here’s our list of the best coding bootcamps in 2022.
Conclusion
Hopefully, you now have the knowledge you need to begin learning and coding your first project. We at Hackr.io have shortlisted the best courses for almost all the programming languages that you might want to check out.
Do you have other tips that you would like to share with others in the programming community? Let us know below.
Frequently Asked Questions
1. How Do I Start Learning Programming?
By simply trying to code a simple project. You can view documentation, written educational resources, YouTube videos — anything that helps you actually code. It’s as simple as that. You can google beginner coding projects in the language of your choice or check the ones listed above.
2. Can I Learn Programming by Myself?
Absolutely, and many have done just that. All you need is a willingness to learn, patience and perseverance, and the ability to do research online.
3. What Age Should You Start Coding?
As young as possible, because it’s not very difficult to get started. Coding has so much potential both in terms of offering career opportunities and working your brain. Most children have some familiarity with computers anyway, so perhaps the age of 8 or so would be ideal.
But remember, there are many well past 50 who are just learning to code — age is no barrier!
Abhimanyu Krishnan
With a bachelor’s degree in Information Technology, Abhi has experience with several programming languages, including Python, JavaScript and C++. He is also an expert on blockchain technology and its development, having worked in the industry for several years. View all posts by the Author
How to Learn Programming – The Guide I Wish I Had When I Started Learning to Code
Just the thought of learning to code can be very intimidating. The word code is mysterious by definition. It implies a technical form of communication that computers, and not humans, are meant to understand.
One way many people start learning to code is by picking a popular programming language and jumping in head first with no direction. This could take the form of an online coding course, a tutorial project, or a random book purchase on a specific topic.
Rarely do prospective developers start with a roadmap – a bird’s eye view of the coding world that outlines a set of relevant programming concepts, languages, and tools that almost 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 tool – 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 almost 20 years.
Part of the reason it took me so long to feel comfortable as a developer is that I would learn about specific topics without a broader context of the coding world.
Each of the steps in this article discusses a «coding essential» – something that I believe is critical to at least know that it exists at the start of your coding journey.
One final note before listing the steps in the roadmap: of course reading this article will not make you an expert programmer. It isn’t meant to. The purpose of this article is to make you aware that each one of these topics exists, and hopefully give you a basic idea of how each one works so you can build on it intelligently going forward.
14 Step Roadmap for Beginner Developers
Without further ado, let’s start at the top!
1) Familiarize Yourself with Computer Architecture and Data Basics
One of the wonderful things about modern programming languages is that they enable us to create fancy applications without worrying about the nitty-gritty details of the hardware behind the scenes (for the most part).
This is called abstraction – the ability to work with higher-level tools (in this case programming languages) that simplify and narrow down the required scope of our understanding and skills.
However, that doesn’t mean it’s useless to know the basics of the metal that your code is executing on. At the very least, being aware of a few tidbits will help you navigate workplace conversations about high CPU and memory usage.
So, here is a bare minimum of computer architecture basics to get you started:
Your computer’s most important parts live on microchips (also known as integrated circuits).
Microchips rely on an electrical component called a transistor to function. Transistors are tiny electrical switches that are either off (0) or on (1) at any given time. A single microchip can contain millions or billions of tiny transistors embedded on it.
Most modern computers have a microchip called the Central Processing Unit (CPU). You can think of it as the computer’s brain. It handles most of the number crunching and logical tasks that the computer performs.
Each CPU has something called an instruction set, which is a collection of binary (zeros and ones) commands that the CPU understands. Luckily, we don’t really need to worry about these as software devs! That is the power of abstraction.
If the CPU is the logical center of the brain, it is useful to have memory as well to store information temporarily or for the long term.
Computers have Random Access Memory (RAM) as «working memory» (or short-term 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 directly with memory addresses using a feature called pointers, but this is rare in more modern languages.
Finally, we’ll touch on a component you’re surely familiar with – the hard drive. In our analogy of the brain, this represents long-term memory. A hard drive is an internal 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 exactly do we mean by the word data?
At a high level, we think of things like text 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 chip (like a CPU or RAM chip) has no idea what an «image» or a «video» is.
From a chip’s perspective, all of these structures are stored as long sequences of ones and zeros. These ones and zeros are called bits.
2) Learn How Programming Languages Work
In the previous section, we mentioned that most computers rely on a CPU, and a CPU can understand a specific set of instructions in the form of ones and zeros.
Therefore, 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 form like this are called machine code.
Sounds horrible to work with, doesn’t it? Well it probably is, but I wouldn’t know since I mostly use higher-level programming languages like JavaScript, Python, and Java.
A higher-level programming language provides a set of human-readable keywords, statements, and syntax rules that are much simpler for people to learn, debug, and work with.
Programming languages provide a means of bridging the gap between the way our human brains understand the world and the way computer 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 language you choose, we say that your code is either compiled or interpreted into machine code capable of being executed by your CPU. Most programming languages include a program called a compiler or an interpreter which performs this translation step.
Just to give a few examples – JavaScript and Python are interpreted languages while Java is a compiled language. Whether a language is compiled or interpreted (or some combination of the two) has implications for developer convenience, error handling, performance, and other areas, but we won’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 global collection of connected computers. In other words, it is a global network. Each computer in the network agrees on a set of rules that enable them to talk to each other. To a computer, «talking» means transferring data.
As we discussed in the previous section, all types of data – web pages, images, videos, emails, and so on – can all be represented as ones and zeros.
Therefore, you can think of the Internet as a very large set of computers that can transfer ones and zeros amongst themselves, in a way that preserves the meaning of that data. The Internet is nothing more than a digital conversation medium.
If the Internet is just a big conversation arena, let’s define the conversation participants.
First, an analogy: most human conversations require at least two participants. In most cases, one person initiates the conversation and the other person responds, assuming they are both present and available.
In Internet speak, the computer initiating the conversation is called the client. The computer responding or answering is called the server.
For example, let’s say you open a web browser and go to «www.google.com». In this scenario, your web browser is the client. By extension, you can also think of the computer you are working on as the client.
Google’s computer is called the server. It responds by sending the data required to display Google’s web page in your browser. And voilà! Google’s web page appears in front of your eyes. All Internet data transfers utilize this sort of client/server relationship.
4) Practice Some Command-Line Basics
The Command Line can be intimidating at first glance. It is often featured in movies as a cryptic black screen with incomprehensible text, numbers, and symbols scrolling by. It is usually associated with an evil hacker or genius techie sidekick.
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 same tasks that we are comfortable doing via a point-and-click mouse.
The main difference is that it primarily accepts input via the keyboard, which can speed up inputs significantly once you get the hang of it.
You can use the Command Line to browse through folders, list a folder’s contents, create new folders, copy and move files, delete files, execute 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 command line.
Once you open your terminal, a typical first question is «Where am I»? We can use the pwd command (which stands for «Print Working Directory») to figure that out. It outputs our current location in the file system which tells us which folder we are currently in.
Try it yourself:
How to Use the Command Line
If you’re on a Mac, open the Terminal app, which is essentially a Unix Command Line terminal.
If you’re running an operating system without a GUI (Graphical User Interface), like Linux or Unix, you should be at the Command Line by default when you start the computer. If your flavor of Linux or Unix does have a GUI, you’ll need to open the terminal manually.
By default, the active folder when opening the Command Line is the logged-in user’s home directory. This is customizable in case you want the convenience of starting in a different location.
For convenience, the home directory can be referenced using the tilde
character. We will use this in a few examples going forward.
Now that we know what folder we’re in, we can use the ls command to list the contents of the current directory. The ls command stands for «List».
Next, we can create a new folder using the mkdir command, which stands for «Make Directory». Below we create a new folder called «testdir».
The Command Line isn’t that useful if we can only stay in one location, so let’s learn how to browse through different directories in the file system. We can do this via the cd command, which stands for «Change Directory».
Next we’ll learn how to create a new empty file in the current directory.
Now we’ll copy that file from one folder to another using the cp command.
We can also move files instead 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 longer appear in the original location you created it, since it was moved not copied).
The mv command can also 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.
Finally, we can delete files and folders using the rm command.
Type rm cheese.txt and press to remove the file. Use ls to confirm the file was removed.
5) Build Up Your Text Editor Skills with Vim
At this point, 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, copy, move, rename, and delete files from the Command Line, we haven’t seen how we edit the content of text files in the terminal.
Working with text files in the terminal is important because computer code is nothing more than text saved in an organized set of files.
Sure we could use a fancy text editor like Microsoft Word (or more likely specialized code editors like Sublime or Atom) to write and edit our code, but this is not required. The terminal is often the most convenient place to write and edit code since we usually already have it open to run commands!
There are several excellent text 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 time-tested gem. Vim stands for «VI iMproved» since it is the successor to a tool 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 separate window to work in or use a mouse at all. Vim has a set of commands and modes that allow us to conveniently create and edit text content using only the keyboard.
Vim does have bit of a learning curve, but with a little bit of practice, the skills you learn will pay dividends throughout your coding career.
If Vim opens in your terminal and shows the version, you’re good to go! If not, you’ll need to install it on your system. (Note that you can quit Vim by typing :!q and pressing ). For more information on installing Vim, see https://vim.org.
It is such a good tutorial that there is no reason for me to waste time trying to explain it here. So go do the VimTutor, like now! See you in the next section.
If you still have 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 HyperText Markup Language – as the bones of a web page. It determines the structure of the page by specifying the elements that should be displayed and the order that they should be displayed in.
Every web page that you’ve ever 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 content, 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 mind is that HTML is not technically a programming language, although it is often referred to as «HTML code».
As we’ll see later, other programming languages enable us to write code that does stuff, such as running a set of instructions in sequence. HTML doesn’t do anything. We don’t 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 just data. It is data that defines what a web page should look like, nothing more.
So how do you write HTML? HTML uses a standard set of tags (basically just labels) to identify the available elements that make up a web page. Each tag is defined using angle brackets.
For example, the title tag is defined as My Page Title and the paragraph tag is defined as
A bunch of random text content.
Each HTML element is made up of a starting tag and an ending tag. The starting tag is just the tag label in between angle brackets, like this:
This opens the new HTML tag. The ending tag is essentially the same, but it uses a forward slash after the first angle bracket, to mark it as an ending tag:
Any text between the two tags is the actual content that the page will display.
Let’s cover a couple of the most common tags in use. The first is the tag. 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 additional information that the browser will use to understand the page. Most of the content in this tag is not displayed to the user. A corresponding tag defines the end of the HEAD section.
Next is the tag. All content inside this tag makes up the main content of the web page. Putting these four tags together looks something like this:
The simple HTML snippet above represents a simple web page with a title and a single paragraph as body content.
This example brings up a point we didn’t mention in the last section. HTML tags can be nested inside each other. This just means that HTML tags can be placed inside other HTML tags.
HTML provides many other tags to provide a rich set of content to web users. We won’t cover them in detail here, but below is a short list for reference:
: A paragraph of text starting on a new line.
: A page heading usually used for page titles.7) Tackle Some CSS
A web page without CSS – or Cascading Style Sheets – is like a cake without frosting. A frosting-less cake serves its purpose, but it doesn’t look appetizing!
CSS allows us to associate style properties such as background color, font size, width, height, and more with our HTML elements.
Each style property tells the browser to render the desired effect on the screen. Like HTML, CSS is not technically a programming language. It doesn’t 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 value of the style property we want to apply.
Here is an example of how these pieces come together to set the color and font size of a paragraph:
Let’s start at the beginning, before the curly braces. This is where the CSS selector goes. In this case, 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 targeted elements.
Here we find pairs of CSS properties and values, separated by a colon. The properties (in this case «color» and «font-size») are on the left. The values of these properties (in this case «red» «12px») are on the right. A semicolon ends each property/value pair.
You can probably see how this works. The snippets of CSS code above tell the browser to use red, 12px size letters for all the text placed inside
In this example, we are importing the CSS styles specified by the href attribute, in this case the file /home/style.css.
In the next 3 sections, we’ll (finally) dive into some more technical programming languages!
We’ll go over a general overview of JavaScript, Python, and Java, as well as walk through some of the essential coding concepts common to the 3 languages. We will compare and contrast the language features and example code so you can hopefully get a well-rounded understanding of the basics of all three.
8) Start Programming with JavaScript
Let’s start by answering the following question: if we can use HTML to build the structure of a web page and CSS to make it look pretty, why do we need JavaScript?
The answer is that we technically don’t. If we are happy with a static site that sits there and looks pretty, we are good to go with just HTML and CSS.
The keyword here is «static». If, however, we want to add dynamic features to our web pages, such as changing content and more complex user interactions, we need to use JavaScript.
What is JavaScript?
So what exactly is JavaScript? JavaScript is a programming language that was created specifically for websites and the Internet. As we mentioned in section 2, most programming languages are either compiled or interpreted, and programs are typically run in a standalone manner.
JavaScript is somewhat unique in this respect in that it was designed to be executed directly inside web 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.
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 practice.
9) Continue Programming with Python
Now that you’ve learned some basic JavaScript, it will be useful to jump into another programming language – Python.
Many programming languages provide a similar set of functionality, including variables, arithmetic operators, if/else statements, loops, and functions.
It’s helpful to see how different programming languages implement similar features. The concepts are usually very similar, but the syntax (the way the code is written) varies from language to language.
What is Python?
First we’ll cover a little bit of background information on Python. Like JavaScript, Python is a high- level programming language that prioritizes ease of development over the speed of execution.
In my opinion, Python is one of the best languages for beginners to learn. The syntax is clean and intuitive and it is a very popular language in the open-source and business spheres.
Earlier we talked about compiled languages versus interpreted languages. Python is an interpreted language. Each time we want to run a Python program, the Python interpreter actively processes your code and executes it line by line on your machine.
This is different than compiled languages, in which we would first use a compiler to process the code into a more optimized form (an executable), and then execute it later.
Unlike JavaScript, Python was not built to be run directly inside web browsers. Python was created to be a convenient scripting language – a language that can be used to write code for arbitrary tasks that usually execute on a user’s local computer.
Python code can be executed on any computer that has the Python interpreter installed on it. It is still a commonly used scripting language but is also used extensively for data science and server-side applications.
Variables and Assignment in Python
Like JavaScript, Python allows us to define variables. In Python we can simply use the equals sign to create and assign variables as needed:
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 also don’t need a semi-colon at the end of each line.
Python uses a set of syntax rules based off of whitespace and indentation. This removes the need for line terminating characters like the semi-colon, and block scoping using curly braces.
Data Types in Python
Python also has a set 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 essentially the same as their JavaScript counterparts, so we won’t repeat that information here.
In Python, booleans are very similar to those in JavaScript, except that the keywords True and False must be capitalized:
Program Flow Control Statements
Like in JavaScript, Python has as similar set of flow control statements, but with slightly different syntax.
If / Else Statement
This is the Python equivalent of the if/else example we saw in the JavaScript section:
In Python, we use the print() function for printing information to the screen.
There are two main differences between the Python code above and the JavaScript code we saw previously. Python uses a colon instead of curly braces to indicate the beginning of the if statement block.
In addition, the indentation of the print() function actually matters in Python. In JavaScript, the indentation or white space between statements doesn’t matter since JavaScript identifies code blocks using curly braces and identifies the end of a statement using a semi-colon. But in this Python example, there are no semi-colons and no curly braces!
That is because Python actually uses the white space and newline characters to identify the end of statements and code blocks.
The colon tells the Python interpreter that the if block is starting. The code that makes up the if 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 block. The next unindented line will signal the end of the if block.
While Loops
Next we’ll discuss loops in Python. The while loop in Python is essentially the same as we saw in JavaScript, but with the Python syntax:
The differences between this while loop and the JavaScript version are that:
We printed an additional message outside of the loop to show that unindented lines of code are not a part of the loop and won’t be repeated.
For beginner Pythonistas, I recommend taking a peek at the Zen of Python, which is a list of 20 rules-of-thumb for writing Pythonic code.
10) Further Your Knowledge with Java
Now that we’ve worked with a couple of higher-level programming languages, let’s take it one step lower with Java.
Unlike JavaScript and Python which execute source code in real time using an interpreter, Java is a compiled language. This means a compiler is used (instead of an interpreter) to convert Java source code into a form the computer can understand.
Most compilers generate one or more executable 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 somewhat special in that it compiles the Java source code into an intermediate form called bytecode. This is different than the machine code that most other 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 computer, which allows you to run Java programs by executing Java bytecode. When people talk about «whether or not Java is installed on a computer,» they are usually asking whether or not the JVM is installed on the computer.
The benefit of this setup is that it allows bytecode compiled on particular operating systems and platforms to be executed by a JVM on any other platform.
For example, imagine we have a file of Java code that was written and compiled to bytecode on a computer running the Windows operating 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 compiled executables in other programming languages, which can only execute in the environment which they were compiled for.
Variables and Assignment in Java
One major difference 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 program 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 so on. This is called variable declaration.
Once we declare a variable’s data type, it can only hold that type of data throughout the execution of the program.
This is very different from JavaScript and Python, where variable data types are established during program execution, also known as run time. Languages like JavaScript and Python are therefore referred to as dynamically typed languages – we don’t explicitly state variable data types in our source code and can easily reassign a variable to any type on the fly.
In Java, we create variables using this syntax:
Here the Datatype is the type of data that the variable will store, such as Integer, String, and so on. Next, the name represents the name 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. 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 main primitive types are:
Note that there are a few other primitive types (short, long, byte, and double) that we won’t be covering here since they aren’t used as often 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 data type.
For example, 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’t assign the character ‘S’ to the integer variable x in the previous example.
The next data type we’ll discuss is the string – a sequence of characters, numbers, or symbols 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 string variable we use the String data type and place the assigned value in double-quotes:
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 previous 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 previous sections:
This basic if example is almost identical to the JavaScript version. The only differences are we declared the datatype of x to be int and we using System.out.println() instead of console.log() to print out our message.
Next, we’ll move on to loops in Java. Since Java and JavaScript syntax are quite similar, the while loop in Java is essentially the same as we saw in JavaScript:
This while loop will print out the specified message 100 times.
This concludes our sections on specific programming languages. It may have been a bit repetitive 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 start learning right away.
We’ll talk about an essential collaboration tool called Git. Then we’ll learn to store and access data in a database. Next we’l briefly touch on Web development frameworks, and finally we’ll shed some light 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 together. 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 flesh out some concepts common to most programming projects.
The full set of directories and files that make up a software project is called a codebase. The project root is the highest-level folder in the project’s directory tree. Code files can be included directly in the project root or organized into multiple levels of folders.
When the codebase is ready for testing or deployment it can be built into the program that will run on your computer. The build process can include one or more steps that convert the code written by humans into an executable that can be run on your computer’s processing chips.
Once the code is built, your program is ready to run on your specific operating system, such as Linux, Mac OS, or Windows.
Over time, developers update the project code to add new features, fix bugs, implement security updates, and more. In general, there are three ways developers can make these changes to a software project:
As projects grow and new features are added, the number of files and folders (as well as the amount 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 number 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 world, keep track of their software project code in such a way that they can work together on a single project?«
Development teams need a way to keep track of exactly what changes were made to the code, which files or folders were affected, and who made each change. Each developer also needs to be able to obtain updates from all other developers.
This process is called versioning or version control. Developers use special tools called Version Control Systems (VCS) to track, manage, and share the versions of software projects. Here are a few popular version control systems that are actively used these days:
However, Git has won the crown as the go-to VCS of the day. It is by far the most popular VCS in use by government, commercial, and open-source communities worldwide.
Git forms the core of popular web-based VCS platforms like GitHub and Bitbucket. Git is an essential tool for any well-rounded 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 just a hidden folder on your computer 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 way, code related to different projects on a single computer can be tracked separately.
There are two main ways to create a Git repository on your computer. The first is to create a brand new Git repository in an existing folder on your file system.
To do this, simply open up the Command Line, create a new folder somewhere convenient like on your Desktop, and browse into it:
Now that we created a new folder and browsed into it, we can initialize a new Git repository using the command:
You should see some output similar to the following:
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 add flags and arguments after the Git commands as well.
The second way to get a Git repository 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 open 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 button labeled Clone. This button will provide you a command and URL that you can copy and paste into the command line terminal. It will look something like this:
The git clone command downloads the repository from the specified URL into a new folder on your computer. The URL can either be a web URL as in the example above or an SSH URL as follows:
After running the git clone command, you should see a new folder created. If you browse into it, you’ll see all of the files and subfolders that make up the project you downloaded.
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 barely scratched the surface here. Git has many more essential commands which are definitely 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 probably worked with tables in Microsoft Excel. A table is just a set of columns and rows containing data. We can set up tables in a database to store the information that our programs need to work properly.
Whether we are writing programs in JavaScript, Python, Java, or some other language, 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 web page. We can accept a web sign-up form from a user and store that user’s 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 language called SQL, short for Structured Query Language.
SQL is a programming language specifically created for databases. It allows us to tell databases what to do.
A chunk of SQL code is called a query. We can write SQL queries to fetch the data we need at a particular time or to insert new data into a specific table. Roughly speaking there are two main types of SQL queries: read-SQL and write-SQL.
A read-SQL query is one that simply fetches data from the database for us to see or use. It doesn’t change the data in the database at all.
On the other hand, a write-SQL query either inserts new data into a table, updates existing data, or deletes existing data. We’ll learn how to write some basic read-SQL queries in this section.
Before writing a query, it helps to know what we are querying! Traditional databases contain tables made up of columns and rows. When we write a read-SQL query, our goal is usually to retrieve a subset of those rows and columns.
The SELECT keyword tells the database that we want to retrieve data. It is followed by the name 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. Also, note that all SQL commands are terminated by a semi-colon.
One of the most common requirements we have with data is to filter it. Filtering means restricting the result set based on a specified condition.
For example, we might only want to select rows from the PERSON table for people who are named «PHIL». We can apply filters in SQL queries using the WHERE keyword:
This query would return all columns in the PERSON table since we used an asterisk * in the SELECT clause instead of listing specific column names. Only rows in the PERSON table where the FIRST_NAME is set to «PHIL» would be retrieved.
Lastly, we’ll talk about sorting. There are many times when we’d like to see our query results sorted in a particular order. We can use the ORDER BY clause for this:
This will return all columns in the PERSON table sorted alphabetically by last name.
By default, 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 order:
13) Read About Web Frameworks and MVC
Oftentimes, we’ll find ourselves writing code for very common types of applications. Web applications (or web apps) are applications that rely on the Internet in order to function. Webapps are some of the most commonly created types of software applications.
A web app is essentially a more functional and robust version of a website. Most web apps implement some backend code that resides on a web server and performs logic behind the scenes to support the application’s functionality.
Common programming languages to use for a web app’s backend code include Python, Java, and JavaScript, among others.
Some functionalities common to most web apps include:
A web framework is a set of code libraries that contain the common functionalities that all web apps use 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 example, if we don’t need to connect to a database in a particular 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 web pages that make up our application, the user flow, and the business logic. You can think of a web framework as a programming 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 currently in use. This is great because it gives development teams the flexibility to use the framework of the language that they are the most proficient in.
Java has the Spring Framework that’s made especially 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 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 often depend on these external code libraries, we also refer to them as dependencies.
A package manager is a program that helps us maintain the dependencies of a system or software project. By «maintain» we mean installing, updating, listing, and uninstalling the dependencies as needed.
Depending on the context, the package managers we’ll discuss 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 package manager for the Mac OS X operating system. It offers a convenient way to install, update, track, list, and uninstall packages and applications on your Mac.
Here is an example of installing the wget package via Homebrew:
Linux: Apt and Yum
Since Linux was built around the Command Line, it’s no surprise that package managers are the default way to install programs.
Most mainstream flavors of Linux ship with a built-in package manager. Advanced Package Tool (APT) is the native package manager for Debian and Ubuntu-based Linux distributions. Yellowdog Updater, Modified (YUM) is the native package manager for the RedHat Linux distribution.
Here is an example of installing Vim using APT:
JavaScript: Node Package Manager (NPM)
Now that we have seen how some OS-level package managers work, let’s take a look 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 with Node.js.
One difference between NPM and the previous package managers we have seen is that NPM can be run in local or global mode. Local mode is used to install a package only within a particular project/directory we are working on, while global mode is used to install the package on the system.
Python: Pip
Python also has a package manager 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
Java: Apache Maven
Apache Maven (usually referred to as simply Maven) is a free and open-source tool suite that includes dependency management.
Maven is mostly used for Java projects although it does support other languages as well. Maven usage is a bit more complicated and it can do a lot of things, so we won’t get into the weeds here.
Summary
In this article, I introduced a set of essential coding concepts and tools with the intention of presenting a bird’s eye view of software development that I wish I had when I started learning to code.
I covered topics including the Internet, several programming languages, version control systems, and databases with the goal of describing how these pieces of the puzzle 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 book I go into even 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 drawn to a particular language, tool, or concept. If this is the case I encourage you to dive deeper into that area to further your learning.