One place for hosting & domains

      How To Ensure Code Quality with SonarQube on Ubuntu 18.04


      The author selected Internet Archive to receive a donation as part of the Write for DOnations program.

      Introduction

      Code quality is an approximation of how useful and maintainable a specific piece of code is. Quality code will make the task of maintaining and expanding your application easier. It helps ensure that fewer bugs are introduced when you make required changes in the future.

      SonarQube is an open-source tool that assists in code quality analysis and reporting. It scans your source code looking for potential bugs, vulnerabilities, and maintainability issues, and then presents the results in a report which will allow you to identify potential issues in your application.

      The SonarQube tool itself is made out of two parts: a scanner, which is an application that would be installed locally on the developer’s machine to do the code analysis, and a centralized server for record-keeping and reporting. A single SonarQube server instance can support multiple scanners, enabling you to centralize code quality reports from many developers in a single place.

      In this guide, you will deploy a SonarQube server and scanner to analyze your code and create code quality reports. Then you’ll perform a test on your machine by scanning an example code with the SonarQube scanner.

      Prerequisites

      Before you begin this guide you’ll need the following:

      Step 1 — Preparing for the Install

      You need to complete a few steps to prepare for the SonarQube installation. As SonarQube is a Java application that will run as a service, and because you don’t want to run services as the root user, you’ll create another system user specifically to run the SonarQube services. After that, you’ll create the installation directory and set its permissions, and then you’ll create a MySQL database and user for SonarQube.

      First, create the sonarqube user:

      • sudo adduser --system --no-create-home --group --disabled-login sonarqube

      This user will only be used to run the SonarQube service, so this creates a system user that can’t log in to the server directly.

      Next, create the directory to install SonarQube into:

      • sudo mkdir /opt/sonarqube

      SonarQube releases are packaged in a zipped format, so install the unzip utility that will allow you to extract those files.

      • sudo apt-get install unzip

      Next, you will create a database and credentials that SonarQube will use. Log in to the MySQL server as the root user:

      Then create the SonarQube database:

      • CREATE DATABASE sonarqube;

      Now create the credentials that SonarQube will use to access the database.

      • CREATE USER sonarqube@'localhost' IDENTIFIED BY 'some_secure_password';

      Then grant permissions so that the newly created user can make changes to the SonarQube database:

      • GRANT ALL ON sonarqube.* to sonarqube@'localhost';

      Then apply the permission changes and exit the MySQL console:

      Now that you have the user and directory in place, you will download and install the SonarQube server.

      Step 2 — Downloading and Installing SonarQube

      Start by changing the current working directory to the SonarQube installation directory:

      Then, head over to the SonarQube downloads page and grab the download link for SonarQube 7.5 Community Edition. There are many versions and flavors of SonarQube available for download on the page, but in this specific tutorial we'll be using SonarQube 7.5 Community Edition.

      After getting the link, download the file:

      • sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip

      Unzip the file:

      • sudo unzip sonarqube-7.5.zip

      Once the files extract, delete the downloaded zip file, as you no longer need it:

      • sudo rm sonarqube-7.5.zip

      Finally, update the permissions so that the sonarqube user will own these files, and be able to read and write files in this directory:

      • sudo chown -R sonarqube:sonarqube /opt/sonarqube

      Now that all the files are in place, we can move on to configuring the SonarQube server.

      Step 3 — Configuring the SonarQube Server

      We'll need to edit a few things in the SonarQube configuration file. Namely:

      • We need to specify the username and password that the SonarQube server will use for the database connection.
      • We also need to tell SonarQube to use MySQL for our back-end database.
      • We'll tell SonarQube to run in server mode, which will yield improved performance.
      • We'll also tell SonarQube to only listen on the local network address since we will be using a reverse proxy.

      Start by opening the SonarQube configuration file:

      • sudo nano sonarqube-7.5/conf/sonar.properties

      First, change the username and password that SonarQube will use to access the database to the username and password you created for MySQL:

      /opt/sonarqube/sonarqube-7.5/conf/sonar.properties

      
          ...
      
          sonar.jdbc.username=sonarqube
          sonar.jdbc.password=some_secure_password
      
          ...
      
      

      Next, tell SonarQube to use MySQL as the database driver:

      /opt/sonarqube/sonarqube-7.5/conf/sonar.properties

      
          ...
      
          sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
      
          ...
      
      

      As this instance of SonarQube will be run as a dedicated server, we could add the -server option to activate SonarQube's server mode, which will help in maximizing performance.

      Nginx will handle the communication between the SonarQube clients and your server, so you will tell SonarQube to only listen to the local address.

      /opt/sonarqube/sonarqube-7.5/conf/sonar.properties

      
          ...
      
          sonar.web.javaAdditionalOpts=-server
          sonar.web.host=127.0.0.1
      
      
      

      Once you have updated those values, save and close the file.

      Next, you will use Systemd to configure SonarQube to run as a service so that it will start automatically upon a reboot.

      Create the service file:

      • sudo nano /etc/systemd/system/sonarqube.service

      Add the following content to the file which specifies how the SonarQube service will start and stop:

      /etc/systemd/system/sonarqube.service

      
      [Unit]
      Description=SonarQube service
      After=syslog.target network.target
      
      [Service]
      Type=forking
      
      ExecStart=/opt/sonarqube/sonarqube-7.5/bin/linux-x86-64/sonar.sh start
      ExecStop=/opt/sonarqube/sonarqube-7.5/bin/linux-x86-64/sonar.sh stop
      
      User=sonarqube
      Group=sonarqube
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      

      You can learn more about systemd unit files in Understanding Systemd Units and Unit Files.

      Close and save the file, then start the SonarQube service:

      • sudo service sonarqube start

      Check the status of the SonarQube service to ensure that it has started and is running as expected:

      If the service has successfully started, you'll see a line that says "Active" similar to this:

      ● sonarqube.service - SonarQube service
         Loaded: loaded (/etc/systemd/system/sonarqube.service; enabled; vendor preset
         Active: active (running) since Sat 2019-01-05 19:00:00 UTC; 2s ago
      

      Next, configure the SonarQube service to start automatically on boot:

      • sudo systemctl enable sonarqube

      At this point, the SonarQube server will take a few minutes to fully initialize. You can check if the server has started by querying the HTTP port:

      • curl http://127.0.0.1:9000

      Once the initialization process is complete, you can move on to the next step.

      Step 4 — Configuring the Reverse Proxy

      Now that we have the SonarQube server running, it's time to configure Nginx, which will be the reverse proxy and HTTPS terminator for our SonarQube instance.

      Start by creating a new Nginx configuration file for the site:

      • sudo nano /etc/nginx/sites-enabled/sonarqube

      Add this configuration so that Nginx will route incoming traffic to SonarQube:

      /etc/nginx/sites-enabled/sonarqube

      
      server {
          listen 80;
          server_name sonarqube.example.com;
      
          location / {
              proxy_pass http://127.0.0.1:9000;
          }
      }
      
      

      Save and close the file.

      Next, make sure your configuration file has no syntax errors:

      If you see errors, fix them and run sudo nginx -t again. Once there are no errors, restart Nginx:

      • sudo service nginx restart

      For a quick test, you can now visit http://sonarqube.example.com in your web browser. You'll be greeted with the SonarQube web interface.

      Now we'll use Let's Encrypt to create HTTPS certificates for our installation so that data will be securely transferred between the server and your local machine. Use certbot to create the certificate for Nginx:

      • sudo certbot --nginx -d sonarqube.example.com

      If this is your first time requesting a Let's Encrypt certificate, Certbot will prompt for your email address and EULA agreement. Enter your email and accept the EULA.

      Certbot will then ask how you'd like to configure your security settings. Select the option to redirect all requests to HTTPS. This will ensure that all communication between clients and the SonarQube server gets encrypted.

      Now that we're done setting up the reverse proxy, we can move on to securing our SonarQube server.

      Step 5 — Securing SonarQube

      SonarQube ships with a default administrator username and password of admin. This default password is not secure, so you'll want to update it to something more secure as a good security practice.

      Start by visiting the URL of your installation, and log in using the default credentials. If prompted to start a tutorial, simply click Skip this tutorial to get to the dashboard.

      Once logged in, click the Administration tab, select Security from the drop-down list, and then select Users:

      SonarQube users administration tab

      From here, click on the small cog on the right of the "Administrator" account row, then click on "Change password". Be sure to change the password to something that's easy to remember but hard to guess.

      Now create a normal user that you can use to create projects and submit analysis results to your server from the same page. Click on the Create User button on the top-right of the page:
      SonarQube new user dialog

      Then create a token for a specific user by clicking on the button in the "Tokens" column and giving this token a name. You'll need this token later when you invoke the code scanner, so be sure to write it down in a safe place.

      Finally, you may notice that the SonarQube instance is wide-open to the world, and anyone could view analysis results and your source code. This setting is highly insecure, so we'll configure SonarQube to only allow logged-in users access to the dashboard. From the same Administration tab, click on Configuration, then General Settings, and then Security on the left pane. Flip the switch that says Force user authentication to enable authentication, then click on the Save button below the switch.

      SonarQube Force authentication switch

      Now that you're done setting up the server, let's set up the SonarQube scanner.

      Step 6 — Setting Up the Code Scanner

      SonarQube's code scanner is a separate package that you can install on a different machine than the one running the SonarQube server, such as your local development workstation or a continuous delivery server. There are packages available for Windows, MacOS, and Linux which you can find at the SonarQube web site

      In this tutorial, you'll install the code scanner on the same server that hosts our SonarQube server.

      Start by creating a directory for the scanner:

      • sudo mkdir /opt/sonarscanner

      Then change into that directory:

      Download the SonarQube scanner for Linux using wget:

      • sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip

      Next, extract the scanner:

      • sudo unzip sonar-scanner-cli-3.2.0.1227-linux.zip

      Then delete the zip archive file:

      • sudo rm sonar-scanner-cli-3.2.0.1227-linux.zip

      After that, you'll need to modify a few settings to get the scanner working with your server install. Open the configuration file for editing:

      • sudo nano sonar-scanner-3.2.0.1227-linux/conf/sonar-scanner.properties

      First, tell the scanner where it should submit the code analysis results. Un-comment the line starting with sonar.host.url and set it to the URL of your SonarQube server:

      /opt/sonarscanner/sonar-scanner-3.2.0.1227-linux/conf/sonar.properties

          sonar.host.url=https://sonarqube.example.com
      

      Save and close the file. Now make the scanner binary executable:

      • sudo chmod +x sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner

      Then create a symbolic link so that you can call the scanner without specifying the path:

      • sudo ln -s /opt/sonarscanner/sonar-scanner-3.2.0.1227-linux/bin/sonar-scanner /usr/local/bin/sonar-scanner

      Now that the scanner is set up, we're ready to run our first code scan.

      Step 7 — Running a Test Scan on SonarQube Example Projects

      If you'd like to just poke around with SonarQube to see what it can do, you might consider running a test scan on the SonarQube example projects. These are example projects created by the SonarQube team that contains many issues that SonarQube will then detect and report.

      Create a new working directory in your home directory, then change to the directory:

      • cd ~
      • mkdir sonar-test && cd sonar-test

      Download the example project:

      • wget https://github.com/SonarSource/sonar-scanning-examples/archive/master.zip

      Unzip the project and delete the archive file:

      • unzip master.zip
      • rm master.zip

      Next, switch to the example project directory:

      • cd sonar-scanning-examples-master/sonarqube-scanner

      Run the scanner, passing it the token you created earlier:

      • sonar-scanner -D sonar.login=your_token_here

      This will take a while. Once the scan is complete, you'll see something like this on the console:

      INFO: Task total time: 14.128 s
      INFO: ------------------------------------------------------------------------
      INFO: EXECUTION SUCCESS
      INFO: ------------------------------------------------------------------------
      INFO: Total time: 21.776s
      INFO: Final Memory: 17M/130M
      INFO: ------------------------------------------------------------------------
      

      The example project's report will now be on the SonarQube dashboard like so:

      SonarQube Dashboard

      Now that you've confirmed that the SonarQube server and scanner works with the test code, you can use SonarQube to analyze your own code.

      Step 8 — Running a Scan on Your Own Code

      To have SonarQube analyze your own code, start by transferring your project to the server, or follow Step 6 to install and configure the SonarQube scanner on your workstation and configure it to point to your SonarQube server.

      Then, in your project's root directory, create a SonarQube configuration file:

      • nano sonar-project.properties

      You'll use this file to tell SonarQube a few things about your project.

      First, define a project key, which is a unique ID for the project. You can use anything you'd like, but this ID must be unique for your SonarQube instance:

      sonar-project.properties

      
          # Unique ID for this project
          sonar.projectKey=foobar:hello-world
      
          ...
      
      

      Then, specify the project name and version so that SonarQube will display this information in the dashboard:

      sonar-project.properties

      
          ...
      
          sonar.projectName=Hello World Project
          sonar.projectVersion=1.0
      
          ...
      
      

      Finally, tell SonarQube where to look for the code files. Note that this is relative to the directory in which the configuration file resides. Set it to the current directory:

      sonar-project.properties

      
          # Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
          sonar.sources=.
      
      

      Close and save the file.

      You're ready to run a code quality analysis on your own code. Run sonar-scanner again, passing it your token:

      • sonar-scanner -D sonar.login=your_token_here

      Once the scan is complete, you'll see a summary screen similar to this:

      INFO: Task total time: 5.417 s
      INFO: ------------------------------------------------------------------------
      INFO: EXECUTION SUCCESS
      INFO: ------------------------------------------------------------------------
      INFO: Total time: 9.659s
      INFO: Final Memory: 39M/112M
      INFO: ------------------------------------------------------------------------
      

      The project's code quality report will now be on the SonarQube dashboard.

      Conclusion

      In this tutorial, you've set up a SonarQube server and scanner for code quality analysis. Now you can make sure that your code is easily maintainable by simply running a scan — SonarQube will tell you where the potential problems might be!

      From here, you might want to read the SonarQube Scanner documentation to learn how to run analysis on your local development machine or as part of your build process.



      Source link

      The 70 Best Online Resources to Learn How to Code (Updated 2018)


      If you look back at tech movies of the past, some of them were really ahead of their time. Think back to 1995’s The Net, a film about computer analyst Angela Bennett (played by a young Sandra Bullock) who happens upon a government conspiracy — and dangerous hackers — while debugging a computer program. Not only did the film hit the nail on the head with how prevalent the internet is in our lives, but it also highlighted the power and pervasiveness of programming.

      Call it prophetic, but “hacking” skills — the good kind — are the common currency of the future. With an increasing interest in computer programming and the growth of tech-sector jobs, the time is now to learn a thing or two about 0s and 1s. It’s time to learn to code (no, not morse code).

      Maybe it was tech-of-the-future movies that got you interested in coding as a kid, or perhaps you’re developing a passion for learning mid-career. Whatever the reason, it’s time to go back to school — and with the right resources, you can learn a host of new language skills (no verb conjugating required).

      So what is coding? (If you’ve got some time, start here). Simply put, code is the set of instructions given to computers to perform specific functions. With lines of code, programmers develop the software that powers the devices you encounter every day — from your smartphone to your microwave. Yep, it does a lot.

      Programming is not just a way to build things; coding helps solve problems, aids people in need, and, as Steve Jobs admonished, it teaches you how to think. It’s a skill lauded by presidents, mayors, billionaires, even high fashion supermodels. There’s even a designated Computer Science Education Week. Mark your calendars!

      The good news is you don’t have to live in Silicon Valley or have expensive, high-tech gadgets to learn how to code. Self-taught programming is on the rise, and you can join the masses that are taking to the web to learn the next universal language.

      With the click of a mouse, you can develop a whole new repertoire of programming skills. And we’ve got all the resources to help you learn to code as you start the digital school year.

      Brrrrring! (Code) School is back in session.

      But First, Meet a Self-Taught Programmer

      Before I inundate you with stellar programming resources, allow me to introduce you to a real-life, self-taught coding graduate. Meet Ryan Hanna.

      Ryan Hanna

      Why him? Well, in 2015, more than half of mobile phone users had downloaded a health-related mobile app. And know who created one of the most successful ones? That’s right.

      Hanna began teaching himself to code in January of 2012 using Codeacademy, out of a desire to start creating his own projects.

      “I was tired of just consuming things that other people were building and wanted to try building something of my own,” he says.

      Utilizing lessons from Codeacademy, PhoneGap, and tutorials he found on blogs, he picked up programming skills and began working on his own creation — a new workout app called Sworkit.

      “I transitioned from an IT specialist to a full-time junior developer in the same company I worked for after one year of learning and had started building my own project in my free time,” Hanna says. “This project ended up replacing most of my resume and helped me get my first non-junior developer role where I worked for two years.

      “Along the way, I had met Benjamin Young of Nexercise at a conference, and we ended up deciding to work together on Sworkit full time. His and Greg Coleman’s company Nexercise bought Sworkit and hired me to continue working on it. We’ve since grown to an amazing team of seven and have one of the top workout apps on the market.”

      The growth of Sworkit proved to Hanna — and it should prove to you — that building something amazing is only a few steps away.

      “You can build anything you want,” Hanna says. “Starting with any idea or any design, you can just start building it without any limitations. That feels amazing to go from nothing to something.”

      And learning to code doesn’t have to be overwhelming. Start with baby steps, Hanna says.

      “Learn a broad spectrum of languages and topics at the start, but then pick something small to work on with what you have learned,” he says. “It will help you start something from scratch and get that feeling of adding one little piece at a time. You start to focus on figuring out how to complete each step in sequence and then you have something to show for it at the end as well.”

      A computer science degree isn’t required to get started with a shiny new set of coding skills. Many others have learned, and so can you.

      Here is a hefty list of 70 free or low-cost ways (and more) to get started.

      Self-Guided Tour: Our Complete List of 70 Coding Resources

      1. Games

      We know gaming isn’t time-wasting — rather, it’s an engaging way to learn and practice new concepts as you learn to code. Use these online activities to sharpen your skills.

      CodeFights

      Explore programming in your preferred coding language and on your own time. Whether you’ve got five minutes or five hours, Code Fights allows you to practice for job interviews, play arcade-style coding games, and compete in screen-to-screen challenges

      Cost: Free

      CodeAbbey

      A collection of beginner-to-advanced practice problems that allow you to earn certificates and hone your skills. Consider it a type of fun homework.

      Cost: Free

      Coderbyte

      Choose a coding language and solve challenges; accompanying solutions and tutorials help you cement crucial programming skills with step-by-step instructions

      Cost: Free

      FightCode

      Enter virtual duels by building your own robot using Javascript and challenging other users — programming video games, anyone?

      Cost: Free

      Reddit: Daily Programmer

      Utilize Reddit’s user-based forums to try challenges in a range of different levels and applications — everything from Scrabble-like tests to mazes.

      Cost: Free

      CodinGame

      Play virtual coding games (think: destroying enemy ships with code) that can teach you essential skills and can get you noticed by companies.

      Cost: Free

      CodeEval

      See how you stack up against other coders with a large library of dynamic coding challenges while building a profile and attracting the attention of programmer-seeking companies.

      Cost: Free

      HackerEarth

      Coding activities with purpose. Help solve real-world problems for businesses with innovative programming solutions while joining a community of coders and utilizing practice problems.

      Cost: Free

      HackerRank

      Unearth your inner coding competitor and solve challenges while interacting on a leading recruitment site for companies (meaning, it’s a resume builder!)

      Cost: Free

      Sphere Online Judge

      Become the Obi-Wan of programming by testing out problems and offering your own solutions, while participating in a unique coding community.

      Cost: Free

      Microsoft Imagine

      Enhance your development skills by taking Microsoft’s fun and creative coding projects for a spin.

      Cost: Free

      CodeWars

      A great resource to train yourself, collaborate with others, and create in a variety of programming languages.

      Cost: Free

      Exercism

      Practice problems (consider them mini-quests) for newbies and experts, tailored to your interests, whether you want to learn to code, increase fluency in your chosen language, or develop clean code. Just submit your solutions and get helpful feedback. Works through GitHub.

      Cost: Free

      2. Books

      No dull, dusty textbooks here — these programming tomes can provide you useful reading material.

      The Self-Taught Programmer

      The perfect manual for self-studiers, written by one of coding’s own amateur-turned-professional graduate.

      Cost: $4.99 Kindle Book

      Github Free E-Books

      A countless collection of ebooks on every possible programming topic, like how to learn Python or PHP.

      Cost: Many free — prices vary

      Reddit Free Programming Books

      Another exhaustive collection of online resources to help you increase your coding knowledge.

      Cost: Many free — prices vary

      3. Mentors/Meetups

      Want to meet with like-minded individuals? Find a mentor or coding event in your area.

      Reddit Programming Buddies

      Virtual classified ads for programmers; identify programming comrades that match your unique skills and interests and collaborate on personalized projects.

      Cost: Free

      Perunity

      A matching platform that connects users in a myriad of different fields; outfit a profile with what you offer and what you want to learn and begin sharing knowledge with other groups.

      Cost: Free

      Pair With Me

      Utilize the site’s Pair With Me button to encourage collaboration from your own website or contact form. Also, check out the provided collection of resources and guides for programmer pairing.

      Cost: Free

      CodeNewbies Twitter

      This social media handle hosts a live, weekly chat every Wednesday where users can ask questions and converse with other programmers — beginners and experts alike.

      Cost: Free

      Meetup

      A general connection platform that allows you to tailor specific meetup requests in your area. A good place to start? Tech Meetups.

      Cost: Prices vary

      Hackathons

      Not unlike a hip, adult slumber party; these all-night coding parties allow you to gather with like-minded learners and develop new skills as you tackle team programming projects.

      Cost: Prices vary

      Local Computer Science Classes

      For those looking to feel like a student again. Another Code.org resource that allows you to find computer science courses local to your area.

      Cost: Prices vary

      Girl Develop It

      A female-focused nonprofit that provides resources for computer science-interested women. Find your local chapter and attend programming events.

      Cost: Prices vary

      Did You Know? DreamHost has partnered with Girl Develop It to sponsor WordPress courses nationwide.

      Coder Match

      Link your GitHub account to find coding buddies that share similar programming goals and projects.

      Cost: Free

      Code Buddies

      A large community of programmers who connect via Slack and organized study (screen-sharing) hangouts. Make your hangouts as unique as your project.

      Cost: Free

      4. Videos

      Hunker down: it’s movie night. Time to break out the popcorn and watch as YouTubers — and others — share their knowledge. (Bonus: No Redbox fees).

      DevTips

      A Google employee shares weekly video lessons that address topics of web design and development.

      CSS-Tricks

      The YouTube channel of a matching site that addresses much more than just CSS.

      Derek Banas

      Your wish is Derek Banas command; the YouTuber makes video tutorials based on the requests and questions from viewers, so ask away! His tailored videos also include multi-weekly live streams. Along with an extensive collection of programming tutorials, he’s also got in-depth guides on how to create video games. Score!

      Coder’s Guide

      Helpful step-by-step web development tutorials covering everything from responsive web design to splash screens.

      The New Boston

      Covering all things computers, The New Boston offers detailed videos for every step of your programming journey — even for beginners.

      Programming Knowledge

      A great starting point for beginners; these easy-to-digest video help learners manage the ins-and-outs of different programming languages.

      Ted Talks

      A playlist of seven top-tier talks from Ted Talks’ best speakers, covering topics like teaching kids to code and improving government through programming.

      Command Line Power User

      A handy video series for web developers learning how to interact with computer programs.

      My Code School

      This educational channel has more than 330,000 subscribers for a reason: the folks behind it know their stuff. With tons of videos on a host of programming languages and live content, you can get a crash course on any programming subject you want to learn about.

      Looking for additional coding movie makers? Here are a few more you can check out.

      5. eCourses

      Choose from a handful of virtual courses or coding boot camps to learn new skills — at free or budget-friendly costs.

      GitHub

      A coder-must platform that helps programmers collaborate with each other as they save code online, view changes, and discuss issues.

      Cost: Paid (from $7 per month) and free plans available

      Bitbucket

      Another resource that makes coding a team effort; works in conjunction with Git to help programmers work jointly on projects.

      Cost: Paid (from $10 per month) and free plans available

      Open Culture

      A full list of all kinds of online computer courses from distinguished universities — available in various formats for easy accessibility.

      Cost: Free

      Code Avengers

      Whether you want to learn how to build websites, apps, or games, this resource has helpful lessons, quizzes, and project-based learning tools for creating and real-life problem solving, tailored to your own individual programming path. They even provide an educational environment for junior coders.

      Cost: $29 per month; $150 for six months

      Code.org

      Moana, Star Wars, and Minecraft — all subjects incorporated into one-hour tutorials provided by nonprofit Code.org. These easy-to-digest courses are accessible for learners of all levels and ages, and provide useful hands-on experience for future programming gurus

      Cost: Free

      Reddit

      Not just a programmer’s favorite; this Reddit page has a collective list of interactive coding tutorials gathered from around the web on various topics, from mobile iOs or Android development to info on different programming languages. (Plus, you can even watch people code!)

      Cost: Free

      GitHub Curated Programming Resources

      Another exhaustive list of coding resources, plus, a helpful introduction that guides beginners on where to start.

      Cost: Free

      Codeacademy

      Ryan Hanna’s alma mater is helping educate the world in programming; choose from a catalog of courses that meet your learning needs and get coding.

      Cost: Free

      David Walsh

      Web developer Walsh shares a host of programming tutorials in addition to sharing demos and info about coding conferences.

      Cost: Free

      Open Culture

      A collection of computer science courses and resources available right from your screen and in multiple formats.

      Cost: Free

      Treehouse

      A course-focused site that offers resources for learning, practicing, and earning badges that boost your skills. Students can earn anything from app-building to website-creation.

      Cost: Free 7-day trial, $25 (Basic Plan) or $49 (Pro Plan) a month after

      Coursera

      Take courses straight from actual universities in a variety of specializations. This site partners with top schools to offer education in programming, data science, business, and more.

      Cost: Prices vary

      EdX

      Students choose from an extensive collection of self-paced computer science courses fueled by university curriculum — it was founded by Harvard and MIT in 2012.

      Cost: Free, professional certificates at a cost

      Free Code Camp

      Complete challenges and building projects that can help you build skills, even acquire developer jobs. Plus, Free Code Camp tasks have practical applications, like aiding nonprofits with open source projects.

      Cost: Per its name, free

      General Assembly Dash

      Learn coding basics from your browser — the step-by-step guided fundamentals can aid you in building your next super-site.

      Cost: Free

      Udacity

      Earn a nanodegree — an online certification with provided course materials and instructor guidance — in one of seventeen available tech tracks. Learn in-demand job skills at your own pace.

      Cost: Prices vary (but plan for a cost of at least a few hundred every month).

      Solo Learn

      Learn to code on the go with online courses or a travel-friendly app. Topics feature tons of courses and quizzes, plus social learning components; there’s even a “Code Playground” for experimental development.

      Cost: Free

      Udemy

      Choose from more than 45,000 courses tailored to your own personal programming syllabus rated and reviewed by peers.

      Cost: Prices vary

      Lynda

      A learning platform filled with engaging courses taught by industry gurus.

      Cost: Free 30-day trial, prices vary after

      Self Taught Coders

      Email courses designed to help you launch a career in web development and propel your ideas into real-life web applications.

      Cost: Prices vary, some free

      MarkSheet

      An HTML and CSS tutorial that starts at the web’s bare bones and gets gradually more detailed as the course progresses — an easy-to-understand intro for beginners.

      Cost: Free

      Reddit: Learn Programming

      A smart guide with an abundance of helpful resources for every step of your self-taught programming journey.

      Cost: Free

      Haven’t found your perfect fit? Try this: a few more places to code for free.

      6. Podcasts

      Load up your device with audio coding lessons and listen on your commute or during your workout.

      Coding Blocks

      Shop talk about development best practices relevant to a number of different programming languages.

      Cost: Free

      Dev Radio

      A by developers, for developers podcast that shares up-and-coming programming news. Cost: Free

      Software Engineering Daily

      Featured interviews with experts that touch on tech topics like mobile app development and developer testing.

      Cost: Free

      Developer Tea

      A snackable-size podcast designed for busy schedules. Listen to quick bites on all kinds of developer-designed details.

      Cost: Free

      Programming Throwdown

      A perfect podcast if you want a little taste of everything; each show covers a different programming language so you can expand your coding knowledge with each episode.

      Cost: Free

      Coding Newbie

      This weekly podcast features stories and useful lessons from other individuals who are on their self-taught programming path.

      Cost: Free

      Learn to Code With Me

      Laurence Bradford’s weekly podcast helps self-taught coders transition to the tech field with useful real-world examples and tips on developing marketable skills and enhancing your resume.

      Cost: Free

      Need more earworms? Try additional podcasts here, including language- and task-specific channels.

      7. For Children

      Turns out, it’s never too soon to start introducing your tots to their first bytes.

      Computer Science for Babies

      A book series designed to help your little ones make connections to computer science principles during early development.

      Cost: Prices vary

      HTML for Babies

      A three-volume collection of board books that introduce your infants to computer science fundamentals. In conjunction with site Code Babies.

      Cost: Amazon, $1.73 each

      Treehouse: When Should Kids Learn to Code?

      Tips for helping kids to get a start in programming.

      Cost: Free

      Code.org Student

      A youthful resource for finding online courses or local classes. Includes games and activities.

      Cost: Free

      MoonHack

      A record-setting event for Code Club where kids ages 7-18 around the world join together to tackle projects — MoonHack’s or your own (moon-themed, of course). 2017’s MoonHack event brought together more than 28,000 youth.

      Cost: Free

      Code Your Own Games!

      Entice youth early to get involved in coding with this easy-to-follow (and super fun) visual guide that helps them learn to program their own games. Gaming + learning = win-win.

      Cost: Amazon, $16.16

      Got Questions?

      Our collection of resources provides a comprehensive list of places to initiate your self-taught programming journey, from beginning fundamentals to jump-starting your coding career. But along the way, you might hit a few roadblocks. Well, we’re here for you.

      Maybe you don’t know what programming language to start learning. Easy. Try an interactive quiz or infographic that guides your journey based on your individual goals and interests (like, creating a game, or developing an iOS or Android app).

      Struggling with framework questions, or need to fix a bug or in your code? Try utilizing Stack Overflow, a coder’s knowledge-sharing community. Want to automate tedious tasks while using Microsoft devices? Do it with Windows PowerShell. Trying to learn how to master an object-oriented programming language? Visualize with the Understand tool.

      Or perhaps you’re looking for useful apps or a development environment to practice in? We’ve got you covered. Try some note-taking apps that help while you code and useful coding playgrounds like Code Pen, JSFiddle, or Limnor Studio (visual programming) to get your feet wet.

      Any more questions? Let us know.

      Take Notes

      Ready for your homework? Time to get coding.

      Pick a course, a video, a podcast, or a coding game. Start there and start small. With our complete guide to coding resources, you have everything you need to start building your own projects and becoming fluent in your new language.

      Fill Us In

      Are you a self-taught programmer? How did you learn to code? What advice would you give to other wannabe coders? Share your story — and your advice — with us in the DreamHost Community!





      Source link