Getting Started

Table of Contents

  1. Introduction
  2. Full-Stack Development

1. Introduction

If you’re diving into the vast, exciting ocean of software engineering, you’ve made a brilliant choice! This journey is not just about coding; it’s about creating, solving, and innovating. It’s about turning abstract ideas into reality and shaping the digital world we live in.

In this guide, we’ll embark on an adventure that begins with the basics of programming and scales up to the complexities of software design and development. Whether you dream of building sleek mobile apps, robust web applications, or innovative software solutions, this document is your first step.

Why Software Engineering

Imagine being able to craft tools and platforms that millions might use. Or solving real-world problems with a few lines of code. That’s the power you’re about to unleash. This field isn’t just about jobs; it’s about making an impact.

What You Will Learn

We’ll cover the essentials – from understanding programming languages to grasping software development methodologies - in this wiki. You’ll learn about the tools that make a software engineer’s life efficient, how to use them, and how to take advantage of them to make your own production.

Your Path Ahead

Each section of this guide will be about a branch of software engineering, and each will give an outline explaining how a type of product is done. They will be all very basic in theory, so don’t worry about them being too hard by now. When you really are about to dive deeper into the development section, things will be a bit overwhleming as there are many things to learn, but always remeber, everyone was a once a beginner. So stay clam, choose the branch of software engineering you want to learn, and get started!

2. Full-Stack Development

Here is an article talking boardly about Full-Stack Development, if you want you can check it first, but you can always come back to it after finishing reading things on this page.

2.1 Overview

2.1.1 What’s Full-Stack All About

Imagine being a wizard of the web world - that’s what full-stack development is like! You’ll learn to conjure up both the visible parts of a website and the magic that happens behind the scenes. Full-stack development involves working with both the front-end and back-end parts of a web application. It’s about understanding the entire spectrum of creating a website, from the interface that users interact with to the server, database, and application logic that power the site.

2.1.2 The Role of a Full-Stack Developer

A full-stack developer has the skills to work on both the client and server sides. They can create a complete web application and tackle challenges in web development from multiple perspectives.

2.1.3 Overview of the Web Development Process

The process of web development typically starts with planning and designing the user interface and experience, then moves to coding the front-end and back-end, integrating (connecting) these components, and finally testing and deploying the application. Yes, there are many things that need to be done, but just as you know, websites have been there for decades already, and lots of very clear people have already set a standard for how webpages should be built efficiently and clearly!

2.2 The Two Sides of Web Development

2.2.1 Understanding Front-End Development: The User Interface

This is where you make the website look cool and feel awesome. Front-end development focuses on the user interface and user experience, and it’s all about HTML, CSS, and JavaScript - the tools to build a digital masterpiece.

2.2.2 Exploring Back-End Development: The Server and Database

Back-end development deals with the server, database, and application logic. It’s about how the site works, processes data, and performs operations. It often involves server-side programming languages like Python, Ruby, and Node.js.

2.2.3 How do Front-End and Back-End Work Together

These two areas work together to create a seamless web experience. When user works on the front-end, the front-end would send requests to the back-end, which then processes them and returns the required data or action to the front-end.

Here is a good example, consider a website as a restaurant. The front-end would be the waiters. They are there to provide good services to the customers. They clearly do not know how to cook, but they can send orders to the kitchen, and take food out of the kitchen. The back-end would be the chefs, they do not know how to serve customers, but they are good at cooking.

Indeed, a person can be both a waiter and a chef, but having these two jobs separated, is what makes a restaurant efficient at serving its customers. This is the same for webpage. By separating front-end and back-end, we can have each side focuses on what it is good at, and be a good manager of a full-stack project.

2.3 Basic Technologies in Web Development

2.3.1 The ABCs of the Web: HTML, CSS, JavaScript (Front-End)

As we have mentioned many times above, these three things are the basics for Front-End development. In short, HTML structures the content on a page, CSS styles it, and JavaScript adds interactivity.

2.3.2 Behind the Scenes with Server-Side Programming (Back-End)

This involves writing the code that runs on the server, processes user requests, interacts with a database, and sends back information to the front-end.

2.3.3 Databases: The Memory of Your Website

We haven’t mentioned this previously, but databases are just storage place that store and manage data for web applications. Popular choices are SQL-based (like MySQL) and NoSQL (like MongoDB). Usually, databases would be built by expert on database design, but if your project is small in scale, you can always make one yourself.

2.4 The Development Process: Start to Finish

2.4.1 Conceptualizing a Web Application

This involves understanding the needs and goals of the application, planning the features, and designing the user interface. It starts with an idea - and you will bring it to life.

2.4.2 Basic Steps in Building a Web Application

This includes setting up a development environment, coding the front-end and back-end, integrating (connceting) them, testing, and deploying the application.

2.4.3 The Collaboration Between Design and Development Teams

Effective web development often requires collaboration between designers, front-end developers, and back-end developers. Always make sure that all teams are well connected, as you would want everyone to work towards the same goal.

2.5 Learning Pathways in Full-Stack Development

2.5.1 Basic Coding Skills

Again, HTML, CSS, Javascipt, they are the keys to building Front-End of a website, and make sure you understand them well before you get started. For the Back-End, there are many choices, but for beginners, Python would be enough.

After you went through all the basics, remember it is not needed to create every file! There are many popular frameworks for both frontend and backend you can choose to work on, and they can greatly reduce the work you need to do for building a website.

2.5.2 Resources for Learning

Check this page for a list of learning resources you may need. For a starting point, I recommand learning React for the Front-End, and Django for the Back-End. They are not the only choice you have, but they can help you quickly undertstand how everything is done.

Add Other Branches of Software Engineering