Understanding Back-end Development
The Breakdown Series
Our Breakdown blog series explores each of our departments to give you a better understanding of all that we do at SiteCrafting and GearLab. Our marketing interns have been interviewing our team of experts and sharing insights on key aspects of our design and development process.
How We Use Back-end Development at SiteCrafting
Think of an iceberg, floating in the ocean. The top pokes out of the water, but the majority is unseen. This is how users view a website compared to what it consists of. The front end of the site is only the user-facing “tip” of the iceberg—but much more data storage and information lies beneath what the eye can see. Back-end development plays an enormous role in any interactive website. From online shopping to searching for information, almost everything web users do relies on back-end technology. We interviewed Senior Web Developer Scott Dunham and Web Application Developer Coby Tamayo about the field of back-end development to share what it takes to develop a website.
WHAT IS BACK-END DEVELOPMENT?
Back-end development is the practice of writing code that manages data in a way that allows dynamic interactions. People who do not have a strong background in technology might not consider the complexity of interactions that occur in the back end of a website. If you want a website that does anything besides display static content, back-end development is necessary. While users can only see the front end of a website through their browsers, the unseen back end is on a server. Scott explains that back-end development is “all about problem solving.”
WHAT ALL GOES INTO THE BACK END OF A WEBSITE?
Although the aspects of back-end development depend on the specific project, some key things that our developers consider include the following:
System architecture changes depending on each project, and it is a back-end developer’s job to find out what systems a website specifically needs. Let’s say you visit a website to purchase concert tickets. While you typically only interact with a single, unified interface for making the purchase (the front-end), there are probably several components of the website working together behind the scenes such as:
- A system to reserve one or more tickets at booking time
- A payment gateway that processes credit card information
- A shipping platform to send tickets to a specific address
- A notification system to send ticket information to the customer
A back-end developer’s job is to write code that coordinates interaction between all these systems and accomplishes this interaction within milliseconds.
How do developers write good code? In object-oriented design, developers map the concepts and code into real-world things. For example, a developer may write a ConcertTicket “class,” a grouping together of the behavior and aspects of real-world tickets. In this example, a ticket “knows” how much it costs. In dev-speak, you might say the ticket class has a “getPrice” method. A method is a way to get information from a ticket, or make a ticket do something. Other parts of the code can get the price of a ticket by “calling” getPrice. Good software design organizes code into these classes and methods in a way that maps intuitively to the real world.
Software performance is concerned with how long code takes to run. In web development, this often has to do with page load times. Imagine ordering a ticket and having to wait for an email with a receipt to be sent before a confirmation page loads. If the email system were backed up, this would result in poor performance.
Security is a fine balance between letting the user take the actions they need to take, without giving them too much power. In our concert ticket example, a user might go to example.com/ticket/1234 to print their ticket. If the site allowed the user to simply change the URL to example.com/ticket/1235 and print someone else's ticket, that would be poor security. It is important to write code that enforces rules about who can access what.
IN THE PROCESS
The process of back-end development takes big technical problems, breaks them down into smaller issues, and then solves each small issue in code.
Although “code” can refer to either the back or front end, the front-end code is executed by a browser while the back-end code runs on a server. Both development teams work together in a tight loop and send projects back and forth—especially on complex projects. One part of back-end development is investigating software bugs (errors in a computer program or system that cause it to produce an unintended result) and finding resolutions to them. The process of how to resolve bugs depends on the needs of the project, but is often carried out by:
- Reproducing the issue on a test version of the site, in as few steps as possible
- Editing the code with a possible solution
- Running through the test steps again
- Repeating as necessary
Fixing bugs is just one small part of programming. Back-end developers perform many other tasks such as integrating with external APIs and designing data models to ensure data integrity.
Reasoning with different levels of abstraction and coordinating between different systems can be very intricate and challenging. At the end of the day, the result is not only rewarding for developers but allows them to bring the website to life.
“I love the amount of learning that takes place. Because no two problems are the same, I’m able to learn new techniques with every project I work on,” explains Coby.
Want to learn more about back-end development? Check out these favorite resources from Scott and Coby:
Follow along with our blog series every other week to read more about our departments. Our upcoming Breakdown series topics are:
- Project management
- Quality assurance (QA)
In the meantime, connect with us on social media to keep up with our team, blog posts, projects, events, and more.
Behind the Build, Dev