This article was originally published on 07/17/2019

There’s a long list of headlines telling you that you need to learn to code, that coding is a smart and lucrative investment. And it’s true that the prospects look promising — computer and information technology occupations are projected to grow faster than all other occupations. But “learning to code” is vague, and the industry is huge. What exactly are you supposed to learn, and what kinds of jobs are available? Let’s add some shape to this idea of “learning to code” and breakdown some of your best options.

We’ll divide the world of coding into four categories: web applications, mobile application, game development, and hardware development.

Web Applications

If you’ve been on any social media website, or had to log in to a website, you’ve used a web application, or a web app for short. For the purposes of this piece, we’ll use “web app” and “website” interchangeably.

Web apps can get very complicated, but they’re generally broken down into three main components: front-end, back-end, and design. These often correlate to the following three roles: 

    • Front End Developer: This person is in charge of how the information on a website is displayed to the user. They work on how the website looks, and how the user interacts with it. Front end developers use tools like HTML, CSS, and JavaScript to code the app. Their code generally runs inside the user’s browser. There are more front end tools than ever, like ReactJS and AngularJS, to help you create beautiful, complex interfaces. Read more about front end developers here.
    • Back End Developer: This person works with the equipment and tools that run a web app on the server-side. A simple way to think of the server-side is that it includes all of the code and functionality that does not run on the user’s browser. For a web application, this often means storing and manipulating data, and using that to decide what page and information to serve the user. Back end developers have a wide selection of tools, usually called back end or server-side frameworks, to pick from, like Node JS. Read more about back end developers here.
    • Web Designer: This person designs the look and feel of a website. A designated designer doesn’t always code, but is in charge of the styling, layout, and elements (buttons, nav, drop down menus, etc.) of a website. Read more about web designers here.


  • Full Stack Developer: A full stack developer, also called a web developer, can do both the front and back end. They usually build apps using frameworks that take care of both sides, like Django or Ruby on Rails.


Mobile Applications

Mobile apps are the apps on your phone, the ones you use to play games, manage your calendar, or wake you up with an alarm. Here are some popular roles you’ll encounter in the world of mobile apps: 


  • Mobile Designer: This person figures out how the app is going to look and what the overall layout will be. It’s very similar to a web designer role–this person doesn’t necessarily have to code, but they may do wireframing to design the skeleton of the app, and they are responsible for the user experience. Designers might use a tool like Sketch to make interface prototypes, or do graphical work in Photoshop or Illustrator. Here’s more info on mobile design.
  • Mobile Developer: This is the person who turns the design into code that will be run on the user’s mobile device. It’s most similar to the web back-end developer role we discussed above. Mobile developers use languages like Swift for iOS development, or Java for Android. There are also newer technologies that allow you to develop for both Android and iOS at the same time, such as React Native.
  • Back End Developer: If the app has any online functionality, like a game with online leaderboards or a shopping list that can sync between devices, the team will also have a back end developer role. This person writes code that runs on a web server, which enables the online functionality of the app. Many back end developers use tools like a combination of Express and Node.js, which make organizing and running a back end much easier. 


Game Development:

Video Game Development: Game development turns an idea into a video game. There are several distinct roles on a video game development project, some working directly with the code and, others, not so much. 


  • Game Developer: This person writes the actual code that makes the game work. Many developers like to work with a pre-built “engine” such as Unreal or Unity to provide a foundation for their code.These engines provide the tools to draw beautiful graphics, create interesting physics simulations, and easily add controls. Most importantly, tools like Unity make it much easier to put the final product on multiple “platforms” like computers, phones, or gaming consoles. The language an engine is built in depends on what platform the game is destined for. A few popular languages and development environments include C#, Java, XNA, and plain old C.
  • Game Designer: This person figures out what the game is going to be, and comes up with the game’s concepts, characters, setting, story, and gameplay. Designers work with artists and programmers to create the scripting language and artistic vision for a game. They might do things like storyboarding or scripting for a narrative type game, or they may design puzzles for a puzzle game. A game designer might code prototypes, but they don’t necessarily have to work on the code of the game itself if they are acting strictly as a designer. 
  • Game Artist: This person creates the art “assets” for the game, which is the part of a game that the player actually sees. A game artist may create pixel art for a retro styled game or “sprites” for a 2D game using Aseprite animated pixel editor and sprite tool. Or they may do more complex mapping and animating for a 3D game using Unity or Maya. Some game artists create assets right in Photoshop or Illustrator. They often take the role of a high-level game engine user, needing to work closely with the game’s system and developer to make sure all their assets are loading, appearing, and moving correctly.
  • Game Testers: This is the person who makes sure everything works correctly, and that the game is easy to learn and fun to play. The game development team will often put out a “beta” (unfinished) version for “beta testers” to try their games out and report back on any bugs, glitches, or problems. A game tester could also be hired by the development team to test their games and find bugs. 


Hardware Development:

If you want to make physical things with technical skills, this is for you. While a software developer writes code that is run by a computer, a hardware developer writes code that is exported onto a chip or a device. This means building things, like small robots. It also includes professional, Internet of Things (IoT) applications like Alexa, Nest, and Canary. But it also includes fun, DIY projects like Lego Mindstorms and Kano. If you’re looking to get into hardware development, here are a few roles you might run into: 

  • Hardware Design Engineer: This person is involved in the system design and testing cycles of hardware design projects. A hardware design engineer might select the architecture of the product, and create the electrical design. This person may also be involved with bringing a design to mass production by setting factory test requirements, assisting in software, and possibly traveling on-site to the manufacturer to ensure that the design is built and tested successfully.
  • Product Design Engineer: This person might be employed by a company that creates electronics and Internet of Things products (like Nest and Alexa) to conceptualize, define, design, build and test new products. This person might work with software like AutoCAD to create detailed 3D CAD models, search out new materials for products, or analyze the results of reliability testing to iteratively improve designs. They may work with machine shop tools to create prototypes of designs in metal or plastic, and they work with the whole team to see a product come to life.
  • Test Engineer: This person tests all aspects of the hardware to make sure that it is performing to specification. They investigate and troubleshoot issues, ensure that features are delivered efficiently and on-time, and often work on automating testing to make the whole process run more quickly. A test engineer might use Python, Selenium WebDriver for browser automation, and Javascript, CSS and HTML for web application design.
  • Embedded Software Engineer: This person builds the software and systems that are used in hardware. They collaborate with the team to develop test frameworks and operational tools that will act as the backbone to support devices. They might build applications that work with the Web, Android, and iOS to implement user interfaces, optimize the user experience, develop new features, troubleshoot problems, and enhance the product performance. They might do development in Scala, C/C++, Java, Javascript, Python, Ruby, or use scripts like bash

The world of code is huge, and these are just a few of the popular ways to think about a role as a coder. Did anything catch your eye? Was there anything you saw that made you want to explore further? Dig in, do some more research, and check out stories of real developers and their coding journeys on the CodeNewbie Podcast to learn more about what it’s really like to be a coder.