You are welcome to go through our tutorials but please keep in mind that as we rely on community PRs for maintainance they may be out of date.

Getting Started in Tech

Technology is a vast subject. It can enable you to write a to-do list on your phone, sell goods online or send a rover and a helicopter to Mars. Software is built by developers and codebar is here to teach you how to write such software. Whether you want to make a career of it or acquire some exta skills.

Typically software can fall into two (very broad) categories:

  • User interface - How to present information to people using the technology and enable them to interact with it. For example:
    • Displaying your vehicle and responding to joystick inputs in a game of Mario Kart
    • Displaying your balance and allowing you to make a payment in your bank’s online banking site
    • Displaying current temperature and allowing you to change the target on your Hive or Nest smart thermostat
  • Data processing - How to manipulate the data and perform the task that the software implements. For example:
    • Calculating the position of your vehicle and detecting collisions
    • Validating that your account has enough funds to send this payment and processing the payment
    • Starting or stopping your heating or air conditioning depending on the current temperature and the target you set

At codebar, we concentrate on web technologies for several reasons:

  • No initial investment is needed: all the tools you need to learn about web technologies are available online for free. And the computer you use doesn’t have to be new or a top of the range model, most computers will perform well, including shared computers in libraries.
  • You can see results very fast.
  • They are ubiquitous: a lot of technologies that started on the web are now used in many other places. Even if you end up working in a domain that has nothing to do with the web, you will likely use or interact with web technologies.

Web technologies are designed in such a way that they tend to more clearly separate user interface work from data processing work. As a result, web developer jobs typically fall into three broad categories:

  • Front end: work that deals with user interfaces
  • Back end: work that deals with data processing
  • Full stack: work that combines both aspects

Both front-end and back-end have their own complexities and neither is easier than the other. So let’s have a look at what they both involve. Take this web page as an example. It is a page on the codebar.io website and you are reading it via a web browser on a computer or mobile device. The codebar website runs on a computer in a data center that runs a piece of software called a web server. Both talk to each other via the internet.

To build a website like this involves two pieces of code:

  • The front-end code that runs in the web browser
  • The back-end code that runs on the web server

Below we go into more depth about these roles, and what languages you would need to learn.

Front-end Development

As a front-end developer you would be responsible for the code that runs in the web browser and displays information to visitors. It is typically the practice of writing HTML, CSS and JavaScript.

HTML (Hyper Text Markup Language)

HTML is the language used to build websites. All text and content that you see on the internet is built using HTML.

CSS (Cascading Style Sheets)

CSS is used alongside HTML to style the page and make it look good.

JavaScript

JavaScript is used to change what is displayed on a web page in response to user activity.

Back-end Development

As a back-end developer you would be responsible for the code that runs on the server. This type of development usually consists of three parts: a server, an application, and a database. Many back-end developers know front-end languages such as HTML and CSS but need to use languages such as Ruby, Python, PHP, Java, and .NET to get the job done.

Front-end and Back-end development overlap a fair amount so starting in one role doesn’t mean that you can’t switch or learn the other, should you change your mind further down the line. They also have strong ties to other areas of technology. For instance, front-end development shares a lot with mobile app development; back-end development with data science.

Ruby

Ruby is an object oriented scripting programming language typically used for building web applications. It is most commonly used with Ruby on Rails, a web development framework built with Ruby.

Python

Python is the preferred option for data science thanks to scientific libraries like NumPy and pandas.

Node.js

Node.js is a development framework built with JavaScript. It allows you to write back-end components with the same technologies as the ones used in front-end work, which makes it particularly attractive when the same developers work on the front-end and back-end.

PHP

PHP is a general-purpose scripting language especially suited to web development. It is a server side scripting language that is embedded in HTML. It is used to manage dynamic content, databases, session tracking, even build entire e-commerce sites. Also commonly used with WordPress so if custom WordPress themes interests you, then learn PHP.

SQL

SQL is a domain-specific language designed for managing data held in a relational database management system. It is often combined with the technologies described above.

Full-stack Development

A full-stack web developer is a person who can develop both client (front-end) and server (back-end) software. For this we suggest learning any of the languages under front-end development and back-end development. Below are some further subjects that relate to both:

Testing

Why do you want to test and what different types of tests you can do:

  • Unit testing
  • Integration testing
  • End to end testing
  • Acceptance testing
  • Security testing
  • Performance testing

REST API

Basics on HTTP, JSON and how to put this together to use or build an API.

Privacy

Basics on privacy, things like GDPR and overall principles.

Accessibility

How you use web technologies to build your websites has an impact on who can access and interact with the information you provide. Accessibility is a set of guidelines and techniques to ensure that your websites can be used by as wide a variety of people as possible, irrespective of whether they get on the web like you do or in a very different way.

MDN Article