An Unofficial Guide to doing a Coding Bootcamp — Part 1: Fundamentals
I currently work as a software engineer for a tech company in San Francisco, on a team that builds mobile apps with React Native. It’s a dream job, especially for someone like me who discovered my passion for coding pretty late in the game. Since successfully making the transition from analysis and non-profit management to software engineering, I’ve been contacted by many people who are curious about doing the same thing. They all have a lot of the same questions as each other, and a lot of the same questions I had when I was starting out. I’ve loved sharing my experience with them, and I thought it might be helpful to put it out as an ‘unofficial guide’ for anyone else who’s got the same questions.
So, without further ado, let’s jump right in to…
Part 1: Fundamentals
When I first began learning how to code, I came across a lot of new terminology. What follows is a simplified collection of some of the important terms and concepts that I wished I’d known in the early days of my self-education, and as I began to research what it would take to become a software engineer.
Q: What’s the difference between backend, frontend, and fullstack development?
A: Generally, frontend development refers to the code that determines the way the application or program looks and behaves. Backend development refers to the code that handles the retrieval, processing, and storage of data. Fullstack developers do frontend and backend development. In practice, most people focus more heavily on one or the other, and have a decent working knowledge of both.
*common misconceptions resolved: Frontend developers are not synonymous with designers, and backend developers are not synonymous with data analysts.
Q: So, should I do a frontend, backend, or fullstack bootcamp?
A: My philosophy on this is that you should study the full stack if you don’t already have experience working with one or the other. You’ll be able to figure out for yourself which end of the stack you like the most and want to focus on down the road, and you’ll get a comprehensive understanding of how a full app works.
Q: Back up for second. What’s a ‘stack’?
A: ‘Stack’ just refers to all of the libraries, frameworks, and tools, from frontend to backend, that make up an app.
Q: What’s the deal with ‘frameworks’ and ‘libraries’?
A: The easiest way to think about this is that there are certain operations that need to be done frequently, and that aren’t straightforward to do with pure code. Libraries are collections of functions for these operations that abstract away the complexity of writing the function all on your own. Frameworks are a little bit different, but the concept is the same — they’re an abstraction of a given language that provides cohesive functionality for building a program.
Q: What even is an app?
A: When I started programming, I was kind of confused, because I thought an app was a thing on my phone, but I heard the term being used to describe websites too. App is just short for ‘application’, and it’s commonly used in reference to any dynamic and interactive program, whether a mobile app, a website, or a piece of software downloaded to your computer.
Q: What are API’s?
A: API’s are rules for interacting with an application’s resources, and ‘API’ is interchangeable with ‘server’. Let’s say you’re making a website and you want it to show what movies are in theaters based on a user’s location. You would make a ‘request’ to an API that says “hey, can I have all the movies that are showing in Wisconsin?” and the API will either say “nah, I don’t have that information” or “sure thing, here they are”. It’s a bit more complex than that in real life, but that’s the gist.
Q: What’s an IDE?
A: IDE stands for integrated development environment, which is really just anything you write, and possibly run and test your code in.
Q: What are Git and GitHub?
A: Git is a version control system, and GitHub is a web based hosting service that uses Git. When you work on projects, especially on teams, version control helps your team work on the same files without interference, and allows the team to keep track of changes to the code at different points in time.
I hope this provides a clear, high-level overview of some of the terms and concepts you’ll come across during the early stages of your exploration. Let me know if you’d like to see any additions or clarifications, and check out Part 2: Choosing a Bootcamp and Part 3: Preparing for Success.